mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-19 20:00:51 +08:00
ci: Collect core files on NetBSD and OpenBSD
Support for NetBSD and OpenBSD operating systems have been added to CI in the prior commit. Now add support for collect core files and generating backtraces using for all core files. Author: Nazir Bilal Yavuz <byavuz81@gmail.com> Discussion: https://postgr.es/m/CAN55FZ32ySyYa06k9MFd+VY5vHhUyBpvgmJUZae5PihjzaurVg@mail.gmail.com
This commit is contained in:
parent
e291573534
commit
c45963c5d5
@ -232,11 +232,13 @@ task:
|
||||
CCACHE_DIR: /home/postgres/cache
|
||||
|
||||
PATH: /usr/sbin:$PATH
|
||||
CORE_DUMP_DIR: /var/crash
|
||||
|
||||
matrix:
|
||||
- name: NetBSD - Meson
|
||||
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*netbsd.*'
|
||||
env:
|
||||
OS_NAME: netbsd
|
||||
IMAGE_FAMILY: pg-ci-netbsd-postgres
|
||||
PKGCONFIG_PATH: '/usr/lib/pkgconfig:/usr/pkg/lib/pkgconfig'
|
||||
# initdb fails with: 'invalid locale settings' error on NetBSD.
|
||||
@ -253,12 +255,15 @@ task:
|
||||
- name: OpenBSD - Meson
|
||||
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*openbsd.*'
|
||||
env:
|
||||
OS_NAME: openbsd
|
||||
IMAGE_FAMILY: pg-ci-openbsd-postgres
|
||||
PKGCONFIG_PATH: '/usr/lib/pkgconfig:/usr/local/lib/pkgconfig'
|
||||
UUID: -Duuid=e2fs
|
||||
TCL: -Dtcl_version=tcl86
|
||||
setup_additional_packages_script: |
|
||||
#pkg_add -I ...
|
||||
# Always core dump to ${CORE_DUMP_DIR}
|
||||
set_core_dump_script: sysctl -w kern.nosuidcoredump=2
|
||||
<<: *openbsd_task_template
|
||||
|
||||
sysinfo_script: |
|
||||
@ -276,6 +281,10 @@ task:
|
||||
chown -R postgres:users /home/postgres
|
||||
mkdir -p ${CCACHE_DIR}
|
||||
chown -R postgres:users ${CCACHE_DIR}
|
||||
setup_core_files_script: |
|
||||
mkdir -p ${CORE_DUMP_DIR}
|
||||
chmod -R 770 ${CORE_DUMP_DIR}
|
||||
chown -R postgres:users ${CORE_DUMP_DIR}
|
||||
|
||||
# -Duuid=bsd is not set since 'bsd' uuid option
|
||||
# is not working on NetBSD & OpenBSD. See
|
||||
@ -306,6 +315,12 @@ task:
|
||||
|
||||
on_failure:
|
||||
<<: *on_failure_meson
|
||||
cores_script: |
|
||||
# Although we try to configure the OS to core dump inside
|
||||
# ${CORE_DUMP_DIR}, they may not obey this. So, move core files to the
|
||||
# ${CORE_DUMP_DIR} directory.
|
||||
find build/ -type f -name '*.core' -exec mv '{}' ${CORE_DUMP_DIR} \;
|
||||
src/tools/ci/cores_backtrace.sh ${OS_NAME} ${CORE_DUMP_DIR}
|
||||
|
||||
|
||||
# configure feature flags, shared between the task running the linux tests and
|
||||
|
@ -9,7 +9,7 @@ os=$1
|
||||
directory=$2
|
||||
|
||||
case $os in
|
||||
freebsd|linux|macos)
|
||||
freebsd|linux|macos|netbsd|openbsd)
|
||||
;;
|
||||
*)
|
||||
echo "unsupported operating system ${os}"
|
||||
@ -26,7 +26,7 @@ for corefile in $(find "$directory" -type f) ; do
|
||||
echo -e '\n\n'
|
||||
fi
|
||||
|
||||
if [ "$os" = 'macos' ]; then
|
||||
if [ "$os" = 'macos' ] || [ "$os" = 'openbsd' ]; then
|
||||
lldb -c $corefile --batch -o 'thread backtrace all' -o 'quit'
|
||||
else
|
||||
auxv=$(gdb --quiet --core ${corefile} --batch -ex 'info auxv' 2>/dev/null)
|
||||
@ -37,6 +37,8 @@ for corefile in $(find "$directory" -type f) ; do
|
||||
|
||||
if [ "$os" = 'freebsd' ]; then
|
||||
binary=$(echo "$auxv" | grep AT_EXECPATH | perl -pe "s/^.*\"(.*)\"\$/\$1/g")
|
||||
elif [ "$os" = 'netbsd' ]; then
|
||||
binary=$(echo "$auxv" | grep AT_SUN_EXECNAME | perl -pe "s/^.*\"(.*)\"\$/\$1/g")
|
||||
elif [ "$os" = 'linux' ]; then
|
||||
binary=$(echo "$auxv" | grep AT_EXECFN | perl -pe "s/^.*\"(.*)\"\$/\$1/g")
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user