diff options
| author | blasty <blasty@local> | 2026-07-09 11:45:45 +0200 |
|---|---|---|
| committer | blasty <blasty@local> | 2026-07-09 11:45:45 +0200 |
| commit | 5bfcfa8f01d6f0e0d7535639eaa341fcce9fd9b8 (patch) | |
| tree | 9794c017a5d1ba9f112ff1f37c40cff737836b0a /docs | |
| parent | stress paging on 10k-func binary; document scale constraints (diff) | |
| download | ida-tui-5bfcfa8f01d6f0e0d7535639eaa341fcce9fd9b8.tar.gz ida-tui-5bfcfa8f01d6f0e0d7535639eaa341fcce9fd9b8.tar.xz ida-tui-5bfcfa8f01d6f0e0d7535639eaa341fcce9fd9b8.zip | |
domain/paging layer: FunctionIndex, block-cached DisasmModel, decompile, resolve
- Program: model registry + small prefetch pool; cache invalidation hooks
- FunctionIndex: lazy pagination (advance by len, clamp page=500), filter globs,
viewport windows; full 10,092-func enumerate matches survey in ~3.1s
- DisasmModel: block-cached windowed disasm (256/block), forward+back prefetch,
cached instruction totals; deep window revisit 196ms -> 0ms (cache proven)
- Decompilation: truncation-aware, hard-failure surfaced as data (monster funcs)
- resolve(): int/hex/symbol via lookup_funcs (string-array query shape)
- tests/test_domain.py: 17/17 on both ls (~290 funcs) and libcrypto (10k+52k-insn)
- smoke_client no longer assumes 'main' exists (works on libraries)
- doc: idle_ttl worker self-exit finding ("not reachable" needs re-open)
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/PAGING_FINDINGS.md | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/docs/PAGING_FINDINGS.md b/docs/PAGING_FINDINGS.md index 1c7abff..33cb2e6 100644 --- a/docs/PAGING_FINDINGS.md +++ b/docs/PAGING_FINDINGS.md @@ -93,6 +93,16 @@ fall back to the disassembly view or show an error panel. Normal decompile bodies are server-truncated with a `[N chars total]` marker (still to be solved for full-body display — see Phase 2). +## Workers self-exit when idle (`idle_ttl_sec`, default 600s) + +A headless idalib worker self-exits after ~10 min idle. Its session then lingers +in `idb_list` but calls fail with `"Worker for session <id> is not reachable"` +(distinct from `"Session not found"`). Recovery differs: this needs a fresh +`idb_open` of the same `input_path` (new worker), not just a db re-resolve. The +TUI should (a) raise `idle_ttl_sec` when opening, and/or (b) detect +"not reachable" and transparently re-open. Currently surfaced as a clean +`IDAToolError`; auto-reopen is a TODO for the app layer. + ## Writable path requirement (operational) `idb_open` writes the `.i64` next to the input binary, so the path must be |
