Keep Glass attached through target-worker shutdown

Early Platform.exit detached JavaFX while queued macOS activation callbacks still called Java. Close the owned example before terminating its JVM, make shutdown idempotent, and reject late preview work. Add real startup-cancellation regressions and native crash-report checks.
This commit is contained in:
2026-11-12 15:03:51 +01:00
parent 886ce4a96f
commit 7b1d754320
10 changed files with 245 additions and 14 deletions
+2 -4
View File
@@ -56,11 +56,9 @@ Run the bootstrap and registered IDE commands in [README](../README.md). A succe
These checks are pending; automated window/control checks do not count as human acceptance.
## Open native-runtime observation
## Native-runtime lifecycle correction
The final registered IntelliJ runs passed their assertions, but the classpath run also produced a Java 21 / JavaFX 21.0.7 target-worker `SIGSEGV` in `libglass.dylib` (`JNI_OnLoad+0x11d0`, Cocoa application-unhide notification). The worker was 1.12 seconds old; this was not the IntelliJ JavaFX 26 JVM. The report does not establish whether cancellation/teardown overlapped toolkit startup. Root cause remains unconfirmed, and successful assertions must not be read as crash-free native qualification.
The local report is retained under `target/stage3-qualification/hs_err_pid73625.log` (not committed). Reproduce rapid worker replacement and owner close during startup, correlate worker/session lifecycle timestamps, and check for native fatal reports in addition to host success markers before closing the stage-3 lifecycle gate. Existing earlier target and host runs passed without this report.
The native JavaFX 21 target-worker crash observed during stage-3 qualification has been reproduced and corrected. See the [diagnosis, shutdown contract and lifecycle regression](native-worker-lifecycle.md). The runners now reject native crash reports even when UI assertions pass. Human navigation and interactive-preview review remains open.
## Boundaries