diff options
| author | user <user@clank> | 2026-07-31 09:47:15 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-07-31 09:47:15 +0200 |
| commit | 0635d85d23ec04a130bcacb2f25cd74d680f4ef7 (patch) | |
| tree | dc40ee28c677dfef28fd84bf2157e3de778d67cb /experiments/fibonacci.o | |
| parent | rpc: stop lying to the driver about renames, modals and teardown (diff) | |
| download | ida-tui-0635d85d23ec04a130bcacb2f25cd74d680f4ef7.tar.gz ida-tui-0635d85d23ec04a130bcacb2f25cd74d680f4ef7.tar.xz ida-tui-0635d85d23ec04a130bcacb2f25cd74d680f4ef7.zip | |
rpc: a navigation that timed out reported success and corrupted the next edit
goto/open ran `settle(app, pred, timeout)` and threw the result away. On a large
database the listing build routinely outruns the default 20 s, so the verb
returned a normal snapshot while the view had not moved. Every subsequent
rename/comment then applied to wherever the caller *used* to be.
Reproduced on a live pane against a 4 MB Go binary: `goto 0x1002019b0`
returned ok with the view still at 0x100001000, and the following
`rename main_inflate_zlib` renamed internal/abi.BoundsDecode instead — then the
rename's own snapshot showed `main_inflate @ 0x1002019b0`, because by the time
it was taken the goto had finally landed. Success reported, right-looking
readback, wrong function edited, and it survived a save.
This is what made an agent session stamp net_writeFull onto main_usage and
conclude the tooling was flaky.
goto/open now raise TimeoutError naming the target and where we actually are,
suggesting a larger timeout=. _press() does the same for follow/toggle_view/
hex/xrefs/structs, which had the identical "predicate ignored" shape.
tests/test_scenarios.py: 212 passed, 0 failed.
Diffstat (limited to 'experiments/fibonacci.o')
0 files changed, 0 insertions, 0 deletions
