Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

src: fix abort-on-uncaught-exception #3038

Commits on Sep 24, 2015

  1. src: fix abort-on-uncaught-exception

    This PR fixes 0af4c9e so that node
    aborts at the right time when throwing an error and using
    --abort-on-uncaught-exception.
    
    Basically, it wraps most node internal callbacks with:
    
    if (!domain || domain.emittingTopLevelError)
      runCallback();
    else {
      try {
        runCallback();
      } catch (err) {
        process._fatalException(err);
      }
    }
    
    so that V8 can abort properly in Isolate::Throw if
    --abort-on-uncaught-exception was passed on the command line, and domain
    can handle the error if one is active and not already in the top level
    domain's error handler.
    
    It also reverts 921f2de partially:
    node::FatalException does not abort anymore because at that time, it's
    already too late.
    
    It adds process._forceTickDone, which is really a hack to allow
    test-next-tick-error-spin.js to pass. It's here to basically avoid an
    infinite recursion when throwing in a domain from a nextTick callback,
    and queuing the same callback on the next tick from the domain's error
    handler.
    
    This change is an alternative approach to nodejs#3036 for fixing nodejs#3035.
    
    Fixes nodejs#3035.
    Julien Gilli committed Sep 24, 2015
    Configuration menu
    Copy the full SHA
    ee8b68a View commit details
    Browse the repository at this point in the history