]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: use startpanic so that only one thread handles an incoming SIGQUIT
authorRuss Cox <rsc@golang.org>
Tue, 14 Feb 2012 04:06:21 +0000 (23:06 -0500)
committerRuss Cox <rsc@golang.org>
Tue, 14 Feb 2012 04:06:21 +0000 (23:06 -0500)
Typing ^\ delivers the SIGQUIT to all threads, it appears.

R=golang-dev, r, iant
CC=golang-dev
https://golang.org/cl/5657044

src/pkg/runtime/signal_darwin_386.c
src/pkg/runtime/signal_darwin_amd64.c
src/pkg/runtime/signal_freebsd_386.c
src/pkg/runtime/signal_freebsd_amd64.c
src/pkg/runtime/signal_linux_386.c
src/pkg/runtime/signal_linux_amd64.c
src/pkg/runtime/signal_netbsd_386.c
src/pkg/runtime/signal_netbsd_amd64.c
src/pkg/runtime/signal_openbsd_386.c
src/pkg/runtime/signal_openbsd_amd64.c

index 803bd242f304090cb6c71709502cbf6c66ca83aa..1844f68a63409cc7a400fe4786e3749bb22fa68e 100644 (file)
@@ -92,9 +92,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *context, G *gp)
                return;
 
 Throw:
-       if(runtime·panicking)  // traceback already printed
-               runtime·exit(2);
-       runtime·panicking = 1;
+       runtime·startpanic();
 
        if(sig < 0 || sig >= NSIG){
                runtime·printf("Signal %d\n", sig);
index 0c954294a5876b1b80f7828f3082c4c24075d5e8..32c73081c11e18ffcfe46e899c29e316d974377e 100644 (file)
@@ -102,9 +102,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *context, G *gp)
                return;
 
 Throw:
-       if(runtime·panicking)  // traceback already printed
-               runtime·exit(2);
-       runtime·panicking = 1;
+       runtime·startpanic();
 
        if(sig < 0 || sig >= NSIG){
                runtime·printf("Signal %d\n", sig);
index b07ead62e8d7e91b9fed912e75259ec0ea939f64..80da95d98ac68b4f4e4dc09e8cc4959716a1630a 100644 (file)
@@ -89,9 +89,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *context, G *gp)
                return;
 
 Throw:
-       if(runtime·panicking)  // traceback already printed
-               runtime·exit(2);
-       runtime·panicking = 1;
+       runtime·startpanic();
 
        if(sig < 0 || sig >= NSIG)
                runtime·printf("Signal %d\n", sig);
index 2a686096818e12cd19f3c4f23727c1e281a5a074..e4307682f4c0504e585e69fc746f8b4874861c4a 100644 (file)
@@ -97,9 +97,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *context, G *gp)
                return;
 
 Throw:
-       if(runtime·panicking)  // traceback already printed
-               runtime·exit(2);
-       runtime·panicking = 1;
+       runtime·startpanic();
 
        if(sig < 0 || sig >= NSIG)
                runtime·printf("Signal %d\n", sig);
index b43dbc1121ca7f86e9126a42c329193ab4c8592a..b154ad88725fef92b16673564e8d48b739ee387c 100644 (file)
@@ -85,9 +85,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *context, G *gp)
                return;
 
 Throw:
-       if(runtime·panicking)  // traceback already printed
-               runtime·exit(2);
-       runtime·panicking = 1;
+       runtime·startpanic();
 
        if(sig < 0 || sig >= NSIG)
                runtime·printf("Signal %d\n", sig);
index 551744b78d5ecb416b6a1394c6f6c2e88936888e..14095ba61cdf76ce658d568ac2c0305c2b2dacc3 100644 (file)
@@ -95,9 +95,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *context, G *gp)
                return;
 
 Throw:
-       if(runtime·panicking)  // traceback already printed
-               runtime·exit(2);
-       runtime·panicking = 1;
+       runtime·startpanic();
 
        if(sig < 0 || sig >= NSIG)
                runtime·printf("Signal %d\n", sig);
index 739b359ee61f353e65a0bec99ec079e1f6d497b2..39d829484de0f68f3596f1c4049a79e7bb48ba30 100644 (file)
@@ -85,9 +85,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *context, G *gp)
                return;
 
 Throw:
-       if(runtime·panicking)  // traceback already printed
-               runtime·exit(2);
-       runtime·panicking = 1;
+       runtime·startpanic();
 
        if(sig < 0 || sig >= NSIG)
                runtime·printf("Signal %d\n", sig);
index e71f23551da2a68d6ae85ab34238abcc1634f006..8b4f624e7cb7d487cf578d1876e3d5b26c9462dc 100644 (file)
@@ -94,9 +94,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *context, G *gp)
                return;
 
 Throw:
-       if(runtime·panicking)  // traceback already printed
-               runtime·exit(2);
-       runtime·panicking = 1;
+       runtime·startpanic();
 
        if(sig < 0 || sig >= NSIG)
                runtime·printf("Signal %d\n", sig);
index 739b359ee61f353e65a0bec99ec079e1f6d497b2..39d829484de0f68f3596f1c4049a79e7bb48ba30 100644 (file)
@@ -85,9 +85,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *context, G *gp)
                return;
 
 Throw:
-       if(runtime·panicking)  // traceback already printed
-               runtime·exit(2);
-       runtime·panicking = 1;
+       runtime·startpanic();
 
        if(sig < 0 || sig >= NSIG)
                runtime·printf("Signal %d\n", sig);
index e71f23551da2a68d6ae85ab34238abcc1634f006..8b4f624e7cb7d487cf578d1876e3d5b26c9462dc 100644 (file)
@@ -94,9 +94,7 @@ runtime·sighandler(int32 sig, Siginfo *info, void *context, G *gp)
                return;
 
 Throw:
-       if(runtime·panicking)  // traceback already printed
-               runtime·exit(2);
-       runtime·panicking = 1;
+       runtime·startpanic();
 
        if(sig < 0 || sig >= NSIG)
                runtime·printf("Signal %d\n", sig);