delve/_fixtures/stackwatchbug.go
Alessandro Arzilli 06053a7e4b
proc: fix bug with stack watchpoints going out of scope (#3742)
When stack watchpoints go out of scope simultaneously they can hide (or
duplicate the effect) of other breakpoints (including other watchpoints
going out of scope) that are placed on the same physical memory
location.

This happens because we delete the watchpoint-out-of-scope breakpoint
while we are evaluating hit breakpoints, mangling the breaklets list.

This commit moves breakpoint deletion out of the
watchpoint-out-of-scope condition, delaying it until all hit
breakpoints have been evaluated.

Also fix bug where on amd64 if all four watchpoints are in use the last
one is not checked.

Fixes #3739
2024-06-12 12:37:04 -07:00

21 lines
378 B
Go

package main
import (
"fmt"
)
func multiRound() {
vars := []int{0, 1, 2, 3, 4, 5}
for i := range vars { // line 9: set watchpoints
if i > 0 {
vars[i] = vars[i-1]
fmt.Println() // line 12: watchpoints hit
}
}
}
func main() {
multiRound() // line 18: after restart, last watchpoint out of scope
return // line 19: all watchpoints should go out of scope
}