Skip to content
Commits on Mar 11, 2012
  1. @dbussink

    Fixes for recovery after a failed execvp()

    dbussink committed
    There were a few things that were going wrong here. First of all
    we didn't properly (re)initialize the state when starting LLVM after
    we stopped it before execvp'ing. It was still seeing that a stop was
    requested, so we should reset that.
    
    Another issue is that we use removed the global reference to the
    signal handler when stopping, causing a crash if a signal was
    going to be processed after a failed exec. We introduce a pause()
    for the SignalHandler so we can easier restart it later on.
    
    Another issue is that the semantics of signal() regarding SA_RESTART
    are different from what signaction() does. We need to have SA_RESTART
    otherwise calls to for example read() or accept() are not interuptable
    and thus can cause a hang. Using sigaction() makes sure we set up
    the default handlers properly so we can recover later on without
    problems.
    
    After these changes, enabling the problematic Kernel#exec specs still
    cause a crash, but that only happens when running 'rake' and not when
    running for example ./bin/mspec ci. This needs further investigation.
Commits on Oct 28, 2011
  1. @dbussink

    Uses a GCLockGuard for the contention_lock

    dbussink committed
    This prevents a possible deadlock described in issue #1372.
    
    Fixes #1372
Commits on Aug 24, 2011
  1. @dbussink

    Exit if we see the exit status in a thread

    dbussink committed
    MRI also exits if you exit from another thread than
    the main thread. In this case we have to be sure to
    shutdown everything properly, since only the main
    thread exiting will also take down all other running
    threads.
  2. @dbussink

    Make sure to restart the SignalHandler after execvp() failed

    dbussink committed
    Otherwise we lack signal handler in a process that tried to
    do an execvp() and failed. We mark the SignalHandler thread
    as not deleting the thread when it exits, since we might need
    to restart it. This isn't a risk for a leak, since we never
    deallocate the SignalHandler in a process anyway.
Commits on Aug 3, 2011
  1. @dbussink

    Merge remote-tracking branch 'origin/master' into 2.0.0pre

    dbussink committed
    Conflicts:
    	kernel/bootstrap/rubinius.rb
    	vm/builtin/system.cpp
    	vm/builtin/system.hpp
    	vm/signal.cpp
    	vm/signal.hpp
Commits on Aug 2, 2011
  1. @dbussink

    Make sure that ignoring a signal actually sets SIG_IGN as handler

    dbussink committed
    This makes sure the signal never even arrives at the process.
    
    Fixes #995
Commits on Oct 13, 2010
  1. @dbussink

    Fix Thread.critical by unsetting the critical thread id

    dbussink committed
    Also use pthread_equal over direct comparisons as recommended
Commits on Oct 4, 2010
  1. @dbussink
Commits on Aug 23, 2010
  1. @dbussink

    Fix signal handling

    dbussink committed
    Signals that raised an exception weren't noticed because the signal
    processing didn't explicitly state whether it succeeded or not.
    This change allows the process to pick up these exceptions and act
    accordingly.
Commits on Aug 5, 2010
  1. @dbussink
Commits on May 21, 2010
  1. @dbussink
Something went wrong with that request. Please try again.