|
| 1 | +#!/bin/bash |
| 2 | +# Copyright(c) 2025 Intel Corporation. All rights reserved. |
| 3 | + |
| 4 | +CORE_DIR="/tmp/core" |
| 5 | +CORE_OUTPUT=$(mktemp /tmp/debug.XXXXXX) |
| 6 | +CORE_ARCHIVE=${GITHUB_WORKSPACE}/archives |
| 7 | +CORE_ARCHIVE_DUMP=${CORE_ARCHIVE}/core_files |
| 8 | + |
| 9 | +case $1 in |
| 10 | + init) |
| 11 | + echo "notice: enabling core dump artifacts support" |
| 12 | + mkdir "${CORE_ARCHIVE}" ${CORE_DIR} |
| 13 | + if [ ! -e "${CORE_ARCHIVE}" ] || [ ! -e "${CORE_DIR}" ]; then |
| 14 | + echo "error: creating core archive" |
| 15 | + exit 2 |
| 16 | + fi |
| 17 | + |
| 18 | + sudo bash -c 'echo '"${CORE_DIR}"'/%E.%p.core > /proc/sys/kernel/core_pattern' |
| 19 | + echo "set debuginfod enabled on" > "${HOME}"/.gdbinit |
| 20 | + ;; |
| 21 | + scan) |
| 22 | + echo "notice: scanning for core dump files" |
| 23 | + mkdir -p "${CORE_ARCHIVE}" "${CORE_ARCHIVE_DUMP}" |
| 24 | + |
| 25 | + if [ ! -e "${CORE_ARCHIVE}" ] || [ ! -e "${CORE_ARCHIVE_DUMP}" ]; then |
| 26 | + echo "error: creating core archive" |
| 27 | + exit 2 |
| 28 | + fi |
| 29 | + |
| 30 | + core_list=$(find ${CORE_DIR} -name '*.core' -type f -printf '%f;') |
| 31 | + IFS=';' |
| 32 | + |
| 33 | + if [ "${core_list}" == "" ]; then |
| 34 | + echo "notice: no core dump files found" |
| 35 | + exit 0 |
| 36 | + fi |
| 37 | + |
| 38 | + for core in ${core_list} |
| 39 | + do |
| 40 | + exe=$(echo "${core}" | sed 's/\.[0-9]*\.core$//' | sed 's/\!/\//g') |
| 41 | + echo -e "\n---\nDumping core dump info for: ${exe}\n---\n" >> "${CORE_OUTPUT}" |
| 42 | + gdb --batch -x "${GITHUB_WORKSPACE}"/.github/scripts/gdb_dump_info.cmd -c "${CORE_DIR}"/"${core}" "${exe}" >> "${CORE_OUTPUT}" |
| 43 | + # copy core file to artifact location |
| 44 | + core_file_demangled=$(echo "${CORE_DIR}"/"${core}" | sed 's/\!/\//g') |
| 45 | + core_file=$(basename "$core_file_demangled") |
| 46 | + cp "${CORE_DIR}"/"${core}" "${CORE_ARCHIVE_DUMP}"/"${core_file}" |
| 47 | + done |
| 48 | + |
| 49 | + echo "notice: core dump files detected" |
| 50 | + cat "${CORE_OUTPUT}" |
| 51 | + |
| 52 | + cd "${GITHUB_WORKSPACE}" || exit 3 |
| 53 | + tar -cvzf "${CORE_ARCHIVE}"/sos_test.tar.gz build |
| 54 | + cp "${CORE_OUTPUT}" "${CORE_ARCHIVE}"/output.txt |
| 55 | + ;; |
| 56 | + *) |
| 57 | + echo "error: invalid parameter specified" |
| 58 | + exit 1 |
| 59 | + ;; |
| 60 | +esac |
0 commit comments