delve/pkg
Alessandro Arzilli be88f980cd
proc: fix escapeCheck infinite recursion if something can not be (#3311)
deref'd

Fix infinite recursion if escapeCheck, at some point during its
recursion, creates an unreadable variable.

The deeper reason for this is that we evaluate function calls in a very
weird order so that we can always have stack space to store
intermediate evaluation results.
The variable 'value' happens to be stored in a register when we try to
make the call and because of our weird evaluation strategy registers
are no longer available to us when we evaluate 'value'.

This is not a complete fix for the issue, the real fix would be to
evaluate everything in its natural order, storing intermediate values
in Delve's memory instead of the target's stack. To do this we need a
mechanism to pin heap allocated objects, which at the moment does not
exist.

Updates #3310
2023-03-27 11:21:01 -07:00
..
astutil proc: simplify next/step/stepout condition code 2020-04-04 11:00:54 -07:00
config terminal: Add config options for tab printing (#3243) 2023-01-05 14:09:03 +01:00
dwarf dwarf/line: enable TestGrafana on Windows (#3289) 2023-02-25 14:12:46 +01:00
elfwriter terminal,service,proc/*: adds dump command (gcore equivalent) (#2173) 2021-01-29 13:39:33 -08:00
gobuild gobuild: drop support for building on Go < 1.10 (#2960) 2022-04-06 12:02:21 -07:00
goversion *: CHANGELOG and bump to version 1.20.0 (#3209) 2022-12-08 10:34:57 -08:00
locspec proc: support multiple functions with the same name (#3297) 2023-03-22 11:38:09 -07:00
logflags terminal/logflags: Added SetLoggerFactory(LoggerFactory) (#3257) 2023-02-14 09:46:35 -08:00
proc proc: fix escapeCheck infinite recursion if something can not be (#3311) 2023-03-27 11:21:01 -07:00
terminal proc,terminal: remove unused unexported functions (#3299) 2023-03-06 07:58:07 +01:00
version *: bump to version 1.20.1 (#3213) 2022-12-12 09:21:46 -08:00