[#44036] [ruby-trunk - Feature #6242][Open] Ruby should support lists — "shugo (Shugo Maeda)" <redmine@...>

20 messages 2012/04/01

[#44084] [ruby-trunk - Bug #6246][Open] 1.9.3-p125 intermittent segfault — "jshow (Jodi Showers)" <jodi@...>

22 messages 2012/04/02

[#44156] [ruby-trunk - Feature #6265][Open] Remove 'useless' 'concatenation' syntax — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

45 messages 2012/04/06

[#44163] [ruby-trunk - Bug #6266][Open] encoding related exception with recent integrated psych — "jonforums (Jon Forums)" <redmine@...>

10 messages 2012/04/06

[#44303] [ruby-trunk - Feature #6284][Open] Add composition for procs — "pabloh (Pablo Herrero)" <pablodherrero@...>

57 messages 2012/04/12

[#44349] [ruby-trunk - Feature #6293][Open] new queue / blocking queues — "tenderlovemaking (Aaron Patterson)" <aaron@...>

10 messages 2012/04/13

[#44402] [ruby-trunk - Feature #6308][Open] Eliminate delegation from WeakRef — "headius (Charles Nutter)" <headius@...>

20 messages 2012/04/17

[#44403] [ruby-trunk - Feature #6309][Open] Add a reference queue for weak references — "headius (Charles Nutter)" <headius@...>

15 messages 2012/04/17

[#44533] [ruby-trunk - Bug #6341][Open] SIGSEGV: Thread.new { fork { GC.start } }.join — "rudolf (r stu3)" <redmine@...>

24 messages 2012/04/22

[#44630] [ruby-trunk - Feature #6361][Open] Bitwise string operations — "MartinBosslet (Martin Bosslet)" <Martin.Bosslet@...>

31 messages 2012/04/26

[#44648] [ruby-trunk - Feature #6367][Open] #same? for Enumerable — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>

16 messages 2012/04/26

[#44704] [ruby-trunk - Feature #6373][Open] public #self — "trans (Thomas Sawyer)" <transfire@...>

61 messages 2012/04/27

[#44748] [ruby-trunk - Feature #6376][Open] Feature lookup and checking if feature is loaded — "trans (Thomas Sawyer)" <transfire@...>

13 messages 2012/04/28

[ruby-core:44574] [ruby-trunk - Bug #6341] SIGSEGV: Thread.new { fork { GC.start } }.join

From: "naruse (Yui NARUSE)" <naruse@...>
Date: 2012-04-24 03:32:10 UTC
List: ruby-core #44574
Issue #6341 has been updated by naruse (Yui NARUSE).


I tried the code with NetBSD 5.1_STABLE (GENERIC) i386 Mon Oct  3 14:22:23 JST 2011 and it works.
So NetBSD recently broke something around pthread.

As far as I know, Ruby 1.9 on NetBSD 4.0 can't fork because pthread can't mix with fork as mame and kosaki said.
But NetBSD 5.0 or later seems to try to work them.
(I reported such problem as kern/42772)

So this should be handled as Third Party's Issue, and report to NetBSD.
NetBSD may fix if they treated this as a bug.

mame (Yusuke Endoh) wrote:
>  2012/4/24, kosaki (Motohiro KOSAKI) <kosaki.motohiro@gmail.com>:
>  > I think this is a kind of documentation issue. If you use C, you can't use
>  > both thread and fork. It's obvious.
>  > And almost people think ruby naturally has the same limitation because ruby
>  > is written by C. But rudolf implicitly
>  > pointed out some people don't think so.
>  
>  No, this is not documentation issue.
>  The easy code *actually* causes SEGV on the platform, doesn't it?
>  I'm against remaining such a significant problem and adding ad-hoc
>  guards to the tests.

Ruby shouldn't cause SEGV, but

>  I suggest to make Kernel#fork raise a NotImplementedError on NetBSD
>  5.0+.
>  Fortunately, the tests already have a guard for NotImplementedError
>  because there is a supported platform that does not support
>  Kernel#fork (you know, windows).
>  Even on the platform, SEGV is not allowed, in principle.
>  
>  Note, my suggestion is based on my uncertain guess about NetBSD 5.0+.
>  I'm not even a user of NetBSD.  I think anyone should confirm if my
>  guess is correct.
>  Kosaki-san, if you seriously want to support NetBSD, I'd like you to
>  be a platform maintainer for NetBSD.

as I said above, it works with NetBSD 5.1.
So this is a bug added after 5.1.
----------------------------------------
Bug #6341: SIGSEGV: Thread.new { fork { GC.start } }.join
https://bugs.ruby-lang.org/issues/6341#change-26137

Author: rudolf (r stu3)
Status: Feedback
Priority: Low
Assignee: 
Category: core
Target version: 
ruby -v: ruby 1.9.3p196 (2012-04-21) [x86_64-netbsd6.0.]


When running ruby (ruby-lang.org) test suite, I am able to provoke a segfault using a test from bootstraptest/test_thread.rb:
begin
  Thread.new { fork { GC.start } }.join
  pid, status = Process.wait2
  $result = status.success? ? :ok : :ng
rescue NotImplementedError
  $result = :ok
end

It is easy to provoke the problem with this command launched in shell (1-20 times until the problem shows):
$ ruby -e "Thread.new { fork { GC.start } }.join"

Environment:
- NetBSD-6.0_BETA amd64, from 2012/04/21
- ruby_1_9_3 branch, revision 35416 (I've also tried trunk and it has similar problem)
- 8 GB RAM, a lot of free memory, dual-core CPU
- gcc version 4.5.3 (NetBSD nb2 20110806)

Backtrace and "bt full" is available in the attached gdb_session.txt file.


-- 
http://bugs.ruby-lang.org/

In This Thread