Project

General

Profile

Bug #12290

Updated by nobu (Nobuyoshi Nakada) about 8 years ago

Ruby 2.3 added a Thread#name=, which may segfault when used incorrectly. This little program: 

 ```ruby ``` 
 class SubClassedThread < Thread 
   def initialize() 
     self.name = 'foo' 
     super do 
       yield 
     end 
   end 
 end 

 SubClassedThread.new {} 
 ``` 

 Causes a segfault with both Ruby 2.3 (ruby 2.3.0p0 (2015-12-25 revision 53290)) and ruby-2.4.0-dev (ruby 2.4.0dev (2016-04-15 trunk 54594)). Moving the line that assignes the name in the block passed to super resolves the issue. Even thought there is a workaround, it shouldn't be possible to trigger a segfault from a script imho. 

 The relevant lines of the backtrace 

 ``` 
 /lib/i386-linux-gnu/i686/cmov/libpthread.so.0(pthread_setname_np+0x50) [0xf739ded0] 
 ruby(rb_thread_setname+0x95) [0xf755dc85] thread.c:2797 
 ``` 

 The system is a default Debian Jessie (32bit), with libc version 2.19-18+deb8u4.

Back