CI (Apple): read the iOS exit code from the last stderr line and print crash reports on failure - #242
Open
matthargett wants to merge 1 commit into
Open
matthargett wants to merge 1 commit into
matthargett wants to merge 1 commit into
Conversation
…t crash reports The iOS step captured the app's whole stderr and handed it to `exit`, so any test output on stderr (or nothing at all, after a crash) ends the job with bash's "numeric argument required" as 255 and no diagnostics. Use the last line only, echo the capture, and on failure print the simulator's unified log for the process plus ReportCrash's .ips files. macOS gets the same failure-only .ips step: a JavaScriptCore RELEASE_ASSERT ends the process with EXC_BREAKPOINT, which the shell reports as exit 137 with no gtest summary; the report has the stack.
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The changes address CI diagnostics; only a minor documentation nit remains.
Pull request overview
Improves Apple CI exit-code handling and crash diagnostics for iOS and macOS tests.
Changes:
- Reads the iOS exit code from the final stderr line.
- Collects simulator logs and decodes crash reports on failures.
Review note: A minor nit requests updating the stale /tmp/exitCode comment.
File summaries
| File | Summary |
|---|---|
.github/workflows/build-ios.yml |
Updates exit-code handling and adds crash diagnostics. |
.github/workflows/build-macos.yml |
Adds macOS crash-report decoding. |
Review details
Suppressed comments (1)
.github/workflows/build-ios.yml:49
- This changes the capture file from
/tmp/exitCodeto/tmp/stderr, butTests/UnitTests/Shared/StandardStreamLogger.cpp:182-184still says the CI handshake uses/tmp/exitCodeand that any stderr output corrupts it. Please update that comment in the same change; it is now misleading about both the path and the accepted stderr behavior.
xcrun simctl launch --console booted "com.jsruntimehost.unittests" 2> /tmp/stderr
cat /tmp/stderr
(exit "$(tail -n 1 /tmp/stderr)")
- Files reviewed: 2/2 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
matthargett
added a commit
to rebeckerspecialties/JsRuntimeHost
that referenced
this pull request
Sep 16, 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.
Problem
build-ios.ymlcaptures the simulator app's stderr into a file and runs(exit $(cat /tmp/exitCode)). The app writes its exit code as the last line of stderr (iOS/App.mm), but anything else a test writes there — or nothing at all after a crash — makes bash fail withexit: numeric argument required, so the job ends with 255 and no diagnostics. On the fork this hid a run in which every test had passed (a Worker test prints progress to stderr).Neither Apple job prints crash reports: a JavaScriptCore
RELEASE_ASSERTends the process withEXC_BREAKPOINT, which the shell reports as exit 137 with no gtest summary; the.ipsunder~/Library/Logs/DiagnosticReportshas the faulting stack.Changes
UnitTests*.ipsreports (exception, termination, faulting-thread frames).Workflow-only change; both files parse. Fork twin: rebeckerspecialties#26.