|
From: Jeremy F. <je...@go...> - 2005-02-23 02:22:36
|
CVS commit by fitzhardinge:
Don't loop infinitely if it looks like we've lost the siginfo from
a signal. If this happens, it generally means some other program has
consumed the user's full quota of siginfo structures, and Valgrind can't
live without them.
BUGS:99142
M +8 -0 vg_signals.c 1.129
--- valgrind/coregrind/vg_signals.c #1.128:1.129
@@ -1728,4 +1728,12 @@ void vg_sync_signalhandler ( Int sigNo,
Bool resume_sched = False;
+ if (info->_sifields._kill._pid == 0) {
+ VG_(message)(Vg_UserMsg, "Signal %d (%s) appears to have lost its siginfo; I can't go on.",
+ sigNo, signame(sigNo));
+ VG_(message)(Vg_UserMsg, " This may be because one of your programs has consumed your");
+ VG_(message)(Vg_UserMsg, " ration of siginfo structures.");
+ exit(99);
+ }
+
if (VG_(threads)[tid].status == VgTs_WaitSys) {
/* This is like a normal async signal, but we can't simply
|