PERFORCE change 152632 for review

Peter Wemm peter at FreeBSD.org
Fri Nov 7 12:22:34 PST 2008


http://perforce.freebsd.org/chv.cgi?CH=152632

Change 152632 by peter at peter_overcee on 2008/11/07 20:22:26

	Treat SIGSYS as a synchronous signal, like SIGBUS and SIGSEGV.
	Otherwise it gets queued up and turns up later at misleading times
	when it gets unmaked for an async syscall.

Affected files ...

.. //depot/projects/valgrind/coregrind/m_libcsignal.c#8 edit
.. //depot/projects/valgrind/coregrind/m_main.c#10 edit
.. //depot/projects/valgrind/coregrind/m_scheduler/scheduler.c#3 edit
.. //depot/projects/valgrind/coregrind/m_signals.c#9 edit

Differences ...

==== //depot/projects/valgrind/coregrind/m_libcsignal.c#8 (text+ko) ====

@@ -261,6 +261,7 @@
    vg_assert(sig != VKI_SIGSEGV);
    vg_assert(sig != VKI_SIGBUS);
    vg_assert(sig != VKI_SIGTRAP);
+   vg_assert(sig != VKI_SIGSYS);
    /* do nothing */ 
 }
 

==== //depot/projects/valgrind/coregrind/m_main.c#10 (text+ko) ====

@@ -2284,6 +2284,7 @@
    VG_(set_default_handler)(VKI_SIGBUS);
    VG_(set_default_handler)(VKI_SIGILL);
    VG_(set_default_handler)(VKI_SIGFPE);
+   VG_(set_default_handler)(VKI_SIGSYS);
 
    // We were exiting, so assert that...
    vg_assert(VG_(is_exiting)(tid));

==== //depot/projects/valgrind/coregrind/m_scheduler/scheduler.c#3 (text+ko) ====

@@ -344,6 +344,7 @@
    VG_(sigdelset)(&mask, VKI_SIGFPE);
    VG_(sigdelset)(&mask, VKI_SIGILL);
    VG_(sigdelset)(&mask, VKI_SIGTRAP);
+   VG_(sigdelset)(&mask, VKI_SIGSYS);
 
    /* Can't block these anyway */
    VG_(sigdelset)(&mask, VKI_SIGSTOP);

==== //depot/projects/valgrind/coregrind/m_signals.c#9 (text+ko) ====

@@ -487,6 +487,7 @@
       case VKI_SIGFPE:
       case VKI_SIGILL:
       case VKI_SIGTRAP:
+      case VKI_SIGSYS:
 	 /* For these, we always want to catch them and report, even
 	    if the client code doesn't. */
 	 skss_handler = sync_signalhandler;
@@ -1192,6 +1193,7 @@
    case VKI_SIGTRAP:	/* core */
    case VKI_SIGXCPU:	/* core */
    case VKI_SIGXFSZ:	/* core */
+   case VKI_SIGSYS:	/* core */
       terminate = True;
       core = True;
       break;
@@ -1208,7 +1210,6 @@
 #ifdef VKI_SIGPWR
    case VKI_SIGPWR:	/* term */
 #endif
-   case VKI_SIGSYS:	/* term */
    case VKI_SIGPROF:	/* term */
    case VKI_SIGVTALRM:	/* term */
    case VKI_SIGRTMIN ... VKI_SIGRTMAX: /* term */
@@ -1763,7 +1764,8 @@
 	     sigNo == VKI_SIGBUS  ||
 	     sigNo == VKI_SIGFPE  ||
 	     sigNo == VKI_SIGILL  ||
-	     sigNo == VKI_SIGTRAP);
+	     sigNo == VKI_SIGTRAP ||
+	     sigNo == VKI_SIGSYS);
 #if 0
 VG_(printf)("signal %d\n", sigNo);
 VG_(printf)("si_signo %d\n", info->si_signo);


More information about the p4-projects mailing list