Skip to content

Fix the nightly embedded GPU exit crash; log why a Savor live channel ends - #6207

Merged
shai-almog merged 5 commits into
masterfrom
nightly-fixes-6199
Nov 11, 2026
Merged

shai-almog merged 5 commits into
masterfrom
nightly-fixes-6199

Conversation

@shai-almog

Copy link
Copy Markdown
Collaborator

Two nightly failures from #6199.

embedded-linux: segfault after the demo finished. The GPU run printed its benchmark and then crashed inside `System.exit`. The atexit hook ran `cn1GpuShutdown`, which terminated EGL and freed the glyph atlas while the EDT was still uploading it.

  • At exit, `cn1GpuShutdownAtExit` only hides the cursor plane. It does not wait for a pending flip, because that would touch the front/next buffer bookkeeping the EDT is using. The kernel frees the rest.
  • A new atomic `cn1Exiting` flag, set before the console CRTC is restored, stops both present paths from flipping the app's buffer back over the console.
  • The attach-failure fallback still does the full teardown.

savor: `LiveSocketTest` failed once. The server closed the channel between two pushes and logged nothing. It did not reproduce in 15 local runs. The next failure will now explain itself:

  • `LiveHub` logs a failed send before it aborts the socket. The log names the frame type, never the payload.
  • `LiveEndpoint` logs `onError` and any abnormal close of an admitted connection.
  • The test's EOF message says how many frames had arrived and what the last one was.

🤖 Generated with Claude Code

shai-almog and others added 4 commits November 10, 2026 19:47
…nnel ends

The nightly embedded-linux GPU run segfaulted after the demo finished: exit()
ran cn1GpuShutdown from the atexit hook, which terminated EGL and freed the
glyph atlas while the EDT was still uploading it. At exit only the screen
state is put back now; the kernel frees the rest.

Savor's LiveSocketTest failed once with the server closing the channel
between two pushes, and nothing said why. LiveHub logs a send that fails
before aborting, LiveEndpoint logs an abnormal close of an admitted
connection, and the test says how far it got.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…red, log websocket errors

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Developer Guide build artifacts are available for download from this workflow run:

Developer Guide quality checks:

  • AsciiDoc linter: No issues found (report)
  • Vale: No alerts found (report)
  • Paragraph capitalization: No paragraph capitalization issues (report)
  • LanguageTool: No grammar matches (report)
  • Image references: No unused images detected (report)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

✅ Continuous Quality Report

Test & Coverage

Static Analysis

  • SpotBugs [Report archive]
    • ✅ ByteCodeTranslator: 0 findings (no issues)
    • ✅ android: 0 findings (no issues)
    • ✅ android-compat: 0 findings (no issues)
    • ✅ android-res-compiler: 0 findings (no issues)
    • ✅ backend: 0 findings (no issues)
    • ✅ backend-test: 0 findings (no issues)
    • ✅ build-engine: 0 findings (no issues)
    • ✅ build-hint-catalog: 0 findings (no issues)
    • ✅ build-hint-tools: 0 findings (no issues)
    • ✅ codenameone-gradle-plugin: 0 findings (no issues)
    • ✅ codenameone-maven-plugin: 0 findings (no issues)
    • ✅ compose-compat: 0 findings (no issues)
    • ✅ core-unittests: 0 findings (no issues)
    • ✅ desktop-compat-runtime: 0 findings (no issues)
    • ✅ fxml-compiler: 0 findings (no issues)
    • ✅ ios: 0 findings (no issues)
    • ✅ javac: 0 findings (no issues)
    • ✅ javafx-compat: 0 findings (no issues)
    • ✅ project-model: 0 findings (no issues)
    • ✅ python-runtime: 0 findings (no issues)
    • ✅ python-transpiler: 0 findings (no issues)
    • ✅ swing-compat: 0 findings (no issues)
  • ✅ PMD: 0 findings (no issues) [Report archive]
  • ✅ Checkstyle: 0 findings (no issues) [Report archive]

Generated automatically by the PR CI workflow.

@github-actions

Copy link
Copy Markdown
Contributor

Cloudflare Preview

@shai-almog

shai-almog commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator Author

Compared 210 screenshots: 210 matched.
Native Linux port (x64), GTK3/Cairo/Pango, ParparVM bytecode-to-C (no JVM): the hellocodenameone screenshot suite rendered by a native ELF built + run on the GitHub x64 runner. Baseline: scripts/linux/screenshots.

ParparVM vs HotSpot (JDK 25): Linux x64

Runner CPU: AMD EPYC 9V74 80-Core Processor (baseline linux-x64@amd-epyc-9v74-80-core-processor)

Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in vm/selfhost/perf-baseline/ is a regression and fails; one that far below is an improvement, reported but not failed (a row whose calibration runs were noisier carries a wider tolerance), and for RAM the change must also exceed 0.05x in absolute terms. Both run unpinned on all of the runner's CPUs, with their own default thread counts.

Benchmark Cores Time RAM Status
hello (LinuxHelloMain) 4 1.09x (base 0.90x, +21.8%) 0.81x (base 0.96x, -15.1%) ok
translator (self) 4 0.59x (base 0.63x, -6.1%) 0.50x (base 0.46x, +7.2%) ok
intArithmetic 4 1.10x (base 1.10x, -0.1%) 0.04x (base 0.06x, -29.1%) ok
longArithmetic 4 1.08x (base 1.08x, +0.0%) 0.04x (base 0.06x, -31.8%) ok
mathTranscendental 4 1.10x (base 1.09x, +0.2%) 0.04x (base 0.07x, -38.7%) ok
arraySequential 4 2.65x (base 2.81x, -5.6%) 0.36x (base 0.35x, +2.1%) ok
arrayRandom 4 1.03x (base 1.02x, +0.5%) 0.20x (base 0.21x, -4.6%) ok
objectAllocation 4 1.29x (base 1.21x, +7.4%) 0.33x (base 0.39x, -15.7%) ok
valueEscape 4 0.10x (base 0.10x, +0.5%) 0.03x (base 0.06x, -42.0%) ok
hashMapChurn 4 1.46x (base 1.10x, +33.5%) 0.10x (base 0.10x, -0.5%) ok
stringBuilding 4 1.34x (base 1.49x, -10.1%) 0.31x (base 0.26x, +20.5%) ok
recursion 4 1.33x (base 1.24x, +7.3%) 0.04x (base 0.06x, -28.7%) ok
quicksort 4 1.08x (base 1.07x, +1.0%) 0.10x (base 0.11x, -11.0%) ok

Result: no regression

@shai-almog

shai-almog commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator Author

Compared 210 screenshots: 210 matched.
Native Linux port (arm64), GTK3/Cairo/Pango, ParparVM bytecode-to-C (no JVM): the hellocodenameone screenshot suite rendered by a native ELF built + run on the GitHub arm64 runner. Baseline: scripts/linux/screenshots-arm.

ParparVM vs HotSpot (JDK 25): Linux arm64

Runner CPU: Neoverse-N2 (baseline linux-arm64@neoverse-n2)

Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in vm/selfhost/perf-baseline/ is a regression and fails; one that far below is an improvement, reported but not failed (a row whose calibration runs were noisier carries a wider tolerance), and for RAM the change must also exceed 0.05x in absolute terms. Both run unpinned on all of the runner's CPUs, with their own default thread counts.

Benchmark Cores Time RAM Status
hello (LinuxHelloMain) 4 1.13x (base 1.02x, +10.6%) 0.78x (base 0.66x, +17.9%) ok
translator (self) 4 0.77x (base 0.70x, +10.1%) 0.48x (base 0.43x, +11.6%) ok
intArithmetic 4 1.04x (base 1.04x, -0.0%) 0.03x (base 0.03x, +4.7%) ok
longArithmetic 4 0.79x (base 0.79x, -0.3%) 0.03x (base 0.03x, +5.0%) ok
mathTranscendental 4 1.09x (base 1.10x, -0.3%) 0.04x (base 0.03x, +9.8%) ok
arraySequential 4 0.36x (base 0.36x, +0.1%) 0.37x (base 0.37x, +0.5%) ok
arrayRandom 4 0.94x (base 0.94x, +0.4%) 0.20x (base 0.20x, +0.6%) ok
objectAllocation 4 2.00x (base 1.77x, +12.9%) 0.36x (base 0.37x, -3.1%) ok
valueEscape 4 0.51x (base 0.51x, -0.1%) 0.03x (base 0.03x, +6.1%) ok
hashMapChurn 4 0.86x (base 0.84x, +2.1%) 0.11x (base 0.12x, -6.4%) ok
stringBuilding 4 1.51x (base 1.57x, -3.3%) 0.27x (base 0.26x, +1.5%) ok
recursion 4 1.56x (base 1.43x, +8.5%) 0.04x (base 0.04x, +3.2%) ok
quicksort 4 1.00x (base 0.99x, +0.5%) 0.10x (base 0.09x, +2.7%) ok

Result: no regression

@shai-almog
shai-almog merged commit cc0d7ea into master Nov 11, 2026
46 checks passed
@shai-almog
shai-almog deleted the nightly-fixes-6199 branch November 11, 2026 02:06
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.

1 participant