ci/bare-metal: Capture the first devcoredump a job produces.
authorEric Anholt <eric@anholt.net>
Wed, 22 Jul 2020 20:59:49 +0000 (13:59 -0700)
committerMarge Bot <eric+marge@anholt.net>
Thu, 30 Jul 2020 11:41:57 +0000 (11:41 +0000)
Connor recently ran into an issue where the chezas were hanging where his
GPUs weren't, and was blocked on getting some feedback on what was
happening.  A devcoredump will help non-cheza-having devs debug (or
hopefully with other intermittent fails).

Closes: #3187
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6036>

.gitlab-ci/bare-metal/capture-devcoredump.sh [new file with mode: 0755]
.gitlab-ci/bare-metal/init.sh
.gitlab-ci/bare-metal/rootfs-setup.sh

diff --git a/.gitlab-ci/bare-metal/capture-devcoredump.sh b/.gitlab-ci/bare-metal/capture-devcoredump.sh
new file mode 100755 (executable)
index 0000000..095bad8
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+while true; do
+  devcds=`find /sys/devices/virtual/devcoredump/ -name data`
+  for i in $devcds; do
+    echo "Found a devcoredump at $i."
+    if cp $i /results/first.devcore; then
+      echo 1 > $i
+      echo "Saved to the job artifacts at /first.devcore"
+      exit 0
+    fi
+  done
+  sleep 10
+done
index 797f0d73e7265dd51d7d2effba6a8561b7f418f5..2e67b1c64da5b28e11eea175ae9bba9659d995f3 100755 (executable)
@@ -19,6 +19,10 @@ echo "nameserver 8.8.8.8" > /etc/resolv.conf
 # Overwrite traces.yml file with the baremetal version
 cp /install/traces-baremetal.yml /install/traces.yml
 
+# Start a little daemon to capture the first devcoredump we encounter.  (They
+# expire after 5 minutes, so we poll for them).
+./capture-devcoredump.sh &
+
 if sh $BARE_METAL_TEST_SCRIPT; then
   OK=1
 else
index 27735e2d32cae3bf87a587871dab661ce398805d..c5106c064727ac56ffd66d822f17e942c311c599 100644 (file)
@@ -7,6 +7,8 @@ mkdir -p $rootfs_dst/results
 # Set up the init script that brings up the system.
 cp $BM/init.sh $rootfs_dst/init
 
+cp $BM/capture-devcoredump.sh $rootfs_dst/
+
 set +x
 # Pass through relevant env vars from the gitlab job to the baremetal init script
 touch $rootfs_dst/set-job-env-vars.sh