Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-82459

Fall back to default signal handler when a thread receives two signals

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 7.3.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Service Arch
    • Fully Compatible
    • ALL
    • Service Arch Prioritized List

      In https://github.com/mongodb/mongo/blob/8e4b5670df9b9fe814e57cb5f3f8ee9407237b5a/src/mongo/util/signal_handlers_synchronous.cpp , the server defines signal-handlers for a variety of signals that can be synchronously generated, like SIGSEGV and SIGABRT. The signal-handling action for these signals is defined to be some version of logging a fatal error, collecting and logging a backtrace, and the exiting. When a thread receives a second such signal (e.g., it's handling an abort and the signal handler segfaults), the second signal handler calls quickExit, which may call into logging (risky when we're two signal handlers deep) and doesn't call into the default signal handler. This means we won't get a core dump in this case. We should call `endProcessWithSignal`.

            Assignee:
            ryan.berryhill@mongodb.com Ryan Berryhill
            Reporter:
            george.wangensteen@mongodb.com George Wangensteen
            Votes:
            0 Vote for this issue
            Watchers:
            17 Start watching this issue

              Created:
              Updated:
              Resolved: