Skip to content

Reusing a compressor #70

Closed
Closed
@JonasIsensee

Description

@JonasIsensee

This was found here: JuliaIO/JLD2.jl#599

When using a ZstdFrameCompressor or a ZstdCompressor, you reproducably get a segfault when trying to reuse the same compressor instance:

I don't know if this can be made to just work, but I hope that this can at least be caught in time and throw an error instead.

using CodecZstd, TranscodingStreams

compressor = ZstdFrameCompressor()
x = rand(UInt8, 4*10^7);
TranscodingStreams.initialize(compressor)
ret1 = transcode(compressor, x);
TranscodingStreams.finalize(compressor)

# compress again using the same compressor
TranscodingStreams.initialize(compressor) # segfault happens here!
# ret2 = transcode(compressor, x);
# TranscodingStreams.finalize(compressor)
[1706176] signal (11.1): Segmentation fault
in expression starting at REPL[7]:1
ZSTD_CCtx_reset at /home/jisensee/.julia/artifacts/4c45bf9c8292490acd9463bbfbf168277d9720b6/lib/libzstd.so (unknown line)
ZSTD_initCStream at /home/jisensee/.julia/artifacts/4c45bf9c8292490acd9463bbfbf168277d9720b6/lib/libzstd.so (unknown line)
ZSTD_initCStream at /home/jisensee/.julia/packages/CodecZstd/KmRP9/src/LibZstd_clang.jl:277 [inlined]
initialize! at /home/jisensee/.julia/packages/CodecZstd/KmRP9/src/libzstd.jl:60 [inlined]
initialize at /home/jisensee/.julia/packages/CodecZstd/KmRP9/src/compression.jl:82

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions