Issue #8860 has been updated by Naohisa Goto.

Status changed from Feedback to Closed

Closed because of no feedback, and because 1.9.3 is EOL.

Recently, some problems about fork and exec on Solaris have been fixed.
See [Bug #11265], [Bug #11336], and [Bug #11353], though these may not be related with this issue.


----------------------------------------
Bug #8860: 64-bit x86 ruby 1.9.3-p448 on Solaris core dumps on bug4950 test case
https://bugs.ruby-lang.org/issues/8860#change-55547

* Author: April Chin
* Status: Closed
* Priority: Normal
* Assignee: Naohisa Goto
* ruby -v: ruby 1.9.3p448 (2013-06-27 revision 41675) [i386-solaris2.12]
* Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN
----------------------------------------
64-bit ruby 1.9.3-p448 on x86 in Solaris, compiled with the Studio 12.1 compiler,
core dumps against the test case for bug 4950 in bootstraptest/test_fork.rb.
This problem sounds similar to issue 6334, which was rejected due
to lack of information.
The core dump does not occur with 64-bit ruby 1.9.3 on sparc.

configure options used:
--prefix=/usr/ruby/1.9 --mandir=/usr/ruby/1.9/share/man --bindir=/usr/ruby/1.9/bin --libdir=/usr/ruby/1.9/lib --sbindir=/usr/ruby/1.9/sbin  --enable-shared --enable-rpath --enable-install-doc --disable-option-checking --with-openssl 

CFLAGS="-m64 -xO2 -xchip=generic -Ui386 -U__i386 -D__amd64 -xregs=no%frameptr    -mt -DFFI_NO_RAW_API"


$ cat bug4950
a = []
trap(:INT) { a.push(1) }
trap(:TERM) { a.push(2) }

pid = $$
fork do
sleep 0.5
 puts "send start"
 Process.kill(:INT, pid)
 Process.kill(:TERM, pid)
 puts "send end"
end

puts "sleep start"
sleep 3
puts "sleep end"
p a

$ ruby bug4950
sleep start
send start
send end
Memory fault(coredump)
$ pstack core
core 'core' of 24964:   ruby bug4950
------------  lwp# 1 / thread# 1  ---------------
 ffff80ffbf5a6797 __lwp_park () + 17
 ffff80ffbf5a0062 cond_wait_queue () + 62
 ffff80ffbf5a04a0 cond_wait_common () + 1dc
 ffff80ffbf5a06e5 __cond_timedwait () + 5d
 ffff80ffbf5a0779 cond_timedwait () + 29
 ffff80ffbf5a07ad pthread_cond_timedwait () + 9
 ffff80ffb8799564 native_cond_timedwait () + 24
 ffff80ffb8799b5c native_sleep () + d8
 ffff80ffb879b26d sleep_timeval () + 7d
 ffff80ffb879b3ff rb_thread_wait_for () + 27
 ffff80ffb8712162 rb_f_sleep () + 4a
 ffff80ffb8789eb4 vm_call_cfunc () + c0
 ffff80ffb878a562 vm_call_method () + 2ae
 ffff80ffb878d57b vm_exec_core () + 1403
 ffff80ffb8796e7b vm_exec () + 5c7
 ffff80ffb8796f93 rb_iseq_eval_main () + 2b
 ffff80ffb86b3917 ruby_exec_internal () + 87
 ffff80ffb86b39f6 ruby_exec_node () + 1e
 ffff80ffb86b39bc ruby_run_node () + 24
 0000000000400ec8 main () + 4c
 0000000000400d1c ???????? ()
------------  lwp# 3 / thread# 3  ---------------
 ffff80ffbf7b189f lookup_sym () + 3b
 ffff80ffbf7cb9db elf_bndr () + 11b
 ffff80ffbf7ad073 elf_rtbndr () + 83
 ffff80ffbf7ee030 ???????? ()
 ffff80ffbf5a6876 __sighndlr () + 6
 ffff80ffbf599bba call_user_handler () + 2ce
 ffff80ffbf59a063 sigacthandler (f, ffff80ffbf76b6c8, ffff80ffbf76b360) + db
 --- called from signal handler with signal 15 (SIGTERM) ---
 ffff80ffbf5b026b _syscall6 () + 1b
 ffff80ffbf599b01 call_user_handler () + 215
 ffff80ffbf59a063 sigacthandler (2, ffff80ffbf76bc98, ffff80ffbf76b930) + db
 --- called from signal handler with signal 2 (SIGINT) ---
 ffff80ffbf5af64a __pollsys () + a
 ffff80ffbf4fc6c5 pselect () + 181
 ffff80ffbf4fcb44 select () + 68
 ffff80ffb8799f57 thread_timer () + b3
 ffff80ffbf5a64a5 _thrp_setup () + a5
 ffff80ffbf5a6750 _lwp_start ()




---Files--------------------------------
core.part1 (3 MB)
core.part2 (2.96 MB)
test_fork_modified.rb (267 Bytes)


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