[#34030] Hash#select and Hash#reject bug in 1.9.2? — Lin Jen-Shin <godfat@...>
(sorry if this is a duplicated post, i forgot to subscribe)
[#34033] The rights of ruby-core people and Myth of ruby-dev — "NARUSE, Yui" <naruse@...>
Some of you may don't know your rights.
On 04/01/11 at 06:55 +0900, NARUSE, Yui wrote:
Hi,
Hi,
On Tue, Jan 04, 2011 at 06:55:47AM +0900, NARUSE, Yui wrote:
On Tue, Jan 4, 2011 at 1:57 PM, Aaron Patterson
(2011/01/05 3:57), Aaron Patterson wrote:
On Wed, Jan 05, 2011 at 01:01:48PM +0900, Urabe Shyouhei wrote:
Hi,
On Wed, Jan 5, 2011 at 6:52 PM, Shota Fukumori (sora_h)
On Thu, Jan 6, 2011 at 4:37 PM, Charles Oliver Nutter
[#34034] Exception#to_s and non-String Messages — Run Paint Run Run <runrun@...>
I don't know when Redmine will be back up, so:
[#34035] Warn when File.expand_path Ignores its Second Argument? — Run Paint Run Run <runrun@...>
File.expand_path(filename, directory) resolves _filename_ relative to
[#34043] proposal: gem_prelude needs to die — Ryan Davis <ryand-ruby@...>
I think it is time for gem_prelude to die.
2011/1/4 Ryan Davis <ryand-ruby@zenspider.com>:
2011/1/5 Ryan Davis <ryand-ruby@zenspider.com>:
On Thu, Jan 6, 2011 at 1:13 AM, Ryan Davis <ryand-ruby@zenspider.com> wrote:
FYI. JRuby 1.6RC1 is going to be shipping with RubyGems 1.4.1 and
2011/1/10 Ryan Davis <ryand-ruby@zenspider.com>:
> I'd like to drop gem_prelude down to 'require "rubygems"'. If you want, we can profile this against normal and pathological gem setups first.
[#34062] Ruby 1.9* syscall() on 64 bit systems — Niklas Hofer <niklas@...>
Hi,
[#34091] Moving to Git? — Lucas Nussbaum <lucas@...>
Hi,
> Hi,
Hello,
Em 05-01-2011 13:15, U.Nakamura escreveu:
(2011/01/06 0:46), Rodrigo Rosenfeld Rosas wrote:
> > Well, I guess I can help listing some advantages. Using git:
On Wed, Jan 5, 2011 at 11:28, Jon <jon.forums@gmail.com> wrote:
Em 05-01-2011 17:16, mathew escreveu:
On Wed, Jan 5, 2011 at 13:23, Rodrigo Rosenfeld Rosas
On Thu, Jan 06, 2011 at 06:50:24AM +0900, mathew wrote:
On Wed, Jan 5, 2011 at 17:02, Czarek <cezary.baginski@gmail.com> wrote:
On 07/01/11 at 01:05 +0900, mathew wrote:
On Thu, Jan 6, 2011 at 10:36, Lucas Nussbaum <lucas@lucas-nussbaum.net> wrote:
On 07/01/11 at 08:07 +0900, mathew wrote:
On Thu, Jan 6, 2011 at 23:50, Lucas Nussbaum <lucas@lucas-nussbaum.net> wrote:
Dear all,
Hi,
On 08/01/11 at 05:13 +0900, Ryan Davis wrote:
Hi,
What kind of Redmine integration you are talking about? We use Redmine
Hi,
Hi,
On 06-01-2011 04:06, Yukihiro Matsumoto wrote:
On Wed, Jan 5, 2011 at 19:57, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
[#34124] [Ruby 1.9-Bug#4235][Open] svn keywords in code prevent correct building of ruby using git mirror — Stephen Bannasch <redmine@...>
Bug #4235: svn keywords in code prevent correct building of ruby using git mirror
[#34150] [Ruby 1.9-Bug#4237][Open] SSL_shutdown should be called until it returns 0 — Aaron Patterson <redmine@...>
Bug #4237: SSL_shutdown should be called until it returns 0
[#34171] [Ruby 1.8-Feature#4239][Open] Let's begin a talk for "1.8.8" -- How's needed for surviving 1.8? — Shota Fukumori <redmine@...>
Feature #4239: Let's begin a talk for "1.8.8" -- How's needed for surviving 1.8?
Issue #4239 has been updated by Zeno Davatz.
Issue #4239 has been updated by Zeno Davatz.
Issue #4239 has been updated by Zeno Davatz.
(2011/01/16 0:11), Zeno Davatz wrote:
On Sat, Jan 15, 2011 at 1:05 PM, NARUSE, Yui <naruse@airemix.jp> wrote:
(2011/01/17 1:49), Rick DeNatale wrote:
On Sun, Jan 16, 2011 at 12:19 PM, NARUSE, Yui <naruse@airemix.jp> wrote:
Issue #4239 has been updated by Zeno Davatz.
Issue #4239 has been updated by Zeno Davatz.
Hi,
[#34172] [Backport92-Backport#4240][Open] segment fault on ruby on rails project — 건하 박 <redmine@...>
Backport #4240: segment fault on ruby on rails project
[#34177] [Ruby 1.9-Bug#4241][Open] IMAPTest#test_imaps_verify_none does not stop — Kazuhiro NISHIYAMA <redmine@...>
Bug #4241: IMAPTest#test_imaps_verify_none does not stop
[#34179] Why is not git mirror mentioned in ruby downloads section? — Michal Suchanek <hramrach@...>
Hello,
On 2011-01-06 , at 07:08, Michal Suchanek wrote:
[#34214] [Ruby 1.9-Feature#4247][Open] New features for Array#sample, Array#choice — Yoji Ojima <redmine@...>
Feature #4247: New features for Array#sample, Array#choice
Hi,
On Fri, Jan 07, 2011 at 08:08:03PM +0900, Yusuke ENDOH wrote:
On 7 January 2011 18:14, Aaron Patterson <aaron@tenderlovemaking.com> wrote:
[#34244] [Ruby 1.9-Bug#4251][Open] Segmentation fault when using ruby-prof and Ruby 1.9.2 — Evan Chaney <redmine@...>
Bug #4251: Segmentation fault when using ruby-prof and Ruby 1.9.2
[#34267] [Ruby 1.9-Feature#4254][Open] Allow method transplanting — Jonas Pfenniger <redmine@...>
Feature #4254: Allow method transplanting
Wouldn't that be unnecessary if matz' trait proposal would be implemented?
2011/1/9 Haase, Konstantin <Konstantin.Haase@student.hpi.uni-potsdam.de>:
Hi,
Hi,
[#34270] Any plans for Rite and Ruby 2.0 ? — "Jonas Pfenniger (zimbatm)" <jonas@...>
Hi Matz,
[#34297] [Ruby 1.9-Bug#4255][Open] When on a case-insensitive filesystem, "loaded features" search in require should ignore case — Charles Nutter <redmine@...>
Bug #4255: When on a case-insensitive filesystem, "loaded features" search in require should ignore case
Issue #4255 has been updated by Nobuyoshi Nakada.
[#34318] ext/bigdecimal/lib/bigdecimal/util.rb — Aaron Patterson <aaron@...>
Hi Murata!
Hi,
Hi Aaron and Matz,
On Tue, Jan 11, 2011 at 01:23:47PM +0900, Kenta Murata wrote:
[#34354] [Ruby 1.9-Feature#4264][Open] General type coercion protocol for Ruby — Charles Nutter <redmine@...>
Feature #4264: General type coercion protocol for Ruby
On Tue, Jan 11, 2011 at 10:27 AM, Jim Weirich <jim.weirich@gmail.com> wrote:
On Jan 11, 2011, at 11:14 AM, Charles Oliver Nutter wrote:
Hi,
On Tue, Jan 11, 2011 at 7:18 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Issue #4264 has been updated by Charles Nutter.
On Tue, Jan 11, 2011 at 10:26, Charles Nutter <redmine@ruby-lang.org> wrote:
On 19-01-2011 08:05, mathew wrote:
Issue #4264 has been updated by Rodrigo Rosenfeld Rosas.
Both #as (Parslet, Sequel, MetaWhere, hacketyhack, Facets, Ruport, CouchPotato, ...) and #to (RSpec, Ramaze, ActiveSupport) are use in DSLs.
[#34355] [Ruby 1.9-Feature#4265][Open] Provide a core method Kernel#ruby for invoking a new Ruby instance — Charles Nutter <redmine@...>
Feature #4265: Provide a core method Kernel#ruby for invoking a new Ruby instance
> Feature #4265: Provide a core method Kernel#ruby for invoking a new Ruby instance
On Fri, Jan 14, 2011 at 9:07 AM, Roger Pack <rogerdpack2@gmail.com> wrote:
[#34416] ext/openssl development repository — Hiroshi Nakamura <nakahiro@...>
Hi, committers,
[#34483] Windows sockets and CRT fds — ghazel@...
Hi,
Hello,
On Thu, Jan 13, 2011 at 8:03 PM, U.Nakamura <usa@garbagecollect.jp> wrote:
Hello,
[#34504] [Ruby 1.9-Bug#4282][Open] Range#map inconsistency with blocks like {...} and do...end — Andrei Kulakov <redmine@...>
Bug #4282: Range#map inconsistency with blocks like {...} and do...end
[#34534] [Ruby 1.9-Bug#4283][Open] Timeout.timeout may cause application exit unintetionally — Motohiro KOSAKI <redmine@...>
Bug #4283: Timeout.timeout may cause application exit unintetionally
Issue #4283 has been updated by Charles Nutter.
Hi,
On Tue, Jan 18, 2011 at 10:00 PM, Yusuke ENDOH <mame@tsg.ne.jp> wrote:
Hi,
[#34537] [Ruby 1.9-Bug#4285][Open] Ruby don't have asynchrounous exception safe syntax and It should have. — Motohiro KOSAKI <redmine@...>
Bug #4285: Ruby don't have asynchrounous exception safe syntax and It should have.
Issue #4285 has been updated by Motohiro KOSAKI.
Hi,
Issue #4285 has been updated by Charles Nutter.
[#34550] [Ruby 1.9-Feature#4288][Open] Allow invoking arbitrary method names with foo."something" syntax — Charles Nutter <redmine@...>
Feature #4288: Allow invoking arbitrary method names with foo."something" syntax
On Wed, Jan 19, 2011 at 2:58 PM, Gary Wright <gwtmp01@mac.com> wrote:
On Wed, Jan 19, 2011 at 6:03 PM, Gary Wright <gwtmp01@mac.com> wrote:
> It does, but my concern with it is that (in the same way as
On Tue, Jan 18, 2011 at 12:51 AM, Charles Nutter <redmine@ruby-lang.org> wrote:
[#34553] Feature request - Low level bitwise operations on char arrays (or class String) — Martin Asser Hansen <mail@...>
Hello ruby-core,
Hi,
I think that the special cases of Hamming and Levensthein distances are,
What about String#bytes returning a new built-in ByteArray type
[#34558] [Ruby 1.9-Bug#4291][Open] rb_time_new with negative values (pre-epoch dates) on Windows — Kyle Banker <redmine@...>
Bug #4291: rb_time_new with negative values (pre-epoch dates) on Windows
[#34568] [PATCH] Add thread timing to Struct::Tms — Evan Phoenix <evan@...>
Because 1.9 now uses real threads, being able to find out how much time the current thread is using is quite useful, especially for benchmarking.
[#34577] Importing rubygems 1.5.0 (release candidate) into trunk. — Ryan Davis <ryand-ruby@...>
I'm going to be committing rubygems 1.5.0 into trunk in a bit.
Hi,
On Tue, Jan 18, 2011 at 11:22 PM, NARUSE, Yui <naruse@airemix.jp> wrote:
Hello,
[#34593] Autoload treatment of absolute paths in $LOAD_PATH containing . or .. — David Yip <yipdw@...>
Hello all,
[#34610] [Ruby 1.9-Bug#4294][Open] IO.popen ['"ping"', 'localhost -n 3'] fails — red stun <redmine@...>
Bug #4294: IO.popen ['"ping"', 'localhost -n 3'] fails
[#34632] Ruby operator equivalent to Groovy's "?." — Rodrigo Rosenfeld Rosas <rr.rosas@...>
One of the few things I like in Groovy that Ruby doesn't support is
I have definitely had cases where such a feature would have been very
On Thu, Jan 20, 2011 at 1:27 AM, Rodrigo Rosenfeld Rosas
Em 20-01-2011 05:35, Giuseppe Bilotta escreveu:
On Wed, Jan 19, 2011 at 6:27 PM, Rodrigo Rosenfeld Rosas
On Thu, Jan 20, 2011 at 7:01 PM, Jim Weirich <jim.weirich@gmail.com> wrote:
[#34634] Returning from the callee — Rodrigo Rosenfeld Rosas <rr.rosas@...>
Sometimes it is useful to be able to return from the callee method.
2011/1/20 Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>:
Em 20-01-2011 07:59, Jonas Pfenniger (zimbatm) escreveu:
On Thu, Jan 20, 2011 at 19:27, Rodrigo Rosenfeld Rosas
Em 20-01-2011 18:51, Nikolai Weibull escreveu:
[#34648] [Ruby 1.9-Bug#4298][Open] Duration of calling String#[] with the same index is strangely related to string length. — Radosław Bułat <redmine@...>
Bug #4298: Duration of calling String#[] with the same index is strangely related to string length.
[#34659] MRI file architecture doc — "Jonas Pfenniger (zimbatm)" <jonas@...>
Hi ruby folks,
[#34679] [Ruby 1.9-Bug#4300][Open] Merge keys not working as expected in psych yaml parser — Matthew Conway <redmine@...>
Bug #4300: Merge keys not working as expected in psych yaml parser
[#34690] [Ruby 1.9-Bug#4301][Open] Off-by-one line number in Psych parse error — Charles Nutter <redmine@...>
Bug #4301: Off-by-one line number in Psych parse error
[#34739] Redmine spam — "Jonas Pfenniger (zimbatm)" <jonas@...>
I really hate spammers, is it something we can do to prevent them
2011/1/21 Jonas Pfenniger (zimbatm) <jonas@pfenniger.name>:
[#34752] Is evaluation order of arguments specified? — Nikolai Weibull <now@...>
Is the evaluation order of arguments specified? I couldn’t find
[#34832] [Ruby 1.9-Bug#4314][Open] spwn cause Segmantation Fault if take a long string. — Motohiro KOSAKI <redmine@...>
Bug #4314: spwn cause Segmantation Fault if take a long string.
[#34861] [Ruby 1.9-Feature#4326][Open] Fiber should respond to call() and [] — Aaron Patterson <redmine@...>
Feature #4326: Fiber should respond to call() and []
Issue #4326 has been updated by Charles Nutter.
On Sat, Jan 29, 2011 at 02:58:46AM +0900, Charles Nutter wrote:
On Fri, Jan 28, 2011 at 5:29 PM, Aaron Patterson
On Sat, Jan 29, 2011 at 09:45:30AM +0900, Charles Oliver Nutter wrote:
Hi,
[#34869] make ruby support line continuations ? — Marc Chantreux <khatar@...>
hello,
You can escape line endings with backslash:
> I love it so much i tried it in ruby. trying to rewrite:
hello,
Dne 27.1.2011 7:15, Marc Chantreux napsal(a):
On Thu, Jan 27, 2011 at 04:16:50PM +0900, V咜 Ondruch wrote:
[#34888] [Ruby 1.9-Feature#4328][Open] export rb_thread_call_with_gvl() — Eric Wong <redmine@...>
Feature #4328: export rb_thread_call_with_gvl()
Hi,
SASADA Koichi <ko1@atdot.net> wrote:
[#34911] The ruby-lang.org downloads page should include RVM for OS X — Andrew Vos <andrew.vos@...>
(I sent this before I subscribed and I'm not sure if it bounced. Sorry if
RVM is not official, and makes problem more difficult. (magically
What do you mean by "official"? Also, what does it make more difficult? Do
return mail is gmail thing. I have same problem.
On Jan 27, 2011, at 5:54 PM, Shota Fukumori (sora_h) wrote:
Hi,
On Jan 27, 2011, at 7:49 PM, Shota Fukumori (sora_h) wrote:
On Fri Jan 28 2011 @ 10:57, James Edward Gray II wrote:
On Jan 27, 2011, at 8:04 PM, Peter Aronoff wrote:
[#34938] Setting libpath for AIX — Perry Smith <pedzsan@...>
Hi,
[#34959] [Ruby 1.9-Bug#4340][Open] Encoding of result string for String#gsub is not consistent — Eric Hodel <redmine@...>
Bug #4340: Encoding of result string for String#gsub is not consistent
Issue #4340 has been updated by Yui NARUSE.
Can I ask why regexps are not affected by
[#34970] [Ruby 1.9-Bug#4343][Open] Dir.glob does match files without extension — Vit Ondruch <redmine@...>
Bug #4343: Dir.glob does match files without extension
Issue #4343 has been updated by Nobuyoshi Nakada.
On 01/29/2011 10:19 AM, Nobuyoshi Nakada wrote:
Dne 29.1.2011 17:27, Jeremy Bopp napsal(a):
On 01/29/2011 10:33 AM, Vテュt Ondruch wrote:
Dne 29.1.2011 17:53, Jeremy Bopp napsal(a):
On 01/29/2011 11:09 AM, V鱈t Ondruch wrote:
On Sat, Jan 29, 2011 at 11:49, Jeremy Bopp <jeremy@bopp.net> wrote:
On 01/30/2011 06:30 PM, mathew wrote:
On Sun, Jan 30, 2011 at 23:07, Jeremy Bopp <jeremy@bopp.net> wrote:
On 02/03/2011 09:38 PM, mathew wrote:
On Thu, Feb 3, 2011 at 22:29, Jeremy Bopp <jeremy@bopp.net> wrote:
[#34991] Understanding realpath_rec behavior — Luis Lavena <luislavena@...>
Hello,
On Sun, Jan 30, 2011 at 03:01, Luis Lavena <luislavena@gmail.com> wrote:
[#35001] file_expand_path performing unneeded IO operations on native Windows — Luis Lavena <luislavena@...>
Hello,
Hello,
On Sun, Jan 30, 2011 at 9:39 PM, U.Nakamura <usa@garbagecollect.jp> wrote:
[#35010] Question: Windows versions - supported and deprecated platforms. — Luis Lavena <luislavena@...>
Hello,
Hello,
[ruby-core:34480] [Ruby 1.8-Bug#4277][Open] Compiler optimizations may lead to premature GC in C code
Bug #4277: Compiler optimizations may lead to premature GC in C code
http://redmine.ruby-lang.org/issues/show/4277
Author: Quet Zal
Status: Open, Priority: Normal
ruby -v: ruby 1.8.7 (2010-12-23 patchlevel 330) [x86_64-linux]
It is several months as I had problems with GzipReader that comes with ruby. When processing large amount of files (300k+) there were always some files that threw exceptions, but they looked perfectly good and unpacked with gunzip just fine.
Today ruby just segfaulted and that made me to do some investigations....
Let's start with problem:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6f3f1fb in memcpy () from /lib/libc.so.6
(gdb) bt
#0 0x00007ffff6f3f1fb in memcpy () from /lib/libc.so.6
#1 0x00007ffff7b7a131 in str_buf_cat (str=140737317158040, ptr=0xee7430 <Address 0xee7430 out of bounds>, len=2048)
at /usr/include/bits/string3.h:52
#2 0x00007ffff59a65bc in zstream_append_input (z=0x707dc0, src=0xee7430 <Address 0xee7430 out of bounds>, len=<value optimized out>) at zlib.c:604
#3 0x00007ffff59a6600 in gzfile_read_raw_ensure (gz=0x707dc0, size=10) at zlib.c:1879
#4 0x00007ffff59a7bb6 in gzfile_read_header (obj=140737317158120, io=140737317158160) at zlib.c:2004
#5 rb_gzreader_initialize (obj=140737317158120, io=140737317158160) at zlib.c:2941
#6 0x00007ffff7b1a21e in rb_call0 (klass=140737316755120, recv=140737317158120, id=2961, oid=2961, argc=1, argv=0x7fffffffb360,
body=0x7ffff5c58aa8, flags=<value optimized out>) at eval.c:5928
#7 0x00007ffff7b1a3d6 in rb_call (klass=140737316755120, recv=140737317158120, mid=2961, argc=1, argv=0x7fffffffb360, scope=1, self=6)
at eval.c:6176
#8 0x00007ffff7b1ad4b in rb_funcall2 (recv=<value optimized out>, mid=<value optimized out>, argc=<value optimized out>, argv=<value optimized out>)
at eval.c:6312
#9 0x00007ffff7b1ade4 in rb_obj_call_init (obj=140737317158120, argc=1, argv=0x7fffffffb360) at eval.c:7825
#10 0x00007ffff7b472d2 in rb_class_new_instance (argc=1, argv=0x7fffffffb360, klass=<value optimized out>) at object.c:1644
#11 0x00007ffff59a9436 in rb_gzfile_s_wrap (argc=7294720, argv=0xee7430, klass=2048) at zlib.c:2347
#12 0x00007ffff59a94d6 in gzfile_s_open (argc=1, argv=0x7fffffffb360, klass=140737316755120, mode=0x7ffff59aa306 "rb") at zlib.c:2377
#13 0x00007ffff7b1a21e in rb_call0 (klass=140737316755080, recv=140737316755120, id=7681, oid=7681, argc=1, argv=0x7fffffffb360,
body=0x7ffff5c58b48, flags=<value optimized out>) at eval.c:5928
#14 0x00007ffff7b1a3d6 in rb_call (klass=140737316755080, recv=140737316755120, mid=7681, argc=1, argv=0x7fffffffb360, scope=0, self=140737354023600)
at eval.c:6176
#15 0x00007ffff7b145e0 in rb_eval (self=140737354023600, n=<value optimized out>) at eval.c:3506
#16 0x00007ffff7b17c0c in rb_eval (self=140737354023600, n=<value optimized out>) at eval.c:3236
#17 0x00007ffff7b175e1 in rb_eval (self=140737354023600, n=<value optimized out>) at eval.c:3322
#18 0x00007ffff7b1a130 in rb_call0 (klass=140737354033760, recv=140737354023600, id=10921, oid=10921, argc=0, argv=0x7fffffffc130,
body=0x7ffff7fc1d50, flags=<value optimized out>) at eval.c:6079
#19 0x00007ffff7b1a3d6 in rb_call (klass=140737354033760, recv=140737354023600, mid=10921, argc=3, argv=0x7fffffffc130, scope=1,
self=140737354023600) at eval.c:6176
#20 0x00007ffff7b1470e in rb_eval (self=140737354023600, n=<value optimized out>) at eval.c:3521
#21 0x00007ffff7b159e8 in rb_eval (self=140737354023600, n=<value optimized out>) at eval.c:3701
#22 0x00007ffff7b1864c in rb_yield_0 (val=140737317162800, self=140737354023600, klass=0, flags=<value optimized out>, avalue=0) at eval.c:5095
#23 0x00007ffff6892a78 in each_hash (argc=0, argv=0x0, obj=140737316750640) at mysql.c:1174
#24 0x00007ffff7b1a21e in rb_call0 (klass=140737353547960, recv=140737316750640, id=11089, oid=11089, argc=0, argv=0x0, body=0x7ffff7f6e0d8,
flags=<value optimized out>) at eval.c:5928
#25 0x00007ffff7b1a3d6 in rb_call (klass=140737353547960, recv=140737316750640, mid=11089, argc=0, argv=0x0, scope=0, self=140737354023600)
at eval.c:6176
#26 0x00007ffff7b145e0 in rb_eval (self=140737354023600, n=<value optimized out>) at eval.c:3506
#27 0x00007ffff7b17c0c in rb_eval (self=140737354023600, n=<value optimized out>) at eval.c:3236
#28 0x00007ffff7b26dc5 in ruby_exec_internal () at eval.c:1654
#29 0x00007ffff7b26e05 in ruby_exec () at eval.c:1674
#30 0x00007ffff7b26e30 in ruby_run () at eval.c:1684
#31 0x0000000000400943 in main (argc=2, argv=0x7fffffffd7d8, envp=<value optimized out>) at main.c:48
(gdb)
(gdb) frame 3
#3 0x00007ffff59a6600 in gzfile_read_raw_ensure (gz=0x707dc0, size=10) at zlib.c:1879
1879 zstream_append_input2(&gz->z, str);
(gdb) list
1874 VALUE str;
1875
1876 while (NIL_P(gz->z.input) || RSTRING(gz->z.input)->len < size) {
1877 str = gzfile_read_raw(gz);
1878 if (NIL_P(str)) return Qfalse;
1879 zstream_append_input2(&gz->z, str);
1880 }
1881 return Qtrue;
1882 }
1883
(gdb)
(gdb) frame 2
#2 0x00007ffff59a65bc in zstream_append_input (z=0x707dc0, src=0xee7430 <Address 0xee7430 out of bounds>, len=<value optimized out>) at zlib.c:604
604 rb_str_buf_cat(z->input, src, len);
(gdb) list
599 {
600 if (len <= 0) return;
601
602 if (NIL_P(z->input)) {
603 z->input = rb_str_buf_new(len);
604 rb_str_buf_cat(z->input, src, len);
605 RBASIC(z->input)->klass = 0;
606 }
607 else {
608 rb_str_buf_cat(z->input, src, len);
(gdb)
What happens here is that str being passed to zstream_append_input, but is destroyed on its way to rb_str_buf_cat. It happens during GC that is triggered by rb_str_buf_new.
Ruby's GC scans memory (and maybe also checks registers?) for values that look like VALUEs (oh, god). And it can't seem to find one in this case. Let's see why...
text:0000000000003697 mov rdi, rbx
.text:000000000000369A call gzfile_read_raw
.text:000000000000369F cmp rax, 4
.text:00000000000036A3 jnz short loc_36A9
.text:00000000000036A5 mov al, 0
.text:00000000000036A7 jmp short loc_36CE
.text:00000000000036A9 ; ---------------------------------------------------------------------------
.text:00000000000036A9
.text:00000000000036A9 loc_36A9: ; CODE XREF: gzfile_read_raw_ensure+1Bj
.text:00000000000036A9 mov rdx, [rax+10h]
.text:00000000000036AD mov rsi, [rax+18h]
.text:00000000000036B1 mov rdi, r12
.text:00000000000036B4 call zstream_append_input
VALUE is in rax, pointer and length get extracted to rdx and rsi, then rax is most likely overwritten as its 'scrap' register.
So when rb_str_buf_new is called (which in turn calls ruby_xmalloc, which in turn calls garbage_collect) original VALUE is nowhere to be found. Compiler was clever enough (sadly, for us) to optimize all memory stores.
We can force compiler to store that value in memory by declaring str in gzfile_read_raw_ensure as volatile. This indeed fixes the problem.
This bug report goes without code to reproduce, because I'm not allowed to send our application and isolating proof-of-concept code is not too easy, but it must be clear what's going on and how to fix it.
I really hope that someone thinks of a way to check rest of ruby extensions' code for such problems.
Thanks for reading this wall of text ;)
----------------------------------------
http://redmine.ruby-lang.org