From 5bfcfa8f01d6f0e0d7535639eaa341fcce9fd9b8 Mon Sep 17 00:00:00 2001 From: blasty Date: Thu, 9 Jul 2026 11:45:45 +0200 Subject: 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) --- docs/PAGING_FINDINGS.md | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'docs') 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 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 -- cgit v1.3.1-sl0p