Project

General

Profile

Actions

Backport #3779

closed

Threading issues on Debian GNU/kFreeBSD

Added by lucas (Lucas Nussbaum) over 13 years ago. Updated over 7 years ago.


Description

=begin
Due to incorrect assumptions on sigprocmask in threaded programs, ruby 1.8 doesn't work well on Debian GNU/kFreeBSD (FreeBSD kernel + GNU Libc).
This was already fixed in Ruby 1.9.

  • in process.c (re-)start timer thread (after_exec) only in parent,
    as in child we know for sure that there is only one thread.
    The fix-up in child is performed slightly later in rb_thread_atfork().
    Also unify linux with rest of the systems.
    In 1.9 series the code is completely reworked.

  • in signal.c use pthread_sigmask instead of sigprocmask,
    behaviour of sigprocmask is undefined in threaded programs, as stated in POSIX
    (http://www.opengroup.org/onlinepubs/9699919799/functions/pthread_sigmask.html).
    In 1.9 series the code already uses pthread_sigmask:

    Sat Apr 24 00:41:52 2010 Yusuke Endoh

      * signal.c: use pthread_sigmask() instead of sigprocmask().
        sigprocmask() is unspecified behavior on multi-thread programs.
        [ruby-core:25217]
    

For more information, see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595034

Patch attached. The signal.c part is hackish, and should be done properly in configure.

Please also backport to 1.8.7.
=end


Files

100901_threading_fixes.patch (2.65 KB) 100901_threading_fixes.patch lucas (Lucas Nussbaum), 09/01/2010 07:26 PM

Updated by lucas (Lucas Nussbaum) almost 13 years ago

Hi,

I'm surprised this fix wasn't applied, and backported to 1.8.7...

Actions #2

Updated by naruse (Yui NARUSE) almost 13 years ago

  • Tracker changed from Bug to Backport
  • Project changed from Ruby 1.8 to Backport187
  • Assignee set to shyouhei (Shyouhei Urabe)

Updated by shyouhei (Shyouhei Urabe) over 12 years ago

  • Category set to core
  • Status changed from Open to Assigned

process.c part is OK.

signal.c part is NG. Ruby 1.8 and under don't always use pthread so depending on environments, your patch might introduce additional dependencies, namely -lpthread. That's not a good thing to add today.

I'm trying to write fix this.

Actions #4

Updated by shyouhei (Shyouhei Urabe) over 7 years ago

  • Status changed from Assigned to Closed
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0