fix: search safe Windows dependency directories for modules - #26
Conversation
Tiny Sweeper reviewTiny Sweeper reviewed this change across 6 lane(s) and found 2 active actionable finding(s). Detailed lane evidence and any incomplete work are listed below. State: Ready for maintainer review Review snapshot
Completeness: Complete What changedThe review could not produce a supported behavioral summary; inspect the cited changed surface and lane details below. FeaturesNone identified with supported citations. TestsNo supported feature-to-test mapping was produced. Test execution is not inferred. Findings
Resolved this pass
Before mergeNone. How this fits togetherflowchart LR
n0["gate_descriptor"]:::impacted
n1["load"]:::impacted
n2["open"]:::impacted
n3["symbol"]:::impacted
n4["..._refuses_missing_and_nul_containing_paths"]:::impacted
n5["Handle"]:::impacted
n1 -->|calls| n0
n1 -->|calls| n2
n1 -->|calls| n3
n2 -->|uses| n5
n3 -->|uses| n5
n4 -->|calls| n1
n4 -->|tests| n1
n4 -->|calls| n2
n4 -->|tests| n2
classDef changed fill:#0d4429,stroke:#238636,color:#e6edf3
classDef impacted fill:#161b22,stroke:#6e7681,color:#c9d1d9
classDef flagged fill:#5a1e02,stroke:#d93f0b,color:#ffffff
classDef blocking fill:#67060c,stroke:#f85149,color:#ffffff
Agent review detailscritique
security
tests
commits
description
e2e
Evidence and run details
|
|
Warning Review limit reached
This review includes 2 billable files and costs up to $0.50. Or wait 55 minutes for your next included review. View limit detailsLimit details: You’ve used the included review currently available. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (2)
Comment |
There was a problem hiding this comment.
Requesting changes: 1 lane(s) blocking, worst finding is high.
Fix or reply to the findings below and push. The next review clears this automatically once they are gone — you should not need to dismiss anything by hand.
$0.0035 · 132,739 in / 10,830 out · 8,911 cached (7%) · ladder/vectors, gpt-5.6-luna, deepseek-v4-flash · 165 embedded
critique: $0.0021 · 78,933 in / 3,866 out · 4,054 cached (5%) · gpt-5.6-luna, deepseek-v4-flash
security: $0.0008 · 29,739 in / 874 out · 1,785 cached (6%) · gpt-5.6-luna
tests: $0.0003 · 15,119 in / 980 out · 2,048 cached (14%) · deepseek-v4-flash
description: $0.0001 · 6,765 in / 1,120 out · 1,024 cached (15%) · deepseek-v4-flash
There was a problem hiding this comment.
The previously-blocking findings are resolved. Clearing the changes request.
$0.0035 · 142,405 in / 8,755 out · 17,068 cached (12%) · ladder/vectors, gpt-5.6-luna, deepseek-v4-flash · 173 embedded
critique: $0.0022 · 87,184 in / 3,238 out · 9,914 cached (11%) · gpt-5.6-luna, deepseek-v4-flash
security: $0.0007 · 30,465 in / 444 out · 3,570 cached (12%) · gpt-5.6-luna
tests: $0.0003 · 15,459 in / 1,429 out · 2,048 cached (13%) · deepseek-v4-flash
description: $0.0002 · 6,972 in / 1,629 out · 1,536 cached (22%) · deepseek-v4-flash
| return Err(Error::module_refused( | ||
| path, | ||
| "dynamic loader rejected the artifact", | ||
| format!("dynamic loader rejected the artifact (Windows error {code})"), |
There was a problem hiding this comment.
Limit the Win32 error-code claim to artifact-load failures
The error code is captured only when LoadLibraryExW fails. A module can also be refused later when GetProcAddress cannot find a required ABI symbol, but that path still returns a generic refusal without including the Win32 code. Any documentation or diagnostic guarantee covering all Windows loader refusals therefore remains inaccurate; limit the claim to artifact/dependency loading failures or include the code for every relevant refusal.
[RULE] inaccurate-documentation ·
Summary
Why
OpenHuman 0.64.0 production reports Sentry issue 36653 for
tinyconnectors.dllon Windows, with other modules failing on the same machine.LOAD_LIBRARY_SEARCH_DLL_LOAD_DIRalone excludes System32 from dependency resolution. The published DLL imports system and VC runtime libraries.LOAD_LIBRARY_SEARCH_SYSTEM32adds that trusted location without searching application or registered user DLL directories.Verification
cargo fmt --all -- --checkcargo test --locked -p tinybus --no-default-features --features modules,macros(327 passed; 10 ignored before the follow-up restriction)cargo test --locked -p tinybus --no-default-features --features modules,macros module::loader::tests(2 passed after the follow-up restriction)