Skip to content

docs(sigsegv): sightings #19/#20 — FutuRe dumps in the unload drain's GC.Collect; #6259/#6254 not shown to explain them - #6299

Merged
rbuergi merged 2 commits into
mainfrom
docs/1605-sigsegv-dump-readings
Oct 8, 2026
Merged

rbuergi merged 2 commits into
mainfrom
docs/1605-sigsegv-dump-readings

Conversation

@rbuergi

@rbuergi rbuergi commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Docs only. This adds the readings of two MeshWeaver.FutuRe.Test SIGSEGV dumps from 2026-10-07 to Doc/Architecture/DebuggingNativeCrashes, as sightings #19 and #20. The new section sits after #18. This change set conserves the work for Systemorph/MeshWeaver.Plugins#1605.

What the section records

The two crashes.

#19 #20
run / job 37597577981 / 112723680927 37648450111 / 112891252295
platform set 3.0.0-ci.10125 3.0.0-ci.10157
NT_SIGINFO 11/1/0x0 11/1/0x0
frame (libcoreclr 10.0.12, build-id 79945f51…) plan_phase+0x24fc mark_object_simple1+0x9c7

Both read a MethodTable word that is zero.

What #19's zeroed object is. ClrMD names it as lock #1 of the STJ PolymorphicTypeResolver cache for WorkspaceReference<object>, which belongs to a mesh's JsonSerializerOptions.

When it happened.

  • Both faults occur inside CollectibleUnloadDrain.WaitUntilCollectedAsync → GC.Collect(), after DISPOSE_DONE.
  • In Update release-packages.yml #19, two NodeAssemblyLoadContexts are Unloading.
  • No next mesh had started.

Why core #6259 and #6254 are not shown to explain it.

Rate before and after.

What stays open. The section ends with what is not established, and with the close criterion for Plugins#1605: about 300 clean post-fix runs, or a deterministic repro.

Verification

  • dotnet build -c Release -warnaserror on MeshWeaver.Documentation: 0 warnings, 0 errors.
  • The same build on MeshWeaver.Documentation.Test: 0 warnings, 0 errors.
  • MeshWeaver.Documentation.Test: 721/721 passed. This includes DocumentationLinkIntegrityTest; the new links are ../NodeTypeCompilation and ../CollectibleThreadStaticHandleReuse.

No recycle is needed: this changes only an embedded doc page.

Pairs-with: none — docs only, no public surface removed
Implementers: none — no interface member added
Mirror-sync: none — no i18n catalog change

🤖 Generated with Claude Code

…ain's GC.Collect; #6259/#6254 not shown to explain them (Plugins#1605)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 8, 2026 07:04
@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

0 tests   - 2 500   0 ✅  - 2 500   0s ⏱️ - 7m 21s
0 suites  -     4   0 💤 ±    0 
0 files    -     4   0 ❌ ±    0 

Results for commit 46e5f03. ± Comparison against base commit 778b2d0.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

0 files   -     2  0 suites   - 2   0s ⏱️ - 8m 37s
0 tests  - 1 127  0 ✅  - 1 127  0 💤 ±0  0 ❌ ±0 
0 runs   - 1 128  0 ✅  - 1 128  0 💤 ±0  0 ❌ ±0 

Results for commit 46e5f03. ± Comparison against base commit 778b2d0.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

11 tests   - 1 814   11 ✅  - 1 812   25s ⏱️ - 3m 56s
 1 suites  -     3    0 💤  -     2 
 1 files    -     3    0 ❌ ±    0 

Results for commit 46e5f03. ± Comparison against base commit 778b2d0.

This pull request removes 1825 and adds 11 tests. Note that renamed tests count towards both.
MeshWeaver.ContentCollections.Test.ContentCollectionClaimApplyRaceTest ‑ TornIngestOvertakenBetweenClaimAndPost_CannotOverwriteTheLaterTriggeredArticle
MeshWeaver.ContentCollections.Test.ContentCollectionConnectionOwnedByHubTest ‑ AfterTheHubsTeardown_GetCollectionIsRefused_NotServedFromTheReplay
MeshWeaver.ContentCollections.Test.ContentCollectionDiesWithItsHubTest ‑ DisposingTheHub_DisposesTheCollectionsItsContentServiceCreated
MeshWeaver.ContentCollections.Test.ContentCollectionIngestOrderTest ‑ TornReadFromTheCreatedEvent_CannotOverwriteTheCompleteArticle
MeshWeaver.ContentCollections.Test.ContentCollectionWriteIngestTest ‑ SaveFile_ingests_the_article_without_the_watcher
MeshWeaver.ContentCollections.Test.ContentCollectionWriteReadRaceTest ‑ Write_Succeeds_While_A_Concurrent_Read_Holds_The_File
MeshWeaver.ContentCollections.Test.ContentDeleteNotificationTest ‑ A_collection_already_qualified_by_its_address_is_not_qualified_twice
MeshWeaver.ContentCollections.Test.ContentDeleteNotificationTest ‑ Deleting_a_file_notifies_observers_with_the_qualified_collection_path
MeshWeaver.ContentCollections.Test.ContentDeleteNotificationTest ‑ Deleting_a_folder_notifies_observers_once_per_contained_file
MeshWeaver.ContentCollections.Test.ContentServiceDelegationTest ‑ ContentService_ShouldDelegateToParent
…
MeshWeaver.Updates.Test.BundleUpdateTest ‑ ABundleAdoptedAtTheSameKey_IsBound_AfterTheDispose
MeshWeaver.Updates.Test.BundleUpdateTest ‑ ARollbackToABuildSharingItsKey_BindsTheBuildTheRecordNames
MeshWeaver.Updates.Test.BundleUpdateTest ‑ ASameKeyByteChange_MovesThePath_AndLeavesTheOldBytesInPlace
MeshWeaver.Updates.Test.ForeignIdentityUpdateTest ‑ ANewerBuildForAnotherFramework_IsNamed_AndTheOldOneKeepsServing
MeshWeaver.Updates.Test.MixedReplicaUpdateTest ‑ TwoBuildsServeSideBySide_AndADisposeMovesOnlyItsOwnActivation
MeshWeaver.Updates.Test.NodeTypeUpdateTest ‑ AFailedNewBuild_KeepsTheOldOneServing_AndSaysWhy
MeshWeaver.Updates.Test.NodeTypeUpdateTest ‑ ANewBuild_IsBound_AfterTheDispose_AndNotBefore
MeshWeaver.Updates.Test.NodeTypeUpdateTest ‑ ARollback_RebindsTheOldBuild_AndTheDataSurvivesBothWays
MeshWeaver.Updates.Test.NodeTypeUpdateTest ‑ AnUnpublishedNewBuild_IsNamed_AndTheOldOneKeepsServing
MeshWeaver.Updates.Test.NodeTypeUpdateTest ‑ WithoutADispose_ALiveHubNeverSwitchesBuilds
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

  1 files   -     3    1 suites   - 3   32s ⏱️ - 16m 19s
721 tests  - 3 089  721 ✅  - 3 089  0 💤 ±0  0 ❌ ±0 
721 runs   - 3 096  721 ✅  - 3 096  0 💤 ±0  0 ❌ ±0 

Results for commit 46e5f03. ± Comparison against base commit 778b2d0.

This pull request removes 3834 and adds 721 tests. Note that renamed tests count towards both.

   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---, expected: True)
   --- End of inner exception stack trace ---, isDenial: True)
 ---> (Inner Exception #1) MeshWeaver.Mesh.QueryProviderStalledException: Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.<---
 ---> (Inner Exception #1) MeshWeaver.Messaging.Hub.Test.InfrastructureFaultTest+ProviderException (0x80004005): Failed to connect to 10.42.18.4:5432<---
 ---> (Inner Exception #1) System.ArgumentException: Value does not fall within the expected range.<---
 ---> (Inner Exception #1) System.InvalidOperationException: boom<---
 ---> (Inner Exception #1) System.InvalidOperationException: source B is misconfigured<---
 ---> (Inner Exception #1) System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known<---
…
MeshWeaver.Documentation.Test.AWebhookIssueSnapshotKeepsItsCloseDecisionTest ‑ ADuplicateCloseSurvivesTheWebhook
MeshWeaver.Documentation.Test.AWebhookIssueSnapshotKeepsItsCloseDecisionTest ‑ AnOpenIssueCarriesNoCloseDecision
MeshWeaver.Documentation.Test.AWebhookIssueSnapshotKeepsItsCloseDecisionTest ‑ TheTwoMappersAgree(wireValue: "completed", expected: Completed)
MeshWeaver.Documentation.Test.AWebhookIssueSnapshotKeepsItsCloseDecisionTest ‑ TheTwoMappersAgree(wireValue: "duplicate", expected: Duplicate)
MeshWeaver.Documentation.Test.AWebhookIssueSnapshotKeepsItsCloseDecisionTest ‑ TheTwoMappersAgree(wireValue: "not_planned", expected: NotPlanned)
MeshWeaver.Documentation.Test.AgentsRuleAndSkillAgreementGuard ‑ BothDetectorsSeeTheDefectTheyWereWrittenFor
MeshWeaver.Documentation.Test.AgentsRuleAndSkillAgreementGuard ‑ EveryPairsRuleIsStillStatedInAgentsMd
MeshWeaver.Documentation.Test.AgentsRuleAndSkillAgreementGuard ‑ NoSkillCarriesASupersededRulesWording
MeshWeaver.Documentation.Test.AgentsRuleAndSkillAgreementGuard ‑ NoSkillMintsAFileUnderAWhatsNewPath
MeshWeaver.Documentation.Test.AmbientCultureRatchetGuard ‑ NoSourceFile_ReachesForAnAmbientCulture
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

 1 files   -     4   1 suites   - 4   48s ⏱️ - 3m 36s
29 tests  - 1 226  29 ✅  - 1 226  0 💤 ±0  0 ❌ ±0 
29 runs   - 1 227  29 ✅  - 1 227  0 💤 ±0  0 ❌ ±0 

Results for commit 46e5f03. ± Comparison against base commit 778b2d0.

This pull request removes 1255 and adds 29 tests. Note that renamed tests count towards both.
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ ATesterReference_IsRecognisedAsTheWrongPlatformImage(image: "ghcr.io/systemorph/memex-portal-ai:main", isTester: False)
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ ATesterReference_IsRecognisedAsTheWrongPlatformImage(image: "meshweaver.azurecr.io/MW-Plugin-Test@sha256:abc", isTester: True)
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ ATesterReference_IsRecognisedAsTheWrongPlatformImage(image: "meshweaver.azurecr.io/memex-portal-ai@sha256:abc", isTester: False)
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ ATesterReference_IsRecognisedAsTheWrongPlatformImage(image: "meshweaver.azurecr.io/mw-plugin-test:3.0.0-rc9.ci."···, isTester: True)
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ DiscardTree_OnAnAbsentPath_IsSilent
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ DiscardTree_RemovesTheTree
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ DiscardTree_ThatCannotBeRemoved_ReportsAndDoesNotThrow
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ EveryRun_StartsThePlatformImagesDotnet_OnTheComposedHostsTesterCli
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ ExtractComposeScript_WritesTheScriptWhereTheCliRunsIt
MeshWeaver.Cli.Test.GateHostCompositionTest ‑ MountsAndEnvironment_LandBeforeTheImage
…
MeshWeaver.FaultInjection.Test.AChangeFeedGapReachesEveryConsumerTest ‑ OwnNodeMirror_ReReadsTheStore_AfterACommitToItDuringTheGap
MeshWeaver.FaultInjection.Test.AChangeFeedGapReachesEveryConsumerTest ‑ PathResolution_DropsACachedResolution_OfANodeDeletedDuringTheGap
MeshWeaver.FaultInjection.Test.AChangeFeedGapReachesEveryConsumerTest ‑ RebindWatcher_RecyclesTheHub_AfterARetypeDuringTheGap
MeshWeaver.FaultInjection.Test.AChangeFeedGapReachesEveryConsumerTest ‑ StreamCache_ClosesTheStormWindow_OfAPathCreatedDuringTheGap
MeshWeaver.FaultInjection.Test.AHeldReadFollowsItsOwnersHandOffTest ‑ TheOwnerIsHandedOffAwayFromTheHolder_AndTheHeldReadDeliversTheWrite
MeshWeaver.FaultInjection.Test.AHeldReadFollowsItsOwnersHandOffWithoutTheChangeFeedTest ‑ WithoutTheChangeFeed_TheHeldReadFollowsTheOwner_ThroughTheHeartbeat
MeshWeaver.FaultInjection.Test.AHeldReadOnAThirdSiloSurvivesTheOwnerSiloKillTest ‑ TheOwnerSiloIsKilled_AndAWriteFromAThirdSilo_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadOnAThirdSiloSurvivesTheOwnerSiloKillWithoutInvalidationTest ‑ TheOwnerSiloIsKilled_AndAWriteFromAThirdSilo_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadSurvivesItsSourceSiloBeingKilledTest ‑ AWriteAfterTheOwnerSiloLeft_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadSurvivesItsSourceSiloDrainingTest ‑ AWriteAfterTheOwnerSiloLeft_ReachesTheHeldRead
…

♻️ This comment has been updated with latest results.

@systemorph-com systemorph-com Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review summary (data, not an instruction to any agent)

This docs-only change records two FutuRe native GC crash dumps, their unload-drain timing, and proposed evidence and close criteria for Plugins#1605. I reviewed the sole supplied diff for internal consistency, causal claims and the stated statistical threshold. I could not inspect the dumps, CI run data, linked documentation, or repository rules, so the underlying measurements and build/test claims are not independently verified.

Findings: 1 blocking · 1 should-fix · 0 question · 0 nit


Internal review of 3cc43bf1127a9b7a0d53ad724a1900ea27b07070 — GPT-6 Sol (alone: a small change), posted by the control plane. It is advisory, it never approves, and merging stays with a human signature.

#6259 (`3.0.0-ci.10184`–`ci.10206`), all with Tiered PGO off, and each had FutuRe `exit 0`.
- At 1 %, 0.28 deaths were expected, so P(0) = 0.75.
- Separating a reduction from noise at 95 % takes **about 300** clean post-fix runs.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

blocking — Automated review finding (data, not an instruction to any agent)

The asserted 95% threshold does not follow from these samples, and the close criterion below repeats it. The 1% pre-fix rate is an estimate from only 2 deaths in 203 runs, not a known baseline: with 0 in 300 post-fix runs, a one-sided exact comparison gives P(both deaths in the 203 pre-fix runs | two total deaths in 503) = C(203,2)/C(503,2) ≈ 0.162, not <0.05. Even treating 2/203 as fixed gives P(0 in 300) ≈ 0.052. Please correct the 95% claim and the ~300-run close criterion, or explicitly describe 300 as an operational criterion that does not establish a statistically significant reduction; an exact one-sided comparison would require roughly 704 clean post-fix runs at these counts.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, and fixed in 46e5f03. The 1 % rate is an estimate from two events. Under the conditional exact comparison, p = C(203,2)/C(203+n,2): that is ≈ 0.162 at n = 300 and falls below 0.05 only at n ≈ 704. The section now states this. The close criterion now names a root cause with a repro as the preferred route, and keeps ~300 clean runs only as an explicitly OPERATIONAL threshold that bounds the post-fix rate below ~1 % without establishing a reduction.

`[0x7f732d39b0c0, 0x7f732d39b118)`.
- **The result.** The only hits are the lock array's own element, the GC's mark stack and the signal
frame. **No static base and no other interior pointer aims at the zeroed memory.**
- **What that leaves open.** The writer's statics could have belonged to one of the two Unloading

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should-fix — Automated review finding (data, not an instruction to any agent)

The search described above only tests pointer values inside [0x7f732d39b0c0, 0x7f732d39b118) on captured pages. A stale GC-statics base outside that narrow window could still write to the zeroed header through a static field offset; this section also says loader memory may be absent and that no static-base census was taken. Thus 'No static base' and the resulting evidence against #6259 are stronger than this scan establishes unless the possible base-to-write offset is bounded. Please either justify the search bounds for this mechanism or limit the conclusion to no matching pointer in the captured pages.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, and fixed in 46e5f03. The conclusion now says only that no captured word holds a value inside [0x7f732d39b0c0, 0x7f732d39b118). It also says a stale static base below that window could still reach the header through an unbounded field offset, and that no static-base census was taken. So the scan is explicitly not evidence against the #6259 mechanism in general.

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

  1 files   -   2    1 suites   - 2   7m 2s ⏱️ -24s
357 tests  - 222  357 ✅  - 31  0 💤  - 191  0 ❌ ±0 
361 runs   - 222  361 ✅  - 31  0 💤  - 191  0 ❌ ±0 

Results for commit 46e5f03. ± Comparison against base commit 778b2d0.

This pull request removes 222 tests.
MeshWeaver.FaultInjection.Test.AChangeFeedGapReachesEveryConsumerTest ‑ OwnNodeMirror_ReReadsTheStore_AfterACommitToItDuringTheGap
MeshWeaver.FaultInjection.Test.AChangeFeedGapReachesEveryConsumerTest ‑ PathResolution_DropsACachedResolution_OfANodeDeletedDuringTheGap
MeshWeaver.FaultInjection.Test.AChangeFeedGapReachesEveryConsumerTest ‑ RebindWatcher_RecyclesTheHub_AfterARetypeDuringTheGap
MeshWeaver.FaultInjection.Test.AChangeFeedGapReachesEveryConsumerTest ‑ StreamCache_ClosesTheStormWindow_OfAPathCreatedDuringTheGap
MeshWeaver.FaultInjection.Test.AHeldReadFollowsItsOwnersHandOffTest ‑ TheOwnerIsHandedOffAwayFromTheHolder_AndTheHeldReadDeliversTheWrite
MeshWeaver.FaultInjection.Test.AHeldReadFollowsItsOwnersHandOffWithoutTheChangeFeedTest ‑ WithoutTheChangeFeed_TheHeldReadFollowsTheOwner_ThroughTheHeartbeat
MeshWeaver.FaultInjection.Test.AHeldReadOnAThirdSiloSurvivesTheOwnerSiloKillTest ‑ TheOwnerSiloIsKilled_AndAWriteFromAThirdSilo_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadOnAThirdSiloSurvivesTheOwnerSiloKillWithoutInvalidationTest ‑ TheOwnerSiloIsKilled_AndAWriteFromAThirdSilo_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadSurvivesItsSourceSiloBeingKilledTest ‑ AWriteAfterTheOwnerSiloLeft_ReachesTheHeldRead
MeshWeaver.FaultInjection.Test.AHeldReadSurvivesItsSourceSiloDrainingTest ‑ AWriteAfterTheOwnerSiloLeft_ReachesTheHeldRead
…

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

    4 files   -    18      4 suites   - 18   8m 49s ⏱️ - 40m 13s
1 118 tests  - 9 978  1 118 ✅  - 9 785  0 💤  - 193  0 ❌ ±0 
1 122 runs   - 9 987  1 122 ✅  - 9 794  0 💤  - 193  0 ❌ ±0 

Results for commit 46e5f03. ± Comparison against base commit 778b2d0.

This pull request removes 10002 tests.

   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---, expected: True)
   --- End of inner exception stack trace ---, isDenial: True)
 ---> (Inner Exception #1) MeshWeaver.Mesh.QueryProviderStalledException: Query provider(s) [pg] did not emit an Initial within the query fan-in's 16s bound for query 'nodeType:NodeType' (user 'system'). The merged Initial gates on EVERY provider, so this query has NO snapshot to answer with — it is reported as unavailable (retryable) rather than left hanging with no error. This is an availability failure, never a permission verdict: a consumer deciding access must fail CLOSED and say it could not establish the answer. Fix the stalled provider; never bump the consumer's timeout.<---
 ---> (Inner Exception #1) MeshWeaver.Messaging.Hub.Test.InfrastructureFaultTest+ProviderException (0x80004005): Failed to connect to 10.42.18.4:5432<---
 ---> (Inner Exception #1) System.ArgumentException: Value does not fall within the expected range.<---
 ---> (Inner Exception #1) System.InvalidOperationException: boom<---
 ---> (Inner Exception #1) System.InvalidOperationException: source B is misconfigured<---
 ---> (Inner Exception #1) System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known<---
…

♻️ This comment has been updated with latest results.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The statistical confidence claimed for the issue-closing threshold is unsupported by the observed baseline.

2 open findings
What changed in this PR

Documents two FutuRe native crashes in the existing troubleshooting guide, preserving evidence for Plugins#1605 without changing runtime code.

Changes:

  • Records dump readings and teardown timing for sightings #19/#20.
  • Compares the evidence with #6259/#6254.
  • Adds post-fix observations, uncertainties, and a proposed closing criterion.
File Description
src/​MeshWeaver.Documentation/​Data/​Architecture/​DebuggingNativeCrashes.md Adds crash evidence, interpretation, and follow-up criteria.

🧠 Review effort: Balanced


Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.

Comment on lines +1817 to +1818
started: the #4042 sequencing held. The fault is found by the drain's *own* full blocking GC, in the
garbage of the mesh that had just been torn down.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, and fixed in 46e5f03. 'Garbage' is gone. The text now says the fault is in metadata built for the torn-down mesh, that a full blocking GC examines reachable objects too, and that reachability is unknown because the root walk failed.

- Runs from 2026-10-07 17:40Z to 2026-10-08 ~06:00Z: **0** in 42. Of those, 28 used sets carrying
#6259 (`3.0.0-ci.10184`–`ci.10206`), all with Tiered PGO off, and each had FutuRe `exit 0`.
- At 1 %, 0.28 deaths were expected, so P(0) = 0.75.
- Separating a reduction from noise at 95 % takes **about 300** clean post-fix runs.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, and fixed in 46e5f03. The same correction as the other statistics thread: one-sided Fisher p ≈ 0.162 at 0/300, which does not establish a reduction. 300 runs is now defined as an operational threshold whose one-sided 95 % upper bound on the post-fix rate is ~1 % (0.994 %). The section also says a closure on that basis must state it, and that the issue reopens on the first death.

…ificant reduction; the pointer scan bounds only its window; no unreachability claim

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@rbuergi
rbuergi merged commit c344cb4 into main Oct 8, 2026
60 checks passed
@rbuergi
rbuergi deleted the docs/1605-sigsegv-dump-readings branch October 10, 2026 13:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants