diff --git a/src/error.c b/src/error.c
index 7d4dbd636a3609fcfc8f9957473081c12c3841af..70cc1cf0e313e07d19e490a439c60a028e392c94 100644
--- a/src/error.c
+++ b/src/error.c
@@ -21,7 +21,7 @@
 #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)
@@ -449,13 +449,26 @@ PMOD_EXPORT void exit_on_error(void *msg)
   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)))
@@ -476,7 +489,7 @@ PMOD_EXPORT DECLSPEC(noreturn) void debug_fatal(const char *fmt, ...) ATTRIBUTE(
   if (in_fatal)
   {
     (void)VFPRINTF(stderr, fmt, args);
-    abort();
+    do_abort();
   }
 
   in_fatal = 1;
@@ -507,7 +520,7 @@ PMOD_EXPORT DECLSPEC(noreturn) void debug_fatal(const char *fmt, ...) ATTRIBUTE(
     fprintf(stderr,"No stack - no backtrace.\n");
   }
   fflush(stderr);
-  abort();
+  do_abort();
 }
 
 #if 1