RafaMar fixed my comment error
[goodguy/cinelerra.git] / cinelerra-5.1 / guicast / bcsignals.C
index ffc8a1c156d4062adb38c80846620cb2f9e00080..858ba409b097a80231adf41f5404e2b5d53cd583 100644 (file)
@@ -313,6 +313,8 @@ BC_Signals::~BC_Signals()
 }
 
 
+int dump_xerror = -1;
+
 int BC_Signals::x_error_handler(Display *display, XErrorEvent *event)
 {
        char string[1024];
@@ -320,6 +322,12 @@ int BC_Signals::x_error_handler(Display *display, XErrorEvent *event)
        fprintf(stderr, "BC_Signals::x_error_handler: error_code=%d opcode=%d,%d id=0x%jx %s\n",
                event->error_code, event->request_code, event->minor_code,
                (int64_t)event->resourceid, string);
+       if( dump_xerror < 0 ) {
+               char *env = getenv("BC_TRACE_XERROR");
+               dump_xerror = !env || !atoi(env) ? 0 : 1;
+       }
+       if( dump_xerror )
+               dump_stack();
        return 0;
 }
 
@@ -561,6 +569,7 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
                fprintf(fp,"err opening: %s, %m\n", proc_mem);
        reg_dump(fp, c);
 #endif
+       BC_Signals::dump_stack(fp);
        fprintf(fp,"\n\n");
        if( fp != stdout ) fclose(fp);
 #ifndef NO_GDB