X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcsignals.C;h=793666cd1ca53262be65b034680817b939e05bce;hb=9e779f63289f91f132569a933ddc93f4c1487751;hp=e2a8b149c42659c1744496f814e19c08797ef2aa;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bcsignals.C b/cinelerra-5.1/guicast/bcsignals.C index e2a8b149..793666cd 100644 --- a/cinelerra-5.1/guicast/bcsignals.C +++ b/cinelerra-5.1/guicast/bcsignals.C @@ -21,7 +21,9 @@ #include "bcsignals.h" #include "bcwindowbase.h" +#include "bccmodels.h" #include "bckeyboard.h" +#include "bcresources.h" #include #include @@ -126,14 +128,14 @@ static bc_buffertrace_t* new_bc_buffertrace(int size, void *ptr, const char *loc return result; } -static void bc_copy_textfile(FILE *ofp, const char *fmt,...) +static void bc_copy_textfile(int lines, FILE *ofp, const char *fmt,...) { va_list ap; va_start(ap, fmt); char bfr[BCTEXTLEN]; vsnprintf(bfr, sizeof(bfr), fmt, ap); va_end(ap); FILE *ifp = fopen(bfr,"r"); if( !ifp ) return; - while( fgets(bfr,sizeof(bfr),ifp) ) fputs(bfr,ofp); + while( --lines >= 0 && fgets(bfr,sizeof(bfr),ifp) ) fputs(bfr,ofp); fclose(ifp); } @@ -418,6 +420,10 @@ void BC_Signals::set_sighup_exit(int enable) BC_Signals::BC_Signals() { } +BC_Signals::~BC_Signals() +{ + BC_CModels::bcxfer_stop_slicers(); +} void BC_Signals::dump_traces(FILE *fp) { @@ -502,8 +508,8 @@ int BC_Signals::x_error_handler(Display *display, XErrorEvent *event) { char string[1024]; XGetErrorText(event->display, event->error_code, string, 1024); - fprintf(stderr, "BC_Signals::x_error_handler: error_code=%d opcode=%d,%d %s\n", - event->error_code, event->request_code, event->minor_code, string); + 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, event->resourceid, string); return 0; } @@ -855,6 +861,8 @@ static void handle_dump(int n, siginfo_t * info, void *sc) fprintf(fp," by %d:%d %s(%s)\n", pw->pw_uid, pw->pw_gid, pw->pw_name, pw->pw_gecos); } + fprintf(fp,"\nCPUS: %d\n", BC_Resources::get_machine_cpus()); + fprintf(fp,"\nCPUINFO:\n"); bc_copy_textfile(32, fp,"/proc/cpuinfo"); fprintf(fp,"\nTHREADS:\n"); Thread::dump_threads(fp); fprintf(fp,"\nTRACES:\n"); BC_Signals::dump_traces(fp); fprintf(fp,"\nLOCKS:\n"); BC_Signals::dump_locks(fp); @@ -863,9 +871,9 @@ static void handle_dump(int n, siginfo_t * info, void *sc) fprintf(fp,"\nMAIN HOOK:\n"); BC_Signals::trap_hook(fp, BC_Signals::trap_data); } - fprintf(fp,"\nVERSION:\n"); bc_copy_textfile(fp,"/proc/version"); - fprintf(fp,"\nMEMINFO:\n"); bc_copy_textfile(fp,"/proc/meminfo"); - fprintf(fp,"\nMAPS:\n"); bc_copy_textfile(fp,"/proc/%d/maps",pid); + fprintf(fp,"\nVERSION:\n"); bc_copy_textfile(INT_MAX, fp,"/proc/version"); + fprintf(fp,"\nMEMINFO:\n"); bc_copy_textfile(INT_MAX, fp,"/proc/meminfo"); + fprintf(fp,"\nMAPS:\n"); bc_copy_textfile(INT_MAX, fp,"/proc/%d/maps",pid); fprintf(fp,"\n\n"); if( fp != stdout ) fclose(fp); char cmd[1024], *cp = cmd;