Repository navigation
test: audit ASAN quarantine lists; remove 77 stale entries - #34741
Conversation
Audited every [ASAN] entry in test/expectations.txt and every entry in test/no-validate-exceptions.txt against a release-asan build at 9dc6c37, running each under four configs (bare asan / +validateExceptionChecks / +LSAN / full CI) and verifying clean results 3x. expectations.txt (11 removed): No longer crash under bare ASAN; worker_threads, worker_destruction and fs.watch.test.ts fail only under BUN_DESTRUCT_VM_ON_EXIT (already covered by no-validate-leaksan.txt, fs.watch.test.ts added there). The fs-watch node-ported tests, test-worker-unref-from-message-during-exit, and test-net-error-twice are stable-clean under full CI config. cli/test/parallel and isolation now finish in <25s (were TIMEOUT). bun-write-leak passes its leak assertion. no-validate-exceptions.txt (63 lines removed): 60 entries pass 3x under validateExceptionChecks=1, plus two deleted files (bun-repl.test.ts, system-ca/test-native-root-certs.test.mjs) and one empty section header. no-validate-leaksan.txt: Add fs.watch.test.ts (5s test-body timeout under BUN_DESTRUCT_VM_ON_EXIT, no leak report). Remove the three fs-watch node tests (stable-clean 5x under LSAN).
|
Updated 6:24 PM PT - Jul 19th, 2026
❌ @robobun, your commit 91e7d29 has 1 failures in
🧪 To try this PR locally: bunx bun-pr 34741That installs a local version of the PR into your bun-34741 --bun |
|
Warning Review limit reached
Next review available in: 4 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (3)
Comment |
|
x64-asan lane is green (all 20 shards passed, no retries) in build 75887, so every unquarantined test held. The red on the build is 9 tests all tagged Ready for review. |
Brings in #35002 (remove ~39k lines of dead Rust) and its follow-ups (#35019, #35052, #35152, #35225, #35293, #35326). The binary-size check compares against current main; this branch was 137 commits behind, so it still carried the dead code main dropped and registered as +630KB..+1.7MB on x64 while aarch64 linux showed -513KB/-601KB (different dead-code elimination outcomes per target). This stack's own native contribution is 19 files / +392 -45 lines; src/js is net -977 lines (domain.ts +692 vs fast-utf8-stream.ts -856 etc). Also: drop the hoisted pbkdf2 .bind handlers back to closures (review nit), and take main's expectations.txt since #34741 audited the stale ASAN entries.
Audited every
[ ASAN ]entry intest/expectations.txtand every entry intest/no-validate-exceptions.txtagainst a release-asan build at 9dc6c37. Each test was run under four configs (bare ASAN / +validateExceptionChecks / +LeakSanitizer / full CI), and every removal candidate was re-verified 3x.test/expectations.txt(11[ ASAN ]entries removed)No test in this file reproduces an AddressSanitizer heap error anymore. Removed entries:
worker_threads/worker_threads.test.tsno-validate-leaksan.txtworker_threads/worker_destruction.test.tsBUN_DESTRUCT_VM_ON_EXIT→ stays inno-validate-leaksan.txtnode/watch/fs.watch.test.tsBUN_DESTRUCT_VM_ON_EXIT→ added tono-validate-leaksan.txttest-worker-unref-from-message-during-exit.jstest-fs-watch.jstest-fs-watch-recursive-watch-file.jstest-fs-promises-watch.jscli/test/parallel.test.tscli/test/isolation.test.tsbun/io/bun-write-leak.test.tstest-net-error-twice.jsLeft in place: the two
transfer-terminateentries added earlier today (#34686, known ~1/4000 flake); the next-pages / next-auth / napi / inspect / tls-sql / spawn / type-export entries (still fail under at least one config or could not be verified locally); the four[ LEAK ]entries that hit their 5s test-body timeout under ASAN.test/no-validate-exceptions.txt(63 lines removed)60 entries now pass 3x under
BUN_JSC_validateExceptionChecks=1on a release-asan build, plus 2 entries for files that no longer exist (cli/install/bun-repl.test.tsremoved in fa3a30f,node/test/system-ca/test-native-root-certs.test.mjs), plus one orphaned section header.The
vendor/elysia/*entries are left as-is (repo is cloned in CI viatest/vendor.json, not present locally).test/no-validate-leaksan.txtAdded
test/js/node/watch/fs.watch.test.ts(test-body timeout underBUN_DESTRUCT_VM_ON_EXIT, no sanitizer report). Removedtest-fs-watch.js,test-fs-watch-recursive-watch-file.js, andtest-fs-promises-watch.js(stable clean 5/5 under LSAN).Remaining unchecked-exception sites in Bun code
The still-failing entries in
no-validate-exceptions.txtcluster around these throw → unchecked pairs insrc/jsc/:NapiClass.cpp:120finishCreationJSObject::defineOwnNonIndexPropertyrequire-cache.test.tsnapi_create_functionnapi.cpp:954napi_set_named_property:598 etc.defaultBunSQLObjectBunObject.cpp:319BunObject.test.ts,import-meta.test.js,resolve.test.tsJSObject::putInlineSlowProcess_functionDlopenBunProcess.cpp:3974_object_factory,5_function_factoryjsStringjsFunctionWrapNodeModuleModule.cpp:220node-module-module.test.jsjsSubstringjsFunctionNodeModuleModuleConstructorNodeModuleModule.cpp:172module-resolve-filename-paths.test.jsisArraySlowInlinedetermineSpecificTypeErrorCode.cpp:348isArray-proxy-crash.test.tsimportModuleInnerNodeVM.cpp:303moduleLoaderImportModuleInnerNodeVM.cpp:1688test-vm-module-referrer-realm.mjsJSGenericTypedArrayView::createjsPublicKeyObjectPrototype_export:40node-crypto.test.jsconvertDictionaryToJSJSURLPatternInit.cpp:148convertURLPatternInputToJSJSURLPatternResult.cpp:89urlpattern.test.tsnormalizeCryptoAlgorithmParametersSubtleCrypto.cpp:135JSDOMPromiseDeferred::reject:194/:159evaluateWithScopeExtensionJSInjectedScriptHost.cpp:120...PrototypeFunctionEvaluateWithScopeExtension:275inspect.test.ts(WebKit)JSOrderedHashTable::getImplexecuteBoundCallInterpreter.cpp:1223