From: charlez.leu@... Date: 2015-02-19T08:59:42+00:00 Subject: [ruby-core:68183] [Ruby trunk - Bug #10868] Object allocation within an extension during garbage collection terminates the Ruby process Issue #10868 has been updated by Charles Leu. For the benefit of those encountering this same (or similar) behavior: * This particular problem was observed with ffi-rzmq. It appears that ffi-rzmq code isn't fully thread aware, hence this issue. * The problem was elicited by creating a single socket, and performing I/O via the single socket from multiple threads. * It is OK to create a socket in one thread, and perform I/O with the socket within a single separate sibling thread. * It is OK to create a socket per thread, and have each thread perform I/O using its designated socket. ---------------------------------------- Bug #10868: Object allocation within an extension during garbage collection terminates the Ruby process https://bugs.ruby-lang.org/issues/10868#change-51556 * Author: Charles Leu * Status: Third Party's Issue * Priority: Normal * Assignee: * ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux], ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux], ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux] * Backport: ---------------------------------------- It appears that when a CFUNC makes an allocation when garbage collection is running within a different thread/context, it yields the error "[BUG] object allocation during garbage collection phase" and the Ruby process is subsequently terminated. Ruby versions 1.9.3, 2.1.5, and 2.2.0 all yield the same behavior (per the attached files). Note that similar behavior has been reported within issues 7750, 9090, and 1049. ---Files-------------------------------- ruby_2.1.5_bug.txt (28.9 KB) ruby_1.9.3_bug.txt (28.6 KB) ruby_2.2.0_bug.txt (29.3 KB) -- https://bugs.ruby-lang.org/