Actions
Bug #10961
closedZlib corrupts data when receive signal
Bug #10961:
Zlib corrupts data when receive signal
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
2.0.0-p353 2.2.0
Backport:
Description
When receiving signal on main thread, Zlib::Deflate.deflate will be interrupted in zstream_run_func (zlib.c), thus producing unfinished output buffer.
Zlib::Deflate.deflate will return normally, without error, but the return value will be corrupted buffer and can't be decompressed.
Preferred fix: zstream_run() should check if err is Z_STREAM_END, if not, raise an error instead of return normally.
run zlib.rb to reproduce this problem:
ruby zlib.rb¶
37028
generating len=1000000000 string...
string length=1000000000
compressing...
^CINT (press Ctrl+C or send a signal to the pid)
zlib.rb:13:in deflate': data error (Zlib::DataError) from zlib.rb:13:in
test_string'
from zlib.rb:25:in block in <main>' from zlib.rb:25:in
each'
from zlib.rb:25:in `'
Files
Actions