From efa39fa7cc4e0413ee534342783f032276b6514d Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 12 Oct 2009 10:26:38 -0700 Subject: stack overflow debugging and fix. * in 6l, -K already meant check for stack underflow. add -KK to mean double-check stack overflows even in nosplit functions. * comment out print locks; they deadlock too easily but are still useful to put back for special occasions. * let runcgo assembly switch to scheduler stack without involving scheduler directly. because runcgo gets called from matchmg, it is too hard to keep it from being called on other stacks. R=r DELTA=94 (65 added, 18 deleted, 11 changed) OCL=35591 CL=35604 --- src/pkg/runtime/proc.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'src/pkg/runtime/proc.c') diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c index f6f2bb2b3..4113002ad 100644 --- a/src/pkg/runtime/proc.c +++ b/src/pkg/runtime/proc.c @@ -95,7 +95,7 @@ schedinit(void) { int32 n; byte *p; - + allm = m; mallocinit(); @@ -452,15 +452,6 @@ scheduler(void) lock(&sched); if(gosave(&m->sched) != 0){ gp = m->curg; - if(gp->status == Gcgocall){ - // Runtime call into external code (FFI). - // When running with FFI, the scheduler stack is a - // native pthread stack, so it suffices to switch to the - // scheduler stack and make the call. - runcgo(gp->cgofn, gp->cgoarg); - gp->status = Grunning; - gogo(&gp->sched, 1); - } // Jumped here via gosave/gogo, so didn't // execute lock(&sched) above. -- cgit v1.2.3