From: Aman Gupta Date: 2011-01-06T08:40:44+09:00 Subject: [ruby-core:34141] [Backport87-Backport#4236][Open] zlib.c requires RB_GC_GUARD backport from 1.9 Backport #4236: zlib.c requires RB_GC_GUARD backport from 1.9 http://redmine.ruby-lang.org/issues/show/4236 Author: Aman Gupta Status: Open, Priority: Normal Category: ext This issue was fixed in 1.9 r28080 via this patch: http://redmine.ruby-lang.org/repositories/diff/ruby-19?rev=28080 But the issue also exists in 1.8 branch, so the same patch should be backported. To replicate:

unless File.exists?("test.gz")
  File.open("test","w"){|f| f.write "helloworld "*1024 }
  `gzip test`
end

require 'zlib'

class Zlib::GzipReader
  class << self
    alias new_orig new
    def new(*args)
     GC.stress=true
      new_orig(*args)
    ensure
     GC.stress=false
    end
  end
end

def parse_gzip(i=0)
  Zlib::GzipReader.new(File.open('test.gz','r'))
end

5.times do |i|
  parse_gzip
end
$ ruby simple.rb simple.rb:13:in `initialize': not in gzip format (Zlib::GzipFile::Error) from simple.rb:13:in `new_orig' from simple.rb:13:in `new' from simple.rb:21:in `parse_gzip' from simple.rb:25 from simple.rb:24:in `times' from simple.rb:24 ---------------------------------------- http://redmine.ruby-lang.org