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
diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c
index f6f2bb2..4113002 100644
--- a/src/pkg/runtime/proc.c
+++ b/src/pkg/runtime/proc.c
@@ -95,7 +95,7 @@
{
int32 n;
byte *p;
-
+
allm = m;
mallocinit();
@@ -452,15 +452,6 @@
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.