David Li created ARROW-11937: -------------------------------- Summary: [C++] GZip codec hangs if flushed twice Key: ARROW-11937 URL: https://issues.apache.org/jira/browse/ARROW-11937 Project: Apache Arrow Issue Type: Bug Components: C++ Affects Versions: 3.0.0 Reporter: David Li Assignee: David Li Fix For: 4.0.0
{code:java} // "If deflate returns with avail_out == 0, this function must be called // again with the same value of the flush parameter and more output space // (updated avail_out), until the flush is complete (deflate returns // with non-zero avail_out)." return FlushResult{bytes_written, (bytes_written == 0)}; {code} But contrary to the comment, we're checking bytes_written. So if we flush twice, the second time, we won't write any bytes, but we'll erroneously interpret that as zlib asking for a larger buffer, rather than zlib telling us there's no data to decompress. Then we'll enter a loop where we keep doubling the buffer size forever, hanging the program. -- This message was sent by Atlassian Jira (v8.3.4#803005)