mirror of https://github.com/golang/go.git
internal/trace/v2: reject events for goroutines with unknown states
Change-Id: Ifc472ed4cf0433d06f43559930ac80df23656a6e Reviewed-on: https://go-review.googlesource.com/c/go/+/555496 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
This commit is contained in:
parent
e58e813950
commit
7abeefd2b1
|
|
@ -649,7 +649,11 @@ func (o *ordering) advance(ev *baseEvent, evt *evTable, m ThreadID, gen uint64)
|
|||
if !ok {
|
||||
return curCtx, false, fmt.Errorf("invalid string ID %v for %v event", nameID, typ)
|
||||
}
|
||||
if err := o.gStates[curCtx.G].beginRegion(userRegion{tid, name}); err != nil {
|
||||
gState, ok := o.gStates[curCtx.G]
|
||||
if !ok {
|
||||
return curCtx, false, fmt.Errorf("encountered EvUserRegionBegin without known state for current goroutine %d", curCtx.G)
|
||||
}
|
||||
if err := gState.beginRegion(userRegion{tid, name}); err != nil {
|
||||
return curCtx, false, err
|
||||
}
|
||||
return curCtx, true, nil
|
||||
|
|
@ -663,7 +667,11 @@ func (o *ordering) advance(ev *baseEvent, evt *evTable, m ThreadID, gen uint64)
|
|||
if !ok {
|
||||
return curCtx, false, fmt.Errorf("invalid string ID %v for %v event", nameID, typ)
|
||||
}
|
||||
if err := o.gStates[curCtx.G].endRegion(userRegion{tid, name}); err != nil {
|
||||
gState, ok := o.gStates[curCtx.G]
|
||||
if !ok {
|
||||
return curCtx, false, fmt.Errorf("encountered EvUserRegionEnd without known state for current goroutine %d", curCtx.G)
|
||||
}
|
||||
if err := gState.endRegion(userRegion{tid, name}); err != nil {
|
||||
return curCtx, false, err
|
||||
}
|
||||
return curCtx, true, nil
|
||||
|
|
@ -792,7 +800,11 @@ func (o *ordering) advance(ev *baseEvent, evt *evTable, m ThreadID, gen uint64)
|
|||
if typ == go122.EvSTWBegin {
|
||||
desc = stringID(ev.args[0])
|
||||
}
|
||||
if err := o.gStates[curCtx.G].beginRange(makeRangeType(typ, desc)); err != nil {
|
||||
gState, ok := o.gStates[curCtx.G]
|
||||
if !ok {
|
||||
return curCtx, false, fmt.Errorf("encountered event of type %d without known state for current goroutine %d", typ, curCtx.G)
|
||||
}
|
||||
if err := gState.beginRange(makeRangeType(typ, desc)); err != nil {
|
||||
return curCtx, false, err
|
||||
}
|
||||
return curCtx, true, nil
|
||||
|
|
@ -813,7 +825,11 @@ func (o *ordering) advance(ev *baseEvent, evt *evTable, m ThreadID, gen uint64)
|
|||
if err := validateCtx(curCtx, event.UserGoReqs); err != nil {
|
||||
return curCtx, false, err
|
||||
}
|
||||
desc, err := o.gStates[curCtx.G].endRange(typ)
|
||||
gState, ok := o.gStates[curCtx.G]
|
||||
if !ok {
|
||||
return curCtx, false, fmt.Errorf("encountered event of type %d without known state for current goroutine %d", typ, curCtx.G)
|
||||
}
|
||||
desc, err := gState.endRange(typ)
|
||||
if err != nil {
|
||||
return curCtx, false, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
go test fuzz v1
|
||||
[]byte("go 1.22 trace\x00\x00\x00\x01\x0100\x11\r\xa700\x01\x19000\x02$000000\x01\x0100\x05\b0000\x01\x0110\x11\r\xa700\x01\x19 00\x02\x110 0000")
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
go test fuzz v1
|
||||
[]byte("go 1.22 trace\x00\x00\x00\x01\x0100\x11\r\xa700\x01\x19000\x02#000000\x01\x0100\x05\b0000\x01\x0110\x11\r\xa700\x01\x19 00\x02\x110 0000")
|
||||
Loading…
Reference in New Issue