summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Wu <XrXr@users.noreply.github.com>2025-09-15 16:33:41 -0400
committerAlan Wu <XrXr@users.noreply.github.com>2025-09-17 13:35:35 -0400
commit4d003eabec01a5c0be10e3c6bb7e641f9e04eeef (patch)
tree6d38907353efdb3a3c9fd2c7f1beb8cb88b395ce
parent7ed1b24bf3a9400cdf67cc080414d56fa3cfe72d (diff)
GitHub CI: JITs: Dump RUBY_CRASH_REPORT on failure
We sometimes see silent crashes on CI such as <https://github.com/ruby/ruby/actions/runs/17661854762/job/50196469793>. The default of dumping to stderr could be interacting poorly with the parallel workers, so let's use RUBY_CRASH_REPORT to hopefully get more information.
-rw-r--r--.github/workflows/yjit-macos.yml10
-rw-r--r--.github/workflows/yjit-ubuntu.yml11
-rw-r--r--.github/workflows/zjit-macos.yml9
-rw-r--r--.github/workflows/zjit-ubuntu.yml9
4 files changed, 35 insertions, 4 deletions
diff --git a/.github/workflows/yjit-macos.yml b/.github/workflows/yjit-macos.yml
index 53ffcbe217..b44187b0fb 100644
--- a/.github/workflows/yjit-macos.yml
+++ b/.github/workflows/yjit-macos.yml
@@ -115,8 +115,10 @@ jobs:
ruby -ne 'raise "Disassembly seems broken in dev build (output has too few lines)" unless $_.to_i > 10'
if: ${{ contains(matrix.configure, 'jit=dev') }}
- - name: Enable YJIT through ENV
- run: echo "RUBY_YJIT_ENABLE=1" >> $GITHUB_ENV
+ - name: Set ENV for YJIT
+ run: |
+ echo "RUBY_YJIT_ENABLE=1" >> $GITHUB_ENV
+ echo "RUBY_CRASH_REPORT=$(pwd)/rb_crash_%p.txt" >> $GITHUB_ENV
- name: Set test options for skipped tests
run: |
@@ -166,6 +168,10 @@ jobs:
if: ${{ matrix.test_task == 'check' && matrix.skipped_tests }}
continue-on-error: ${{ matrix.continue-on-skipped_tests || false }}
+ - if: ${{ failure() }}
+ continue-on-error: true
+ run: tail --verbose --lines=+1 rb_crash_*.txt
+
- uses: ./.github/actions/slack
with:
label: ${{ matrix.test_task }} ${{ matrix.configure }} ${{ matrix.yjit_opts }}
diff --git a/.github/workflows/yjit-ubuntu.yml b/.github/workflows/yjit-ubuntu.yml
index 3ff3310a44..1fac6e1d93 100644
--- a/.github/workflows/yjit-ubuntu.yml
+++ b/.github/workflows/yjit-ubuntu.yml
@@ -168,8 +168,10 @@ jobs:
ruby -ne 'raise "Disassembly seems broken in dev build (output has too few lines)" unless $_.to_i > 10'
if: ${{ contains(matrix.configure, 'jit=dev') }}
- - name: Enable YJIT through ENV
- run: echo "RUBY_YJIT_ENABLE=1" >> $GITHUB_ENV
+ - name: Set ENV for YJIT
+ run: |
+ echo "RUBY_YJIT_ENABLE=1" >> $GITHUB_ENV
+ echo "RUBY_CRASH_REPORT=$(pwd)/rb_crash_%p.txt" >> $GITHUB_ENV
# Check that the binary was built with YJIT
- name: Check YJIT enabled
@@ -208,6 +210,11 @@ jobs:
LAUNCHABLE_STDERR: ${{ steps.launchable.outputs.stderr_report_path }}
continue-on-error: ${{ matrix.continue-on-test_task || false }}
+ - name: Dump crash logs
+ if: ${{ failure() }}
+ continue-on-error: true
+ run: tail --verbose --lines=+1 rb_crash_*.txt
+
- uses: ./.github/actions/slack
with:
label: ${{ matrix.test_task }} ${{ matrix.configure }}
diff --git a/.github/workflows/zjit-macos.yml b/.github/workflows/zjit-macos.yml
index 3da1080be9..987a26a62b 100644
--- a/.github/workflows/zjit-macos.yml
+++ b/.github/workflows/zjit-macos.yml
@@ -107,6 +107,10 @@ jobs:
ruby -ne 'raise "Disassembly seems broken in dev build (output has too few lines)" unless $_.to_i > 10'
if: ${{ contains(matrix.configure, 'jit=dev') }}
+ - name: Set ENV for ZJIT
+ run: |
+ echo "RUBY_CRASH_REPORT=$(pwd)/rb_crash_%p.txt" >> $GITHUB_ENV
+
- name: make ${{ matrix.test_task }}
run: >-
make -s ${{ matrix.test_task }} ${TESTS:+TESTS="$TESTS"}
@@ -122,6 +126,11 @@ jobs:
TESTS: ${{ matrix.test_all_opts }}
continue-on-error: ${{ matrix.continue-on-test_task || false }}
+ - name: Dump crash logs
+ if: ${{ failure() }}
+ continue-on-error: true
+ run: tail --verbose --lines=+1 rb_crash_*.txt
+
- uses: ./.github/actions/slack
with:
label: ${{ matrix.test_task }} ${{ matrix.configure }}
diff --git a/.github/workflows/zjit-ubuntu.yml b/.github/workflows/zjit-ubuntu.yml
index 14b9eab042..c85a3799a0 100644
--- a/.github/workflows/zjit-ubuntu.yml
+++ b/.github/workflows/zjit-ubuntu.yml
@@ -147,6 +147,10 @@ jobs:
run: ./miniruby --zjit -v | grep "+ZJIT"
if: ${{ matrix.configure != '--disable-zjit' }}
+ - name: Set ENV for ZJIT
+ run: |
+ echo "RUBY_CRASH_REPORT=$(pwd)/rb_crash_%p.txt" >> $GITHUB_ENV
+
- name: make ${{ matrix.test_task }}
run: >-
make -s ${{ matrix.test_task }} ${TESTS:+TESTS="$TESTS"}
@@ -164,6 +168,11 @@ jobs:
TESTS: ${{ matrix.test_all_opts }}
continue-on-error: ${{ matrix.continue-on-test_task || false }}
+ - name: Dump crash logs
+ if: ${{ failure() }}
+ continue-on-error: true
+ run: tail --verbose --lines=+1 rb_crash_*.txt
+
- uses: ./.github/actions/slack
with:
label: ${{ matrix.test_task }} ${{ matrix.configure }}