src/lib/cheapcgi.c 1.122

1.122 2009/06/03 00:34:11 markd
added option to generate stack dumps when browser errors occur
Index: src/lib/cheapcgi.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/lib/cheapcgi.c,v
retrieving revision 1.121
retrieving revision 1.122
diff -b -B -U 4 -r1.121 -r1.122
--- src/lib/cheapcgi.c	5 May 2009 23:35:07 -0000	1.121
+++ src/lib/cheapcgi.c	3 Jun 2009 00:34:11 -0000	1.122
@@ -511,8 +511,9 @@
 return ok;
 }
 
 
+static boolean dumpStackOnSignal = FALSE;  // should a stack dump be generated?
 
 static void catchSignal(int sigNum)
 /* handler for various terminal signals for logging purposes */
 {
@@ -533,20 +534,24 @@
       break;
     }
     logCgiToStderr();
     fprintf(stderr, "Received signal %s\n", sig);
+    if (dumpStackOnSignal)
+        dumpStack("Stack for signal %s\n", sig);
     raise(SIGKILL);
 }
 
-void initSigHandlers()
-/* set handler for various terminal signals for logging purposes */
+void initSigHandlers(boolean dumpStack)
+/* set handler for various terminal signals for logging purposes.
+ * if dumpStack is TRUE, attempt to dump the stack. */
 {
 if (cgiIsOnWeb())
     {
     signal(SIGABRT, catchSignal);
     signal(SIGSEGV, catchSignal);
     signal(SIGFPE, catchSignal);
     signal(SIGBUS, catchSignal);
+    dumpStackOnSignal = dumpStack;
     }
 }