zlib
zlib copied to clipboard
Zlib.gzip sometimes errors out with Zlib::BufError if process has been forked
Ref: opal/opal#2463
The issue can't be reproduced reliably, the most reliable way is with the following code (you may need to launch it a couple of times) WARNING: it forks a lot of processes:
[user@localhost opal]# ruby _testzlib.rb
_testzlib.rb:5:in `gzip': buffer error (Zlib::BufError)
from _testzlib.rb:5:in `<main>'
[user@localhost opal]# _testzlib.rb:5:in `gzip': buffer error (Zlib::BufError)
from _testzlib.rb:5:in `<main>'
[user@localhost opal]#
[user@localhost opal]# cat _testzlib.rb
require 'zlib'
10.times { fork }
Zlib.gzip("sdfasfasdfasdfasdasdfadfasdf" * 10000)
[user@localhost opal]#
The issue has been seen on opal's CI since Ruby 2.6 until 3.1.
We’ve been getting this error fairly regularly. At first I thought it could be due to the thread wake-up issue, but after shipping #74 we still get the BufError.