try to show a PID for any signal
This commit is contained in:
@@ -294,16 +294,16 @@ static void child_process()
|
|||||||
#else
|
#else
|
||||||
reason = Signal;
|
reason = Signal;
|
||||||
#endif
|
#endif
|
||||||
switch( crash.signal )
|
/* Linux puts the PID that sent the signal in si_addr for SI_USER. */
|
||||||
|
if( crash.si.si_code == SI_USER )
|
||||||
|
reason += ssprintf( " from pid %li", (long) crash.si.si_addr );
|
||||||
|
else switch( crash.signal )
|
||||||
{
|
{
|
||||||
case SIGILL:
|
case SIGILL:
|
||||||
case SIGFPE:
|
case SIGFPE:
|
||||||
case SIGSEGV:
|
case SIGSEGV:
|
||||||
case SIGBUS:
|
case SIGBUS:
|
||||||
if( crash.si.si_code == SI_USER )
|
reason += ssprintf( " at 0x%0*lx", int(sizeof(void*)*2), (unsigned long) crash.si.si_addr );
|
||||||
reason += ssprintf( " from pid %li", (long) crash.si.si_addr );
|
|
||||||
else
|
|
||||||
reason += ssprintf( " at 0x%0*lx", int(sizeof(void*)*2), (unsigned long) crash.si.si_addr );
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user