Issue #6341 has been updated by mame (Yusuke Endoh).


rudolf (r stu3) wrote:
> Thanks for the comment. I am sorry, but I don't understand the sentence "NetBSD is not supported". I can see NetBSD-related statements in configure.in, so that means, that the build infrastructure has support for NetBSD (and indeed, it builds on NetBSD).

An early NetBSD was somewhat supported.
IIRC, the strong constraint I said has been employed since NetBSD 5.0+.


> Can you please explain, what you mean with that?

See below.

https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatforms


> For the problem at hand: if I understand correctly, the mentioned test (from bootstraptest/test_thread.rb) should not be run under POSIX systems?

Strictly speaking, yes, I think.
But the feature works and is actually useful in many "supported" platforms.
So we won't remove the test.


> I have found some related notes (https://www.opengroup.org/austin/docs/austin_446.txt) about posix_spawn() supposedly being async-signal-safe. Maybe Kernel#fork should use posix_spawn() on systems which implement this function?

posix_spawn does not substitute for fork.  It is almost fork+exec.
IOW, we cannot use posix_spawn to implement Kernel#fork.

FYI, we have Kernel#spawn already.

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Bug #6341: SIGSEGV: Thread.new { fork { GC.start } }.join
https://bugs.ruby-lang.org/issues/6341#change-26121

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/