Flush before aborting in assertions

XMLWordPrintableJSON

    • Server Programmability
    • Programmability 2026-08-04
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Flushes streams before aborting on each abort path.

      There's a risk of introducing deadlock behaviour by putting a flush in an abort path. However:

      • Limit risk of flush issues by only flushing stdout/stderr.
      • `callAbort` is only used in assert_util.cpp by assertions that all already log directly before the abort so they already carry the same level of risk without the flush.
      • `quickExit` has a `quickExitWithoutLogging` variant that ensures no logging paths occur. The documentation for `quickExit` indicates that it does pre-exit checks that could log. Adding flushes does not significantly change the risk profile.

      Fixes issue with 'bazel test' output not capturing unit test information. Discovered when unit testing where tripwire assert had fired during a test causing haveTripwireAssertionsOccurred to fire during TestingProctor::exitAbruptlyIfDeferredErrors.

            Assignee:
            Stewart Smith
            Reporter:
            Stewart Smith
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: