Skip to content

fix(compass-app): reap the gtk4 e2e WebKit children before exit (RIG-2526) - #1113

Merged
trunk-io[bot] merged 2 commits into
mainfrom
compass-native/rig-2526-reap-gtk4-children
Sep 12, 2026
Merged

fix(compass-app): reap the gtk4 e2e WebKit children before exit (RIG-2526)#1113
trunk-io[bot] merged 2 commits into
mainfrom
compass-native/rig-2526-reap-gtk4-children

Conversation

@rigel-mintaka

Copy link
Copy Markdown
Contributor

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

…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>
@trunk-io

trunk-io Bot commented Sep 11, 2026

Copy link
Copy Markdown

😎 Merged successfully - details.

@linear-code

linear-code Bot commented Sep 11, 2026

Copy link
Copy Markdown

RIG-2526

@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-native-rig-2526-reap.compass-eng-docs.pages.dev

Deployed from compass-native/rig-2526-reap-gtk4-children at 1e12217.

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
rigel-mintaka marked this pull request as ready for review September 11, 2026 20:33
@trunk-io
trunk-io Bot merged commit 5b88ea9 into main Sep 12, 2026
15 checks passed
@trunk-io
trunk-io Bot deleted the compass-native/rig-2526-reap-gtk4-children branch September 12, 2026 01:48
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