mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 07:47:29 +00:00
[GH-ISSUE #4614] [Bug] IDA startup failures identify internal operations instead of the requested analysis #2399
Closed
opened 2026-10-17 21:04:10 +00:00 by bsakaguchi
·
2 comments
No Branch/Tag specified
main
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
codex/procedure-reference-stacked
codex/kuna-independent-retry
codex/byte-search-overlay-coverage
codex/open-failure-target-receipt
codex/kuna-xref-evidence
codex/ghidra-ambiguous-procedure-recovery
codex/function-source-bundle
codex/trace-function-integration-prototype
codex/snapshot-source-closure
codex/recorded-evidence-array-pages
codex/evidence-recovery-redesign
codex/trace-feature-address-scope
codex/call-discovery-scope
codex/ghidra-literal-candidate-evidence
codex/decompile-directory-independent-retry
codex/retry-provenance-base
codex/value-flow-capability-experiment
codex/ghidra-containing-instruction
cursor/readme-discord-button-ef9f
dependabot/github_actions/actions/setup-node-7.1.0
dependabot/github_actions/actions/upload-artifact-7.0.2
dependabot/npm_and_yarn/npm-minor-and-patch-d8d97ce6df
codex/kuna-1989
fix/8559-native-ui-fixture-ownership
fix/8555-go-verifier-mcp-ownership
codex/provider-capability-recovery
fix/8642-rizin-target-stdin
codex/ghidra-memory-effect-scope
codex/ghidra-annotation-entry-selector
codex/ghidra-readonly-recovery
codex/ghidra-regex-verifier-recovery
codex/evidence-discovery-view-guidance
fix/8545-bulk-append-overflow
fix/8428-navigation-refusal-alternatives
codex/address-context-recovery
codex/matching-member-limitations
codex/unknown-scope-contract
codex/evidence-view-guidance
feat/8373-native-trace-views
codex/ghidra-snapshot-verifier-binding
codex/elf-export-visibility
codex/evidence-view-recovery
codex/native-reference-cli-help
codex/provider-candidate-observation-scope
codex/kuna-session-verification
codex/ghidra-switch-lifetime-guidance
codex/pseudocode-paging-discovery
codex/clarify-evidence-view-support
codex/kuna-xrefs-selector-recovery
codex/context-capacity-recovery
codex/evidence-closure-large-links
codex/same-function-evidence-identity
codex/ghidra-verifier-inspected-jdk
codex/audit-guided-workflows
codex/crash-prompt-retained-dossiers
codex/analysis-view-error-recovery
codex/kuna-verifier-target-selection
codex/ghidra-selected-project-call-coverage
codex/docs-native-analysis-scope
codex/ghidra-java-socket-boundary
codex/ghidra-retained-snapshot-verifier
codex/ghidra-search-inventory-facts
fix/8284-zero-argument-parameter-bindings
fix/8198-ui-action-handler-offset
fix/8257-elf-entry-label-identity
fix/8304-deferred-output-schema-projection
fix/8277-call-path-computed-target-uncertainty
fix/pr-8089-conflicts
fix/ci-static-duplicate-export
dependabot/npm_and_yarn/lint-staged-17.6.0
dependabot/github_actions/actions/download-artifact-8.0.2
dependabot/npm_and_yarn/write-file-atomic-8.0.0
dependabot/npm_and_yarn/canonicalize-5.1.0
dependabot/github_actions/actions/cache/restore-6.1.0
dependabot/npm_and_yarn/toon-format/toon-4.4.0
dependabot/github_actions/actions/deploy-pages-5.0.1
codex/review-fixes-pr-2403
codex/review-fixes-pr-2400
codex/process-terminal-width
codex/test-brittleness-cleanup
verify/7167-browser-connect-macos
fix/7167-browser-connect
feat/native-matching-allowance-setting
feat/browser-scenario-dry-run
test/managed-caller-parameters-20261024
codex/parser-fortythird-boundaries
fix/6926-pinvoke-platform-decorations-20261023
fix/6889-har-body-encoding-20261023
fix/6888-sqlite-schema-budget-20261023
fix/dependency-security-gates-6708
cursor/evidence-overwrite-rebase-b4ac
feat/4057-verify-native-exports
fix/windows-acl-observer-overhead-20261022
cursor/erlang-beam-restack-4476
cursor/pe-certificate-review-bf32
fix/6116-javascript-application-fs-errors
fix/6061-unmapped-runtime-script-unknown
feat/browser-scenario-summary
fix/pe-certificates
codex/verify-3407
cursor/rebase-5699
cursor/rebase-5352
cursor/rebase-5600
cursor/fix-cli-schema-omission-10a8
codex/audit-hopper-shutdown-reasons-20261021
fix/demangle-swift-omitted-record
fix/nib-boolean-value-types
cursor/cancellation-partial-observation-a5ac
fix/ib-object-limit-reasons
fix/electron-fuse-limit-advice
fix/kuna-doctor-dangling-cache
fix/fixed-budget-refusal-advice
fix/js-ipc-listener-dedup
fix/js-return-member-provenance
fix/dmg-integrity-retry-advice
fix/ida-doctor-readiness
fix/kuna-version-probe-output-drain
fix/legacy-swift-runtime-name-matching
fix/dylib-lazy-load-commands
fix/browser-scenario-startup-cancel
fix/swift-nested-punycode-classification
fix/compare-unselected-scopes
fix/objc-method-budget-coverage
fix/dmg-mounted-root-observations
audit/ci-tests-20261019-round2
release/6.7.0
fix/wabt-cleanup-retry-resolution
fix/electron-fuse-elf-pe-architecture
fix/native-plist-descriptor-ownership
fix/kuna-caller-cleanup-ownership
experiment/atomic-codemode-20261016
review/first-contributor-3776
fix/call-resolution-full-read-cycles
fix/member-mutation-selection-repeat
experiment/atomic-re-tools-20261015
perf/member-mutation-lazy-origins
perf/static-network-mutation-index
fix/hopper-startup-lifecycle
audit/3050-windows-proof-20261015
feat/windows-window-capture-2183
audit/3049-windows-proof-20261015
audit/3735-macos-fixtures-20261015
fix/batch-decompile-null-pseudocode
fix/kuna-inventory-honors-jobs
experiment/browser-codemode-tool-design-20261015
fix/hopper-clean-runtime-argv
codex/review-2049-27f1b367
review-fixes/pr-2787-routing
fix/3360-scoped-this-emitters
fix/3367-replaced-global-effects
fix/3838-compact-any-value-items
test/hopper-download-probe-20261015
codex/windows-runtime-creation-red-green-20261015
codex/windows-readonly-root-red-green-20261015
codex/windows-root-share-red-green-20261015
codex/exp-1685-win-mcp-startup
codex/bug-sweep-20261015
investigate/2190-windows-package-phases
investigate/3543-macos-cli-deadline
perf/3281-reverse-tools-feedback-quality
fix/3406-hopper-doctor-fixture
fix/3341-wrapper-require-test-context
fix/3301-owned-uninstall-fixtures
fix/3164-compiler-input-ownership
fix/pcap-cleanup-stdout-newline-20261014
perf/interface-builder-summary
codex/review-fixes-pr-1977
fix/ghidra-effective-jvm-platform
fix/docs-turkish-rust-link-20261013
fix/main-maintenance-ci-20261010
fix/recover-binary-session-process-effects
codex/review-fixes-pr-2457
codex/ci-required-cancellation-gate
fix/main-format-baseline-20261013
fix/setup-preserve-entry-fields
cursor/restore-main-checks-1ffc
fix/ghidra-bridge-hashmap-import
codex/shared-ci-jadx-json-default-20261013
codex/shared-ci-ghidra-test-groups-20261013
codex/shared-ci-java-fixture-format-20261013
codex/fix-intrinsic-invocation-boundaries
test/release-preflight-reusable-jobs
test/js-parameter-provenance-expectation
fix/linux-hopper-verification-current
test/2419-ghidra-elf-probe-size
followup/pr-1544-native-ida
codex/fold-pr-2230-contribution
docs/readme-responsible-use
fix/issue-2064
fix/issue-2050
fix/issue-2053
fix/issue-1968
fix/issue-1945
experiment/codemode-bridge-20261011
fix/tool-effects-negative-wording-1904-20261012
fix/1842-electron-interop-provenance
feat/recover-javascript-multi-input
refactor/website-i18n-prep
fix/nativeaot-pe-virtual-extent
fix/browser-verifier-ci-hang
fix/pe-resources-input-selection
docs/beginner-friendly-guides
docs/beginner-setup-guide
fix/javascript-analysis-worker-1563
fix/1649-ghidra-duplicate-names
fix/javascript-export-keys-integration-1369
test/maintenance-boundary-contracts-20261011
review/javascript-export-keys-1369
review/process-live-progress-1483
test/javascript-1495-growth-ratio
fix/ci-escape-timing
docs/normalized-terminal-geometry-1450
release/6.3.0
archive/release-6.3.0-pr1381
release/6.2.0
fix/electron-preload-dynamic-override
fix/javascript-self-referential-bundler-edges
release/6.1.0
cursor/grok-client-cherry-pick-0b56
feat/signature-posture
feat/dyld-shared-cache
feat/artifact-integrity-policy
feat/pkg-inventory
release/6.0.0
chore/sync-release-5.0.0
release/5.0.0
cursor/cloud-agent-node-787e
fix/javascript-xhr-open-endpoints
review/pr-711-realpath-fallback-wording
cleanup/replay-confinement
codex/test-suite-performance
codex/issue-foundations
codex/address-open-issues-2026-07-20
agent/javascript-vite-rollup-esbuild-adapters
agent/process-cleanup
agent/triage-integration
agent/unknown-commands-registry
feat/mcp-identity-metadata
morlvps/issue_cleanup
codex/installer-redesign
morl/roadmap-investigation-core
morl/roadmap-investigation-docs
release-please--branches--main--components--rea
rea-agents-6.8.0
rea-agents-6.7.0
rea-agents-6.6.0
experiment/atomic-codemode-wait-runtime-20261016
rea-agents-6.5.0
rea-agents-6.4.0
rea-agents-6.3.0
rea-agents-6.2.0
rea-agents-6.1.0
rea-agents-6.0.0
rea-agents-5.0.0
rea-agents-4.1.0
rea-agents-4.0.1
rea-agents-4.0.0
rea-agents-3.2.1
rea-agents-3.2.0
rea-agents-3.1.0
rea-agents-3.0.0
rea-agents-2.7.0
rea-agents-2.6.0
rea-agents-2.5.1
rea-agents-2.5.0
rea-agents-2.4.0
rea-agents-2.3.0
rea-agents-2.2.0
rea-agents-2.1.0
rea-agents-2.0.0
rea-agents-1.7.0
rea-agents-1.6.0
rea-agents-1.5.0
rea-agents-1.4.0
rea-agents-1.3.0
rea-agents-1.2.0
rea-agents-1.1.0
rea-agents-1.0.0
rea-agents-0.5.0
rea-agents-0.4.0
rea-agents-0.3.0
rea-0.2.1
rea-0.2.0
Labels
Clear labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
Mirrored from GitHub Pull Request
question
roadmap
triage
No labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
question
roadmap
triage
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
morluto/rea#2399
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @coygeek on GitHub (Oct 16, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/4614
Before submitting
Area
Native analysis or decompilation
Observed behavior
The public CLI command
rea decompile <binary> main --provider ida --jsonreturns a startup failure naming an internal operation instead of the requestedprocedure_pseudo_code. On both tested builds, an IDA headless profile missinglist_funcsproducesexecution_failurewithdetails.operation: "initialize".On the source build, stalled tool-catalog discovery and initialization also produce typed timeouts identifying
ida_mcp_catalogandida_mcp_connect. Those two identity failures do not reproduce on the published package, which returnsexecution_failureunder the requested operation instead. All startup cases fail before dispatching a provider tool call.The fixture also exercises busy-health waits as context. Both builds retain their documented busy-tool operation text. A follow-up health timeout preserves the completed decompiler reply as partial Evidence under
procedure_pseudo_code, with target binding explicitly unverified. This report does not classify the documented health-timeout representation as a bug or request a change to it. All observations use a simulated loopback MCP provider.Reproduction
npm ciandnpm run build:cached, and run this fixture from the checkout root. For the published package, runnpm install --prefix release --ignore-scripts --no-audit --no-fund rea-agents@6.5.0, change directory torelease/node_modules/rea-agents, and run the same fixture. Both roots containscripts/rea.mjs. Run it twice per build. Each CLI child receives a fresh HOME and TMPDIR and a whitelist environment. No IDA installation or external service is used.Read
startup, which omits onlylist_funcsfrom the advertised profile. It returnsexecution_failurenaminginitialize. The catalog and handshake timeout rows identify internal operations on the source build. The published package instead returns a genericexecution_failureunder the correct requested operation for those two timeout rows.Compare the
catalogRPC-refusal andsuccesscontrols, which identify the requested operation on both builds. Thepreandposthealth rows provide contextual observations of the documented busy-tool diagnostic. The first runs no lookup or decompile; the second retains the completed reply as partial Evidence. The fixture confirms that owned workers were closed.All seven rows completed twice per build. The fixture asserts current outputs, including the known build difference for startup timeouts. When checking restoration, change the
startupexpectation and the source build's two startup-timeout identity expectations to the caller's operation. Retain the health, category, diagnostic, partial-result and cleanup controls.Expected behavior
A startup failure returned for the accepted analysis request should retain its caller operation,
procedure_pseudo_code, while preserving auxiliary-stage diagnostics, missing tools, retryability, actual timeout budget, captured output and cleanup facts. The MCP contract says provider tools require their selected analysis runtime and that these failures are reported at the operation that needs it. The accepted analysis request triggers lazy IDA startup and needs that runtime.Fail closed on an incompatible profile or stalled initialization. Keep the startup failure classification, actual request budget and missing-tool diagnostics. The ordinary catalog-refusal control already reports the accepted analysis operation. Preserve the independently documented busy-health behavior and its retained partial Evidence.
Impact and scope
The observed defect changes a machine-readable operation identity during IDA startup. Callers inspecting
details.operationreceiveinitializefor a missing profile on both builds, or internal catalog/connection identities for typed startup timeouts on the source build. Each triggering startup sequence reproduced twice per build where noted. No provider tool call, target mutation, data loss or false complete result was observed in these startup failures. Real IDA incidence and downstream client consequences remain unknown.REA version
Current main source commit
d5be402fb3dbfc56ac9854c27b5538df20cc2437, package version 6.5.0, built from locked dependencies; separately installed published npm packagerea-agents@6.5.0. Both the npm registry and GitHub latest release identified that package as the latest published release.Runtime and platform
Node.js v24.18.0; Darwin arm64. The source build used repository-pinned npm 11.16.0 and Node. No real IDA engine was used.
Target and artifact context
A synthetic 64-byte ELF x86_64 header passes target admission. A loopback MCP fixture returns the generated input path and active owned-worker identity, one function and its pseudocode. It never executes the target or opens a real IDA database.
Interface
CLI
Earliest failure stage
Setup or provider admission
Relevant output or evidence
The fixture invokes
node scripts/rea.mjs decompile <generated-target.elf> main --provider ida --json. Meaningful fields agreed across both complete repetitions of each build:Child stderr was empty. For health cases, traces include
idb_open,idb_list, health reads,idb_close, and a final empty inventory. Only the post-operation case includeslookup_funcsanddecompile. Its partial raw result retainsint main(void) { return 42; }andpost_operation_identity_check: "started"; normalized target binding remainsnot_verified. The startup cases dispatch no tools/call.Source inspection explains public-command reachability. The composite provider opening health check has no instantiated IDA child. The requested analysis then starts that child lazily and reaches startup and the before/after health checks. See src/application/binary/CompositeProvider.ts:172 and src/ida/IdaSessionClient.ts:295.
Typed outcome or recovery expected
For the same missing-profile input on both builds, return a failure with
details.operation: "procedure_pseudo_code", retainexecution_failure, and preservemissing_tools: ["list_funcs"]. The source build's two startup timeouts should identify that same caller operation while retainingprovider_timeout,retryable: true,timeout_ms: 300, captured output and auxiliary-stage diagnostics. All startup failures must still stop before provider tool dispatch. The catalog-refusal and successful controls must retain their correct operation identities and results. Keep the health controls and follow-up partial Evidence behavior intact; changing their documented operation text is outside this report's requested correction.Analysis or suspected cause
Source-derived reasoning: the IDA session failure handler projects a generic transport adapter failure onto the accepted operation but returns existing typed analysis errors unchanged. Profile validation and typed connection/catalog timeouts enter that handler with internal operation identities. The published package lacks the source build's typed connection/catalog timeout conversion, which explains that observed difference. The missing-profile and typed startup-timeout cases concern attribution of the same selected-runtime admission failure, not whether startup should be rejected.
Additional context
Related #4597 concerns JEB and #4607 concerns Cutter. Their provider implementations are separate. The tested source already includes the JEB attribution fixes, which modify JEB code; the IDA failure handler remains unchanged. No linked fixing commit for the Cutter report was found.
The busy-health wait was introduced by PR #1778, which fixed transient busy responses being rejected as malformed and deliberately carried the busy-tool diagnostic in the internal operation text. That health-specific representation is documented behavior and is contextual evidence here. This report requests correction only for startup failures under the selected-runtime admission contract.
Live searches of open and closed issues and pull requests using IDA operation, attribution, caller, initialization,
server_health,IdaSessionClient,ida_mcp_catalog, andida_mcp_connectfound no matching caller-operation report. Existing partial-Evidence-profile and diagnostic-retention reports concern different results. Real IDA occurrence frequency, downstream client consequences and a practical real-engine workaround remain unknown. Only the CLI adapter was exercised.@morluto commented on GitHub (Oct 17, 2026):
Implemented in
8f65d7f256, pushed to main.Startup stays cached, while each accepted request receives its own typed failure with the caller operation.
details.diagnostics.startup_operationretains the original initialization/catalog/connection/database-open stage; existing profile diagnostics, timeout budgets, resource limits, output and recovery remain available. The original cached cause is unchanged. The redundant typed-error branch was removed. Documented busy-health operation text and post-operation partial Evidence remain covered.The same boundary audit found #4633: cancellation copied historical cleanup without a live completion dependency. Cancellation now binds to the exact source owner, so denied release remains incomplete and confirmed release clears the cancellation outcome, including release before wrapping.
Executed validation:
Bounded cost comparison: same completed public CLI missing-profile refusal through a loopback SDK supervisor; two alternating warm repeats per build plus separately recorded first processes. Baseline/candidate medians: elapsed 0.48933/0.47599 seconds, CPU 0.70581/0.70182 seconds, sampled peak process-family RSS 423,223,296/441,040,896 bytes, raw reply tokens 247/254 (cl100k_base). A full duplicate startup projection was rejected after measurement; the compact stage adds seven estimated tokens. No speed or memory improvement claimed. True cold, whole-agent, MCP/catalog/request/retry and native-engine costs remain unmeasured.
Scope: public CLI tests use a controlled loopback supervisor; cancellation/ownership controls use a controlled connection and actual cleanup lease. No native IDA engine or attached GUI was used, and no real-engine support claim is added. Heavy Qodo/profiler jobs were not restarted.
@coygeek commented on GitHub (Oct 18, 2026):
Closing as addressed on
mainby 8f65d7f25. IDA startup failures now identify the accepted analysis operation while retaining startup-stage diagnostics, missing-tool facts, actual timeout budgets and cleanup ownership. I verified the committed source and regression coverage; I have not rerun the runtime reproduction.