git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: e291573)
ci: Collect core files on NetBSD and OpenBSD
2025年2月12日 14:40:20 +0000 (09:40 -0500)
2025年2月12日 14:40:20 +0000 (09:40 -0500)
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


diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml
index 0d99b787f5fbf4d8099f4cf4adc7edfd742c2099..fffa438cec1703a2eea496fb6b177aa06977c979 100644 (file)
--- a/.cirrus.tasks.yml
+++ b/.cirrus.tasks.yml
@@ -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
diff --git a/src/tools/ci/cores_backtrace.sh b/src/tools/ci/cores_backtrace.sh
index 28d3cecfc670914a80f1402c91cdfae50503d99a..546074152581474a7915132e1e3c0c6850681cc8 100755 (executable)
--- a/src/tools/ci/cores_backtrace.sh
+++ b/src/tools/ci/cores_backtrace.sh
@@ -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
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /