/*-------------------------------------------------------------------------
*
* assert . c
* Assert support code .
*
* Portions Copyright ( c ) 1996 - 2025 , PostgreSQL Global Development Group
* Portions Copyright ( c ) 1994 , Regents of the University of California
*
*
* IDENTIFICATION
* src / backend / utils / error / assert . c
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
#include "postgres.h"
#include <unistd.h>
#ifdef HAVE_EXECINFO_H
#include <execinfo.h>
#endif
/*
* ExceptionalCondition - Handles the failure of an Assert ( )
*
* We intentionally do not go through elog ( ) here , on the grounds of
* wanting to minimize the amount of infrastructure that has to be
* working to report an assertion failure .
*/
void
ExceptionalCondition(const char *conditionName,
const char *fileName,
int lineNumber)
{
/* Report the failure on stderr (or local equivalent) */
if (!PointerIsValid(conditionName)
|| !PointerIsValid(fileName))
write_stderr("TRAP: ExceptionalCondition: bad arguments in PID %d\n" ,
(int ) getpid());
else
write_stderr("TRAP: failed Assert(\" %s\"), File: \" %s\", Line: %d, PID: %d\n" ,
conditionName, fileName, lineNumber, (int ) getpid());
/* Usually this shouldn't be needed, but make sure the msg went out */
fflush(stderr);
/* If we have support for it, dump a simple backtrace */
#ifdef HAVE_BACKTRACE_SYMBOLS
{
void *buf[100 ];
int nframes;
nframes = backtrace(buf, lengthof(buf));
backtrace_symbols_fd(buf, nframes, fileno(stderr));
}
#endif
/*
* If configured to do so , sleep indefinitely to allow user to attach a
* debugger . It would be nice to use pg_usleep ( ) here , but that can sleep
* at most 2 G usec or ~ 33 minutes , which seems too short .
*/
#ifdef SLEEP_ON_ASSERT
sleep(1000000 );
#endif
abort();
}
Messung V0.5 in Prozent C=92 H=97 G=94
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-08-08)
¤
*© Formatika GbR, Deutschland