[GH-ISSUE #5630] [Bug] IL2CPP reader occupancy is reported as a non-retryable memory failure #3410

Closed
opened 2026-10-31 00:40:04 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @cursor[bot] on GitHub (Oct 20, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/5630

Before submitting

  • I searched the open and closed issues for a related report.
  • I removed credentials, tokens, private paths, and sensitive target data.

Area

Native analysis or decompilation

Observed behavior

Source-derived. While Il2cppMetadataProvider is already inspecting, a second inspect returns AnalysisResourceConstraintError with resource: "memory", message "Only one IL2CPP metadata inspection is admitted per reader.", and limits { maximum_concurrent_inspections: 1 }. No remediationAction is set.

Memory constraints project as retryable: false with "Review the reported worker memory limits and available host memory." Waiting for the active inspection can admit the second request. Adding host memory does not. SQLite uses resource: "capacity" and tells the caller to retry after the active inspection (src/sqlite/SqliteDatabaseProvider.ts).

A focused provider test observed the corrected capacity projection after the fix. The original memory classification is from the constructor, not from a CLI replay.

Reproduction

NOT_ENOUGH_INFO for a CLI replay. The constructor is Il2cppMetadataProvider.inspect when #inspecting is already true (src/il2cpp/Il2cppMetadataProvider.ts).

Expected behavior

Report occupied reader capacity as retryable, and tell the caller to retry after the active inspection on that reader completes. Do not recommend worker or host memory changes.

Impact and scope

One in-process reader. Real-world frequency is unknown. The refusal itself is intentional.

REA version

Source on main during this audit (6.7.0 line).

Runtime and platform

Node test runner for the provider seam. CLI/MCP were not replayed.

Target and artifact context

The existing provider test uses a generated IL2CPP metadata fixture. No external game binary was used.

Interface

Provider result, shared by CLI and MCP.

Earliest failure stage

Provider admission

Relevant output or evidence

Source constructor plus the SQLite occupancy contrast cited above.

Typed outcome or recovery expected

resource_constraint, details.resource: "capacity", retryable: true, recovery that names the active inspection.

Analysis or suspected cause

Occupancy was given the memory resource kind, so the shared projection selected the host-memory fallback and non-retryable disposition.

Additional context

Distinct from #5460, which is the fixed complete-report allowance.

Originally created by @cursor[bot] on GitHub (Oct 20, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/5630 ### Before submitting - [x] I searched the open and closed issues for a related report. - [x] I removed credentials, tokens, private paths, and sensitive target data. ### Area Native analysis or decompilation ### Observed behavior Source-derived. While `Il2cppMetadataProvider` is already inspecting, a second `inspect` returns `AnalysisResourceConstraintError` with `resource: "memory"`, message "Only one IL2CPP metadata inspection is admitted per reader.", and limits `{ maximum_concurrent_inspections: 1 }`. No `remediationAction` is set. Memory constraints project as `retryable: false` with "Review the reported worker memory limits and available host memory." Waiting for the active inspection can admit the second request. Adding host memory does not. SQLite uses `resource: "capacity"` and tells the caller to retry after the active inspection (`src/sqlite/SqliteDatabaseProvider.ts`). A focused provider test observed the corrected capacity projection after the fix. The original memory classification is from the constructor, not from a CLI replay. ### Reproduction NOT_ENOUGH_INFO for a CLI replay. The constructor is `Il2cppMetadataProvider.inspect` when `#inspecting` is already true (`src/il2cpp/Il2cppMetadataProvider.ts`). ### Expected behavior Report occupied reader capacity as retryable, and tell the caller to retry after the active inspection on that reader completes. Do not recommend worker or host memory changes. ### Impact and scope One in-process reader. Real-world frequency is unknown. The refusal itself is intentional. ### REA version Source on `main` during this audit (6.7.0 line). ### Runtime and platform Node test runner for the provider seam. CLI/MCP were not replayed. ### Target and artifact context The existing provider test uses a generated IL2CPP metadata fixture. No external game binary was used. ### Interface Provider result, shared by CLI and MCP. ### Earliest failure stage Provider admission ### Relevant output or evidence Source constructor plus the SQLite occupancy contrast cited above. ### Typed outcome or recovery expected `resource_constraint`, `details.resource: "capacity"`, `retryable: true`, recovery that names the active inspection. ### Analysis or suspected cause Occupancy was given the memory resource kind, so the shared projection selected the host-memory fallback and non-retryable disposition. ### Additional context Distinct from #5460, which is the fixed complete-report allowance.
Author
Owner

@matbrgz commented on GitHub (Oct 20, 2026):

Cross-referencing with canonical issue #5504 and siblings #5628, #5631, #5632. Addressed by maintainer PR #5633 regarding IL2CPP occupancy and resource-constraint classification. Cataloged under Cluster AJ in consolidation tracker #4330.

<!-- gh-comment-id:6297496823 --> @matbrgz commented on GitHub (Oct 20, 2026): Cross-referencing with canonical issue #5504 and siblings #5628, #5631, #5632. Addressed by maintainer PR #5633 regarding IL2CPP occupancy and resource-constraint classification. Cataloged under Cluster AJ in consolidation tracker #4330.
Author
Owner

@morluto commented on GitHub (Oct 21, 2026):

Closing as fixed on main by github.com/morluto/rea@ef59174c1e, retained at 67a6477f01.

An occupied but open IL2CPP reader now reports retryable capacity with active-inspection guidance. Closing or closed readers stop admission and report non-retryable capability unavailable. Targeted provider regressions distinguish those states.

This audit inspected the current producer, regression source, issue discussion and main ancestry. Tests/runtime reproductions were not rerun, and no additional real-provider or platform coverage is implied.

<!-- gh-comment-id:6324338803 --> @morluto commented on GitHub (Oct 21, 2026): Closing as fixed on main by https://github.com/morluto/rea/commit/ef59174c1edd6ed9adb0722b86a5b9a57217e310, retained at 67a6477f011ae358fc333e5a6e26c86d932654ed. An occupied but open IL2CPP reader now reports retryable capacity with active-inspection guidance. Closing or closed readers stop admission and report non-retryable capability unavailable. Targeted provider regressions distinguish those states. This audit inspected the current producer, regression source, issue discussion and main ancestry. Tests/runtime reproductions were not rerun, and no additional real-provider or platform coverage is implied.
Sign in to join this conversation.
No milestone
No project
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#3410
No description provided.