diff options
author | Frank Schoenheit [fs] <frank.schoenheit@oracle.com> | 2011-02-20 23:09:26 +0100 |
---|---|---|
committer | Frank Schoenheit [fs] <frank.schoenheit@oracle.com> | 2011-02-20 23:09:26 +0100 |
commit | 9bc3b66c176713a11810a922938e77a4caf4c0b3 (patch) | |
tree | 33db04b1f8f5450a0588ceaa0464d0dcf76777b9 /sal/osl/unx/diagnose.c | |
parent | 2b5df33f59ce262a573996416d7933bc89151d79 (diff) |
debuglevels: #i116845# on assertions, don't/call osl_osl_breakDebug depending on an environemnt variable SAL_DIAGNOSE_ABORT.
On Unix, osl_breakDebug was previously implemented as exit(0), but never called (since osl_assertFailedLine always
returned sal_False). It is now implemented as "abort".
On Windows, osl_debugBreak was implemented as DebugBreak, which fits our intention of always aborting on an assertion,
given that SAL_DIAGNOSE_ABORT is set.
On OS/2 (is this an active port?), osl_debugBreak is implemented as calling "int 3" - which is quite old-fashioned,
but should also do what we want.
Diffstat (limited to 'sal/osl/unx/diagnose.c')
-rw-r--r-- | sal/osl/unx/diagnose.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sal/osl/unx/diagnose.c b/sal/osl/unx/diagnose.c index 02967b3ad7f7..5d9a4f31a40e 100644 --- a/sal/osl/unx/diagnose.c +++ b/sal/osl/unx/diagnose.c @@ -218,6 +218,11 @@ sal_Bool SAL_CALL osl_assertFailedLine ( oslDebugMessageFunc f = g_pDebugMessageFunc; char szMessage[1024]; + // after reporting the assertion, abort if told so by SAL_DIAGNOSE_ABORT, but *not* if + // assertions are routed to some external instance + char const * env = getenv( "SAL_DIAGNOSE_ABORT" ); + sal_Bool const doAbort = ( ( env != NULL ) && ( *env != '\0' ) && ( f == NULL ) ); + /* If there's a callback for detailed messages, use it */ if ( g_pDetailedDebugMessageFunc != NULL ) { @@ -227,7 +232,7 @@ sal_Bool SAL_CALL osl_assertFailedLine ( /* if SAL assertions are disabled in general, stop here */ if ( getenv("DISABLE_SAL_DBGBOX") ) - return sal_False; + return doAbort; /* format message into buffer */ if (pszMessage != 0) @@ -252,9 +257,10 @@ sal_Bool SAL_CALL osl_assertFailedLine ( /* output backtrace */ osl_diagnose_backtrace_Impl(f); - /* release lock and leave, w/o calling osl_breakDebug() */ + /* release lock and leave */ pthread_mutex_unlock(&g_mutex); - return sal_False; + + return doAbort; } /************************************************************************/ @@ -262,7 +268,7 @@ sal_Bool SAL_CALL osl_assertFailedLine ( /************************************************************************/ void SAL_CALL osl_breakDebug() { - exit(0); + abort(); } /************************************************************************/ |