This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-java.git


The following commit(s) were added to refs/heads/main by this push:
     new 0f256ece5 MINOR: [CI] Upload JVM crash files when the Binaries job 
fails (#1428)
0f256ece5 is described below

commit 0f256ece567b303a87b7c225a2495d46b8d4a097
Author: Andy Grove <[email protected]>
AuthorDate: Sun Nov 1 15:11:31 2026 -0700

    MINOR: [CI] Upload JVM crash files when the Binaries job fails (#1428)
    
    ## What's Changed
    
    When a test JVM crashes in the RC workflow's Binaries job, the log says
    only `Error occurred in starting fork, check output in log`, `Corrupted
    channel by directly writing to native stream in forked JVM N` and
    `Aborted (core dumped)`. The details stay on the runner. HotSpot writes
    `hs_err_pid<pid>.log` to the module directory, and surefire saves the
    crash banner the JVM printed to stdout in
    `target/surefire-reports/*.dumpstream`. The job uploads neither.
    
    For example, the Binaries job on #1419 failed twice this way ([attempt
    
1](https://github.com/apache/arrow-java/actions/runs/41233658912/job/124634336074),
    [attempt
    
2](https://github.com/apache/arrow-java/actions/runs/41233658912/job/124888186799)).
    All 46 arrow-dataset tests passed, then the JVM that had run 35 of them
    aborted, and nothing in the log shows where it crashed.
    
    This adds a step that uploads those files as a
    `binaries-jvm-crash-files` artifact when the job fails. It uses the same
    pinned `actions/upload-artifact` as the job's other upload steps.
    `if-no-files-found: ignore` keeps the step quiet when a failure isn't a
    crash.
    
    I checked the patterns against a local arrow-dataset crash, which left
    `dataset/hs_err_pid<pid>.log` and
    `dataset/target/surefire-reports/<timestamp>-jvmRun<N>.dumpstream`.
    actionlint reports nothing new in `rc.yml`. The step runs only when the
    job fails, so this PR's own CI run won't exercise it.
---
 .github/workflows/rc.yml | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/.github/workflows/rc.yml b/.github/workflows/rc.yml
index bc4ed5d5e..7f061fc3e 100644
--- a/.github/workflows/rc.yml
+++ b/.github/workflows/rc.yml
@@ -403,6 +403,18 @@ jobs:
       - name: Build bundled JAR and docs
         run: |
           ci/scripts/jni_full_build.sh . jni binaries
+      # A test JVM that crashes leaves its HotSpot error log in the module
+      # directory and the crash banner it printed in surefire's dump files.
+      - name: Upload JVM crash files
+        if: failure()
+        uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 
# v7.0.2
+        with:
+          name: binaries-jvm-crash-files
+          path: |
+            **/hs_err_pid*.log
+            **/target/surefire-reports/*.dump
+            **/target/surefire-reports/*.dumpstream
+          if-no-files-found: ignore
       - name: Prepare docs
         run: |
           mkdir -p docs

Reply via email to