mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #4601] JavaScript analysis: 6.3.0 stalls on a 277 KB webpack factory and returns exit 0 for Set-limit failures; 6.5.0 still loses the factory's semantic analysis #2387
Closed
opened 2026-10-17 21:04:02 +00:00 by bsakaguchi
·
2 comments
No Branch/Tag specified
main
codex/procedure-reference-stacked
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
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#2387
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 @shyamsivakumar on GitHub (Oct 16, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/4601
Summary and current-release check
Two JavaScript-analysis failures were recorded on
rea-agents6.3.0:@qodo/command@0.36.0,dist/cli.js. The isolated input is 276,777 bytes, including an export wrapper. A fresh public-tarball reproduction on 2026-10-16 produced no stdout and remained atParsing and projecting module.js (1/1)until an external 120-second cap killed it.RangeError: Set maximum size exceeded. The CLI returns anexecution_failureJSON envelope but exits 0 in the recorded application runs.Newer releases exist: npm reports 6.4.0 (published 2026-10-11) and latest 6.5.0 (published 2026-10-14). 6.4.0's release notes describe reassignment-loop fixes and owned JavaScript workers with heap/time limits and retained partial results. 6.5.0's notes describe further JavaScript relationship fixes.
Important distinction: 6.5.0 mitigates the unbounded parent-process stall in this reproduction, but did not successfully analyze the isolated factory's semantics. A fresh 6.5.0 run returned exit 0 and partial Evidence after 16.01 seconds, with this limitation:
Its syntax statistics show 1 parsed JavaScript file, 50,823 visited AST nodes and 0 parse failures; semantic coverage is
partial,truncated: true, with 0 retained relations in every reported semantic family. Reported worker heap limit: 1,098,907,648 bytes; worker timeout: 300,000 ms. The outerNODE_OPTIONS=--max-old-space-size=24576did not replace that reported worker limit. Thus newer failure containment has shipped, but a complete analysis fix for this public input is not established. The original browser-bundle Set-limit cases were not re-run on 6.5.0.Environment
Recorded and fresh reproduction environment:
Apple silicon / arm64; original investigation reports 48 GB RAM. Original analysis used
NODE_OPTIONS=--max-old-space-size=24576. Source maps were excluded. Inputs were parsed as inert text; the Qodo CLI and its module factory were never executed.6.5.0 was invoked separately through a version-pinned npm execution; the installed 6.3.0 executable was not upgraded.
Smallest public reproduction: isolated webpack factory
No proprietary source is attached or quoted. These commands reconstruct the input locally from the public npm tarball, without running its lifecycle scripts or target code.
tooling/and the tarball are outsideinput/so REA sees only the isolated file.Expected identity checks, freshly confirmed from the public download:
The factory expression itself is 276,738 bytes; the 276,777-byte figure includes the export wrapper and newline.
Fresh observed output, 2026-10-16
The extraction used the installed REA package's
@babel/parser8.0.4; the commands above install the same parser version into an isolated tooling directory. No target source was printed.6.3.0 command actually run:
An external supervisor capped this at 120 seconds and sent SIGKILL to the owned process group. Elapsed 120.15 seconds; process return code
-9in the supervisor, not a natural CLI exit status; stdout 0 bytes. Last stderr progress:6.5.0 command actually run:
Elapsed 16.01 seconds including npm startup/download; exit 0; stdout 32,358 bytes, valid Evidence JSON. Final progress says
Application graph and Electron boundaries reconstructed, but the Evidence explicitly reports the semantic worker heap exhaustion described above. This is not a complete semantic-analysis success. These are single diagnostic observations, not benchmark results. Both runs and public-input reconstruction completed within ten minutes. No other original target was re-run.Problem 1: recorded stall localization
The original
dist/cli.jsis 34,947,271 bytes. A whole-package run stopped atParsing and projecting package/dist/cli.js (59/805)for approximately 11 hours before the investigator stopped it. The complete file alone also stalled.The note records a decomposition of the webpack module table:
0x175edwas the remaining unresolved input; the stuck 47-factory batch had also remained busy for about 24 minutes.Those historical decomposition results are reported by the investigation note; its large generated outputs were removed before this report. The fresh hash-matched single-factory run independently establishes noncompletion within 120 seconds, not an infinite loop or a specific complexity bound.
Retained stack samples, restricted to analyzer-side frames
The saved macOS samples do not contain symbolicated REA JavaScript function names or source locations. With Node/V8/OS frames omitted, the relevant whole-file sample contains only this unresolved chain:
The stuck factory-batch sample similarly contains:
[INFERENCE] These are analyzer-side JIT frames because REA was performing static analysis and did not execute the target. The samples themselves do not identify them as particular REA functions; no named REA-only stack can honestly be supplied from this evidence. There is also no retained JavaScript exception stack for the Set-limit envelope.
For context only, the native samples show active allocation/GC and Set lookup work for the factory batch, and WeakMap rehashing for the whole file. That supports resource-heavy active computation rather than a thread sleeping on a lock. It does not prove an ever-growing worklist, the owning Set/WeakMap, a shared root cause, or mathematical nontermination. No target-owned stack/source is included here.
Problem 2: Set maximum size exceeded, with CLI exit 0
The retained single-file CodeRabbit result contains this diagnostic, with local paths removed:
The note and retained coverage/timing records identify these 6.3.0 failures:
webview/build/assets/index.js(4/5)run-viewer-static/assets/index-CuIYb3sK.js(5/13)@qodo/command@0.36.0, excludingdist/cli.jsdist/webapp/dist/assets/index-DK_3kaHQ.js(612/804)The retained timeline records exit=0 for each of those application runs despite the analysis failure. The CodeRabbit browser bundle alone, with package metadata, also produced the retained Set-limit envelope: 1,139.08 seconds and 9,651,833,912-byte peak memory footprint. Its individual exit code is stated in the note's general failure description, but the single-file timeline does not independently record an exit value.
This establishes that the failure need not depend on accumulated analysis across hundreds of files. It does not establish which internal Set grows, whether the three packages share a cause, or that every timed-out Momentic single-file run would eventually throw this exception. In particular, the Momentic single-file 60-minute timeouts are noncompletion observations, not observed Set-limit throws.
A second public-tarball candidate for reproducing the browser failure is available in the same Qodo tarball:
Not re-run: this browser-file-only recipe is a candidate based on the recorded failing filename, not a fresh verified minimal Set-error reproduction. The smallest freshly reconstructed and tested public reproduction in this report is the factory input for problem 1. CodeRabbit and Momentic source/assets are not attached or quoted.
Expected versus actual
execution_failureshould produce a nonzero CLI exit status. Actual on the recorded 6.3.0 application failures: the JSON reports failure while the process exits 0. This is distinct from a deliberately returned partial Evidence result on 6.5.0; I am not claiming that every partial result should be a process error.Duplicate search and relationship to existing fixes
Checked open and closed issues on 2026-10-16 using:
No exact
Set maximum sizeissue was returned. The last 100 issues contained no matching JavaScript report; a broader text match onstallalso found unrelated Ghidra/draw.io issues. The full-history individual searches found related reports, so this is not a claim that REA has no known large-bundle performance bugs:Set maximum size exceededplus exit-0 envelope here.The 6.4.0/6.5.0 notes establish shipped improvements and failure containment, not a successful complete semantic analysis of this input. Please link/merge this report into an existing issue if the public factory exercises an already-tracked cause.
@morluto commented on GitHub (Oct 16, 2026):
Independent current-main reproduction at
d74e72406: the public tarball, full CLI file and extracted 276777-byte factory match all three reported SHA-256 identities. Public CLI analysis on pinned Node24.18.0 returned partial Evidence in one diagnostic run (8.32s), reporting semantic worker heap exhaustion with zero retained semantic relations. No package scripts or target code executed. The AST has50823 nodes and zero getters/classes, so #3839's getter issue is separate for this input.Per the maintainer's request, Flameox CPU/allocation profiling now covers the actual semantic analyzer from a clean
d74e72406checkout. Two separate2.5-second windows were deliberately stopped before OOM:completeExpansion:92/2057 (4.5%).markValue:117/2057 (5.7%). GC:162/2057 (7.9%).completeExpansion261.9MB (5.7%). This is estimated allocation traffic, not retained heap or peak RSS.Source-derived next experiment: returned-reference resolution copies initializer-history Sets and retains blocker-context antichains per AST node/path. Runtime costs point here, but do not yet prove a causal fix. Separate mutation instrumentation observed one write queue reach168391 entries with retained histories of38-40 entries before a256MiB diagnostic heap failure. Attempts to share depth tries and release consumed queue entries still lost semantic facts; those source edits were discarded and no improvement is claimed.
The first full Flameox capture OOMed before Node flushed a CPU artifact. A bounded inspector window produced native profiles, which Flameox validated/ranked and preserved. CPU SHA-256:4a93ef6b30ebf1aa87d7abfd29015f1fe2a5ad47ebb4dd36c900f8b2cda27bb4. Heap profile SHA-256:7522ab6d29d70e8b15e9fcefe2273c2b62a3a9098f5e2c06117027fd284e4a1a. Capture/store limitations are retained locally: idle parent excluded, default-store format unsupported, allocation capture exceeded its writable-output bound but its full local native artifact was separately validated and preserved without recapture.
These are diagnostic windows, not whole-task benchmarks, a completed semantic analysis, or a fixed bug. Historical6.3 Set-capacity/exit-status cases remain unverified. Investigation continues.
@SII-YDD commented on GitHub (Oct 25, 2026):
AI-assisted reproduction on the unmodified
mainsnapshotbb17e90f27dc8908c1c91c05055679678768c266(2026-10-25). The public tarball, originalcli.js, and extracted 276,777-byte factory match all three SHA-256 values in this report; npm archive integrity was also verified. No Qodo target code or Qodo package scripts were executed.Public CLI:
node scripts/rea.mjs analyze-javascript-application /fixtures/4601 --artifact-format directory --format json --max-heap-mb 1024 --analysis-timeout-ms <budget>.provider_timeout, exit 1provider_timeout, exit 1Both retain partial Evidence with the source digest, zero completed parsed files and zero semantic relations. There were no observed OOM events; owned work settled. These finite timeouts do not establish an infinite loop.
A separate 15-second in-process diagnostic, deliberately stopped after saving its CPU profile, finished parsing and binding collection, then ambient indexing (~2.39 s), and remained in member-mutation indexing. Of 7,275 samples, the self shares were
position19.67%,statementPosition8.82%, andsemanticEffectTiming8.12%. This is not a completed-task benchmark or proof of a causal optimization. Open #2041 already proposes changes to this timing/ancestry owner, so I did not write a competing cache patch or test that PR's implementation.Real stdio MCP, with actual advertised output schemas and the shared verifier helpers, also returned the 60-second timeout; on that same connection, ping, retained-partial summary readback, a successful small-source analysis, and another ping passed. The retained Evidence ID matches the CLI's 60-second partial. Inputs remained unchanged; the client/server and private temporary resources were released.
Host: Linux arm64, pinned Node 24.22.1/npm 11.16.0, fresh offline container per CLI case, 2 CPUs, 6 GiB hard family limit/no swap, 3.5 GiB early stop, CLI parent heap 3 GiB. CPU includes container helpers; peak includes file cache. OS caches were not flushed and other host load was unmeasured. No completed large-file IR equivalence, accuracy, token reduction, or before/after performance improvement is established.