be careful about not switching to procs unless necessary.
diff --git a/acid/thread b/acid/thread index af3764b..5b5337e 100644 --- a/acid/thread +++ b/acid/thread
@@ -81,11 +81,15 @@ } defn threadstkline(T){ - local stk, frame, pc, pc0, file, s, sym, i, stop; + local stk, frame, pc, pc0, file, s, sym, i, stop, P, mainpid; - if T.state == Running then + if T.state == Running then { + P = (Proc)T.proc; + mainpid = pid; + if mainpid != P.pid then setproc(P.pid); stk = strace({}); - else + if mainpid != P.pid then setproc(mainpid); + } else stk = strace(label(T.sched)); stop = 0; @@ -151,7 +155,6 @@ local T, Tq, mainpid; mainpid = pid; -// setproc(P.pid); Tq = (Tqueue)P.threads; T = (Thread)Tq.$head; while T != 0 do{ @@ -159,7 +162,6 @@ thread(T); T = (Thread)T.nextt; } -// setproc(mainpid); } defn threads(){ @@ -305,7 +307,11 @@ // setproc(P.pid); if T.state == Running then{ + if P.pid != mainpid then + setproc(P.pid); stk(); + if P.pid != mainpid then + setproc(mainpid); } else { labstk(T.sched); }