Skip to content

Commit

Permalink
Merge pull request #4043 from Autodesk/bailp/EMSUSD-0/fix-fatal-error…
Browse files Browse the repository at this point in the history
…-exit

Fix fatal error exit
  • Loading branch information
seando-adsk authored Dec 10, 2024
2 parents b7b8cc4 + 96616e0 commit e56cdc5
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions lib/mayaUsd/utils/diagnosticDelegate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,23 @@ class ErrorOnlyDelegate : public UsdUtilsCoalescingDiagnosticDelegate
{
UsdMayaDiagnosticDelegate::Flush();

// Note: TfLogCrash will do a hard abort of the process.
// The dynamic libraries will be unloaded in a random order and
// global variable will be destroyed. Unfortunately, USD holds a
// mutex while in the TfLogCrash function and trying to remove the
// diagnostic delegate (_waker) will also try to hold that mutex
// resulting in a dead-lock. Avoid this by avoiding to destroy
// the delegates
//
// Yes, this means we are leaking the delegates, but we are in
// the middle of crashing anyway, so it does not really matter.

_waker.release();
_flusher.release();
_batchedStatuses.release();
_batchedWarnings.release();
_batchedErrors.release();

TfLogCrash(
"FATAL ERROR",
msg,
Expand Down

0 comments on commit e56cdc5

Please sign in to comment.