Issue #4367 has been updated by bowen113 (bowen wenqi). kosaki (Motohiro KOSAKI) wrote: > =begin > This issue was solved with changeset r30781. > Andrew, thank you for reporting this issue. > Your contribution to Ruby is greatly appreciated. > May Ruby be with you. > > ---- > * vm_core.h (GetThreadPtr): use TypedData_Get_Struct() instead > CoreDataFromValue() because we need type check. Otherwise, > type mismatch can cause segmentation fault crash. > [ruby-core:35086] [Ruby 1.9-Bug#4367] > > * vm.c (thread_data_type): remove static. http://www.hublot-replica.biz http://www.hublot-replica.biz/aero-bang_hublot-watches.html http://www.hublot-replica.biz/big-bang_hublot-watches.html > =end ---------------------------------------- Backport #4367: Thread.kill segfaults when the object to be killed isn't a thread https://bugs.ruby-lang.org/issues/4367#change-31457 Author: agrimm (Andrew Grimm) Status: Closed Priority: Normal Assignee: yugui (Yuki Sonoda) Category: core Target version: =begin If something other than a thread is supplied to Thread.kill, a segfault occurs. For example, Thread.kill(nil) causes a segfault: Andrew-Grimms-MacBook-Pro:~ agrimm$ ruby Thread.kill(nil) -:1: [BUG] Segmentation fault ruby 1.9.3dev (2011-01-29 trunk 30720) [x86_64-darwin10.4.0] -- Control frame information ----------------------------------------------- c:0004 p:---- s:0010 b:0010 l:000009 d:000009 CFUNC :kill c:0003 p:0016 s:0006 b:0006 l:002358 d:000798 EVAL -:1 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:002358 d:002358 TOP -- Ruby level backtrace information ---------------------------------------- -:1:in `<main>' -:1:in `kill' -- See Crash Report log file under ~/Library/Logs/CrashReporter or --------- -- /Library/Logs/CrashReporter, for the more detail of --------------------- -- C level backtrace information ------------------------------------------- -- Other runtime information ----------------------------------------------- * Loaded script: - * Loaded features: 0 enumerator.so 1 /Users/agrimm/.rvm/rubies/ruby-head/lib/ruby/1.9.1/x86_64-darwin10.4.0/enc/encdb.bundle 2 /Users/agrimm/.rvm/rubies/ruby-head/lib/ruby/1.9.1/x86_64-darwin10.4.0/enc/trans/transdb.bundle 3 /Users/agrimm/.rvm/rubies/ruby-head/lib/ruby/1.9.1/rubygems/defaults.rb 4 /Users/agrimm/.rvm/rubies/ruby-head/lib/ruby/1.9.1/x86_64-darwin10.4.0/rbconfig.rb 5 /Users/agrimm/.rvm/rubies/ruby-head/lib/ruby/1.9.1/thread.rb 6 /Users/agrimm/.rvm/rubies/ruby-head/lib/ruby/1.9.1/rubygems/exceptions.rb 7 /Users/agrimm/.rvm/rubies/ruby-head/lib/ruby/1.9.1/rubygems/custom_require.rb 8 /Users/agrimm/.rvm/rubies/ruby-head/lib/ruby/1.9.1/rubygems.rb [NOTE] You may have encountered a bug in the Ruby interpreter or extension libraries. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport.html Abort trap =end -- http://bugs.ruby-lang.org/