X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcsignals.C;h=6847fa5cabbccd7598cbf58ac129c578743d35be;hb=f3adc7285af86851913b48592a8c4fdfcdcdf8b6;hp=2a6c8943315ab7cd1d220aef7ec4d34c5f8d60ca;hpb=9db053d413fde01439cc72ec2109913dfda2ec7b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bcsignals.C b/cinelerra-5.1/guicast/bcsignals.C index 2a6c8943..6847fa5c 100644 --- a/cinelerra-5.1/guicast/bcsignals.C +++ b/cinelerra-5.1/guicast/bcsignals.C @@ -175,7 +175,7 @@ void BC_Signals::kill_subs() if( fgetc(fd) == ' ' ) --sp; // Read in parent process for( ptr=string; !feof(fd) && (*ptr=fgetc(fd))!=' '; ++ptr ); - if( (*ptr=fgetc(fd)) == ' ' ) break; + if( (*ptr=fgetc(fd)) == ' ' ) break; *ptr = 0; // printf("kill_subs %d process=%d getpid=%d parent_process=%d\n", @@ -208,6 +208,7 @@ static void signal_entry(int signum) BC_Trace::dump_traces(); BC_Trace::dump_locks(); BC_Trace::dump_buffers(); + BC_Trace::dump_shm_stats(); BC_Trace::delete_temps(); // Call user defined signal handler @@ -354,7 +355,9 @@ static void handle_dump(int n, siginfo_t * info, void *sc) signal(SIGINT, SIG_DFL); // gotta be root, or the dump is worthless int uid = getuid(); - if( uid != 0 ) return; +// it is not necessary to be root if ptrace is allowed via: +// echo 0 > /proc/sys/kernel/yama/ptrace_scope (usually set to 1) +// if( uid != 0 ) return; ucontext_t *uc = (ucontext_t *)sc; int pid = getpid(), tid = gettid(); struct sigcontext *c = (struct sigcontext *)&uc->uc_mcontext; @@ -391,6 +394,7 @@ static void handle_dump(int n, siginfo_t * info, void *sc) fprintf(fp,"\nTRACES:\n"); BC_Trace::dump_traces(fp); fprintf(fp,"\nLOCKS:\n"); BC_Trace::dump_locks(fp); fprintf(fp,"\nBUFFERS:\n"); BC_Trace::dump_buffers(fp); + fprintf(fp,"\nSHMMEM:\n"); BC_Trace::dump_shm_stats(fp); if( BC_Signals::trap_hook ) { fprintf(fp,"\nMAIN HOOK:\n"); BC_Signals::trap_hook(fp, BC_Signals::trap_data);