diff -pru perl-5.8.7-min-patched/mg.c perl-5.8.7-patched/mg.c
--- perl-5.8.7-min-patched/mg.c	Fri Apr 22 07:12:48 2005
+++ perl-5.8.7-patched/mg.c	Mon Nov 27 20:59:08 2006
@@ -1226,13 +1226,19 @@ Perl_magic_clearsig(pTHX_ SV *sv, MAGIC 
     return 0;
 }
 
+#ifndef SIG_PENDING_DIE_COUNT
+#  define SIG_PENDING_DIE_COUNT 120
+#endif
+
 void
 Perl_raise_signal(pTHX_ int sig)
 {
     /* Set a flag to say this signal is pending */
     PL_psig_pend[sig]++;
     /* And one to say _a_ signal is pending */
-    PL_sig_pending = 1;
+    if (++PL_sig_pending >= SIG_PENDING_DIE_COUNT)
+	Perl_croak(aTHX_ "Maximal count of pending signals (%lu) exceeded",
+		   (unsigned long)SIG_PENDING_DIE_COUNT);
 }
 
 Signal_t
