pike.git/src/error.c:14:
#include "array.h"
#include "object.h"
#include "main.h"
#include "builtin_functions.h"
#include "backend.h"
#include "operators.h"
#include "module_support.h"
#include "threads.h"
#include "gc.h"
- RCSID("$Id: error.c,v 1.62 2000/08/21 21:32:37 grubba Exp $");
+ RCSID("$Id: error.c,v 1.63 2000/09/01 18:41:27 grubba Exp $");
#undef ATTRIBUTE
#define ATTRIBUTE(X)
/*
* Backtrace handling.
*/
struct pike_backtrace
{
pike.git/src/error.c:442: Inside #if defined(PIKE_DEBUG)
init_buf();
describe_svalue(&throw_value,0,0);
s=simple_free_buf();
fprintf(stderr,"%s\n",s);
free(s);
}
#endif
exit(1);
}
+ #ifdef __NT__
+ /* Wrapper around abort() to avoid interactive requesters on NT. */
+ static void do_abort()
+ {
+ if (!d_flag && !getenv("PIKE_DEBUG")) {
+ exit(-6); /* -SIGIOT */
+ }
+ abort();
+ }
+ #else /* !__NT__ */
+ #define do_abort() abort()
+ #endif /* __NT__ */
+
PMOD_EXPORT void fatal_on_error(void *msg)
{
#ifdef PIKE_DEBUG
dump_backlog();
#endif
fprintf(stderr,"%s\n",(char *)msg);
- abort();
+ do_abort();
}
PMOD_EXPORT DECLSPEC(noreturn) void error(const char *fmt,...) ATTRIBUTE((noreturn,format (printf, 1, 2)))
{
va_list args;
va_start(args,fmt);
va_error(fmt,args);
va_end(args);
}
PMOD_EXPORT DECLSPEC(noreturn) void debug_fatal(const char *fmt, ...) ATTRIBUTE((noreturn,format (printf, 1, 2)))
{
va_list args;
static int in_fatal = 0;
va_start(args,fmt);
/* Prevent double fatal. */
if (in_fatal)
{
(void)VFPRINTF(stderr, fmt, args);
- abort();
+ do_abort();
}
in_fatal = 1;
#ifdef PIKE_DEBUG
dump_backlog();
#endif
{
extern int Pike_in_gc;
if(Pike_in_gc)
pike.git/src/error.c:500:
{
fprintf(stderr,"Attempting to dump backlog (may fail)...\n");
push_error("Backtrace at time of fatal:\n");
APPLY_MASTER("describe_backtrace",1);
if(Pike_sp[-1].type==PIKE_T_STRING)
write_to_stderr(Pike_sp[-1].u.string->str, Pike_sp[-1].u.string->len);
}else{
fprintf(stderr,"No stack - no backtrace.\n");
}
fflush(stderr);
- abort();
+ do_abort();
}
#if 1
#define ERR_DECLARE
#include "errors.h"
void f_error_cast(INT32 args)
{