Project

General

Profile

Actions

Bug #12290

closed

Possible segfault with Thread#name=

Added by herwinw (Herwin Quarantainenet) about 8 years ago. Updated about 8 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0p0 (2015-12-25 revision 53290)
[ruby-core:74963]

Description

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

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.


Files

issue12290_segthread_thread_name.diff (486 Bytes) issue12290_segthread_thread_name.diff herwinw (Herwin Quarantainenet), 04/15/2016 11:43 AM
issue12290_segthread_thread_name.diff (393 Bytes) issue12290_segthread_thread_name.diff herwinw (Herwin Quarantainenet), 04/15/2016 11:50 AM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0