mirror of
https://github.com/golang/go
synced 2024-11-25 00:07:56 -07:00
runtime: do not handle signals before configuring handler
There was a small window during program initialization where a signal could come in before the handling mechanisms were set up to handle it. Delay the signal-handler installation until we're ready for the signals. Fixes #3314. R=golang-dev, dsymonds, mikioh.mikioh CC=golang-dev https://golang.org/cl/5833049
This commit is contained in:
parent
7694da1f3b
commit
2e4a035995
@ -734,6 +734,12 @@ runtime·mstart(void)
|
||||
m->g0->sched.pc = (void*)-1; // make sure it is never used
|
||||
runtime·asminit();
|
||||
runtime·minit();
|
||||
|
||||
// Install signal handlers; after minit so that minit can
|
||||
// prepare the thread to be able to handle the signals.
|
||||
if(m == &runtime·m0)
|
||||
runtime·initsig();
|
||||
|
||||
schedule(nil);
|
||||
}
|
||||
|
||||
@ -1161,7 +1167,7 @@ runtime·malg(int32 stacksize)
|
||||
{
|
||||
G *newg;
|
||||
byte *stk;
|
||||
|
||||
|
||||
if(StackTop < sizeof(Stktop)) {
|
||||
runtime·printf("runtime: SizeofStktop=%d, should be >=%d\n", (int32)StackTop, (int32)sizeof(Stktop));
|
||||
runtime·throw("runtime: bad stack.h");
|
||||
|
@ -119,7 +119,7 @@ void
|
||||
runtime·panicstring(int8 *s)
|
||||
{
|
||||
Eface err;
|
||||
|
||||
|
||||
if(m->gcing) {
|
||||
runtime·printf("panic: %s\n", s);
|
||||
runtime·throw("panic during gc");
|
||||
@ -189,7 +189,7 @@ runtime·goargs(void)
|
||||
{
|
||||
String *s;
|
||||
int32 i;
|
||||
|
||||
|
||||
// for windows implementation see "os" package
|
||||
if(Windows)
|
||||
return;
|
||||
@ -207,7 +207,7 @@ runtime·goenvs_unix(void)
|
||||
{
|
||||
String *s;
|
||||
int32 i, n;
|
||||
|
||||
|
||||
for(n=0; argv[argc+1+n] != 0; n++)
|
||||
;
|
||||
|
||||
@ -342,8 +342,6 @@ runtime·check(void)
|
||||
runtime·throw("float32nan2");
|
||||
if(!(i != i1))
|
||||
runtime·throw("float32nan3");
|
||||
|
||||
runtime·initsig();
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user