fix(compass-app): reap the gtk4 e2e WebKit children before exit (RIG-2526) - #1113
Merged
Merged
Conversation
…2526) WebKitGTK fork+execs its GPU/network helpers in C. They inherit the test binary's stdout, and upstream teardown never joins them: linuxApp.destroy tears down at the GTK level only. On a GPU-less runner a helper takes seconds to abort on EGL, so go test waits out its WaitDelay and a PASS is reported as "Test I/O incomplete". Teardown now joins them: SIGTERM, SIGKILL after a grace, bounded at 10s, and a survivor past the bound reds loudly instead of tripping the opaque WaitDelay. A real test failure keeps its own exit code. The helpers block until signaled, so a passive wait never ends. Sealing our stdio FD_CLOEXEC was measured as the wrong fix: the gate went green while orphaning a WebKitWebProcess to init on every run. Co-authored-by: Matt Wilkinson <matt@rigel.build>
|
😎 Merged successfully - details. |
|
Compass engineering docs preview: https://compass-native-rig-2526-reap.compass-eng-docs.pages.dev Deployed from |
Review: deciding which pid gets signalled is the highest-stakes logic in the change and had only integration cover, so a regressed chain walk would ship green. Splits the pure parse out of readStat and table-tests both. Proven to catch the real regressions: dropping descendsFrom's ppid==root precedence, and keying the parse off the first ')' instead of the last, each fail six subtests. Also re-signals each pass instead of latching, so a helper first seen after the grace still gets SIGKILL. Co-authored-by: Matt Wilkinson <matt@rigel.build>
rigel-mintaka
marked this pull request as ready for review
September 11, 2026 20:33
mattwilkinsonn
approved these changes
Sep 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
WebKitGTK fork+execs its GPU/network helpers in C. They inherit the test
binary's stdout, and upstream teardown never joins them: linuxApp.destroy
tears down at the GTK level only. On a GPU-less runner a helper takes seconds
to abort on EGL, so go test waits out its WaitDelay and a PASS is reported as
"Test I/O incomplete".
Teardown now joins them: SIGTERM, SIGKILL after a grace, bounded at 10s, and a
survivor past the bound reds loudly instead of tripping the opaque WaitDelay. A
real test failure keeps its own exit code.
The helpers block until signaled, so a passive wait never ends. Sealing our
stdio FD_CLOEXEC was measured as the wrong fix: the gate went green while
orphaning a WebKitWebProcess to init on every run.
Co-authored-by: Matt Wilkinson matt@rigel.build