proc: bugs setting next breakpoints

1. A running goroutine is by definition not parked waiting for a
chan recv
2. The FDE end address is intended to be exclusive, the code
interpreted as inclusive and sometimes ended up setting a breakpoint
on a function other than the current one.
This commit is contained in:
aarzilli
2016-01-31 13:03:53 +01:00
parent 51e87386da
commit b370e20cd5
5 changed files with 88 additions and 7 deletions

View File

@ -311,7 +311,7 @@ func (scope *EvalScope) PtrSize() int {
// ChanRecvBlocked returns whether the goroutine is blocked on
// a channel read operation.
func (g *G) ChanRecvBlocked() bool {
return g.WaitReason == chanRecv
return (g.thread == nil) && (g.WaitReason == chanRecv)
}
// chanRecvReturnAddr returns the address of the return from a channel read.