delve/pkg/proc
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
..
amd64util fmt code (#2826) 2021-12-13 10:25:23 -08:00
core proc: fuzzing expression evaluator and variable loader (#3293) 2023-03-16 12:13:10 -07:00
debuginfod Implement source listing from debuginfo (#2885) 2022-01-30 13:39:30 -08:00
fbsdutil pkg/proc: fix and improve freebsd register handling (#3019) 2022-05-31 16:04:36 -07:00
gdbserial cmd/dlv: Add flag to replay for rr onprocess pid (#3281) 2023-03-01 11:28:32 -08:00
internal/ebpf pkg/proc/internal/ebpf: Fix handling of entry / return (#3081) 2022-07-29 12:00:32 +02:00
linutil *: Change comments to match common Go standarts (#3221) 2022-12-14 08:56:07 -08:00
macutil fmt code (#2826) 2021-12-13 10:25:23 -08:00
native proc: support multiple functions with the same name (#3297) 2023-03-22 11:38:09 -07:00
test pkg/proc,service/test: refactor to strings.ReplaceAll (#3269) 2023-02-14 09:36:24 -08:00
winutil Add support for windows/arm64 (#3063) 2022-09-21 13:39:44 -07:00
amd64_arch.go proc: support multiple functions with the same name (#3297) 2023-03-22 11:38:09 -07:00
amd64_disasm.go pkg/proc: apply simplifycompositelit analysis fixes (#3236) 2023-01-03 08:13:28 -08:00
arch.go Add support for windows/arm64 (#3063) 2022-09-21 13:39:44 -07:00
arm64_arch.go proc: support multiple functions with the same name (#3297) 2023-03-22 11:38:09 -07:00
arm64_disasm.go *: Change comments to match common Go standarts (#3221) 2022-12-14 08:56:07 -08:00
bininfo.go proc: support multiple functions with the same name (#3297) 2023-03-22 11:38:09 -07:00
breakpoints.go proc: support multiple functions with the same name (#3297) 2023-03-22 11:38:09 -07:00
disasm.go proc/internal/ebpf: drop dependency on cgo (#3072) 2022-07-22 19:39:18 +02:00
doc.go *: run go1.19 'go fmt' on everything and fix problems (#3031) 2022-06-17 10:08:11 -07:00
dump.go proc: Fix typos in the comments (#3231) 2022-12-28 12:41:13 +01:00
dwarf_export_test.go proc: fix RFLAGS corruption after call injection on amd64 (#3002) 2022-05-05 08:41:40 -07:00
dwarf_expr_test.go proc: support multiple functions with the same name (#3297) 2023-03-22 11:38:09 -07:00
eval_go117.go proc: better error messages for ambiguous function calls/type casts (#2903) 2022-02-22 09:55:59 -08:00
eval_go118.go proc: better error messages for ambiguous function calls/type casts (#2903) 2022-02-22 09:55:59 -08:00
eval.go proc: support multiple functions with the same name (#3297) 2023-03-22 11:38:09 -07:00
fncall.go proc: fix escapeCheck infinite recursion if something can not be (#3311) 2023-03-27 11:21:01 -07:00
goroutine_cache.go *: switch to int64 for goroutine IDs (#3110) 2022-08-16 09:31:11 -07:00
i386_arch.go proc: support multiple functions with the same name (#3297) 2023-03-22 11:38:09 -07:00
i386_disasm.go pkg/proc: apply simplifycompositelit analysis fixes (#3236) 2023-01-03 08:13:28 -08:00
interface.go proc,proc/native: adds ability to automatically debug child processes (#3165) 2023-02-22 09:26:28 -08:00
mem.go pkg/proc: merge register data before writing to register (#2699) 2021-09-24 15:27:44 -07:00
moduledata.go proc: remove old method to resolve the type of an interface to a DIE (#3150) 2022-09-29 10:06:15 -07:00
pe.go proc: fix typo 'unkown' => 'unknown' (#2473) 2021-05-10 11:36:03 -07:00
proc_general_test.go Add support for windows/arm64 (#3063) 2022-09-21 13:39:44 -07:00
proc_linux_test.go proc/*: add launch option to disable ASLR (#2202) 2020-10-21 12:50:52 -07:00
proc_test.go proc: fix escapeCheck infinite recursion if something can not be (#3311) 2023-03-27 11:21:01 -07:00
proc_unexported_test.go proc: correctly truncate the result of binary ops on integers (#2463) 2021-05-17 10:31:05 -07:00
proc_unix_test.go proc,proc/native: adds ability to automatically debug child processes (#3165) 2023-02-22 09:26:28 -08:00
registers.go proc: support function call injection on arm64 (#2996) 2022-05-03 10:46:24 -07:00
scope_test.go proc,proc/native: adds ability to automatically debug child processes (#3165) 2023-02-22 09:26:28 -08:00
stack.go proc: Fix typos in the comments (#3231) 2022-12-28 12:41:13 +01:00
stackwatch.go proc,terminal: allow setting suspended breakpoints (#3154) 2022-10-04 08:07:05 -07:00
target_exec.go proc,proc/native: adds ability to automatically debug child processes (#3165) 2023-02-22 09:26:28 -08:00
target_group.go proc: fix automatic breakpoints visibility (#3300) 2023-03-14 14:23:25 -07:00
target.go proc: fix automatic breakpoints visibility (#3300) 2023-03-14 14:23:25 -07:00
threads.go :* Improve trace subcommand output (#3091) 2022-08-04 10:10:54 +02:00
types.go proc: remove unused parameter from resolveParametricType (#3276) 2023-02-15 11:35:37 -08:00
variable_test.go proc,proc/native: adds ability to automatically debug child processes (#3165) 2023-02-22 09:26:28 -08:00
variables_fuzz_test.go proc: fuzzing expression evaluator and variable loader (#3293) 2023-03-16 12:13:10 -07:00
variables_test.go proc: fuzzing expression evaluator and variable loader (#3293) 2023-03-16 12:13:10 -07:00
variables.go proc: limit maximum time.Time we try to format (#3294) 2023-03-16 12:12:20 -07:00
x86_disasm.go proc: remove duplicate Registers.Get implementations (#2415) 2021-04-28 10:00:26 -07:00