From: Patrick Donnelly Date: Mon, 17 Jul 2017 04:27:00 +0000 (-0700) Subject: script: add docker core dump debugger X-Git-Tag: v12.1.2~263^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=8db17d7c748f91a4ea49ac4b0bb6d97cd438d128;p=ceph-ci.git script: add docker core dump debugger This script sets up a docker container with all the packages used for your Ceph (test) branch. From there, you can gdb the core dump if you have access to the test cluster. Signed-off-by: Patrick Donnelly --- diff --git a/src/script/ceph-debug-docker.sh b/src/script/ceph-debug-docker.sh new file mode 100755 index 00000000000..0fb4d2726a8 --- /dev/null +++ b/src/script/ceph-debug-docker.sh @@ -0,0 +1,114 @@ +#!/bin/bash + +# This can be run from e.g. the senta machines which have docker available. You +# may need to run this script with sudo. +# +# Once you have booted into the image, you should be able to debug the core file: +# $ gdb -q /ceph/teuthology-archive/.../coredump/1500013578.8678.core +# +# You may want to install other packages (yum) as desired. +# +# Once you're finished, please delete old images in a timely fashion. + +set -e + +CACHE="" + +function run { + printf "%s\n" "$*" + "$@" +} + +function main { + eval set -- $(getopt --name "$0" --options 'h' --longoptions 'help,no-cache' -- "$@") + + while [ "$#" -gt 0 ]; do + case "$1" in + -h|--help) + printf '%s: [--no-cache] \n' "$0" + exit 0 + ;; + --no-cache) + CACHE="--no-cache" + shift + ;; + --) + shift + break + ;; + esac + done + + if [ -z "$1" ]; then + printf "specify the branch [default \"master\"]: " + read branch + if [ -z "$branch" ]; then + branch=master + fi + else + branch="$1" + fi + printf "branch: %s\n" "$branch" + + if [ -z "$2" ]; then + printf "specify the build environment [default \"centos:7\"]: " + read env + if [ -z "$env" ]; then + env=centos:7 + fi + else + env="$2" + fi + printf "env: %s\n" "$env" + + if [ -n "$SUDO_USER" ]; then + user="$SUDO_USER" + elif [ -n "$USER" ]; then + user="$USER" + else + user="$(whoami)" + fi + + image="${user}/ceph-ci:${branch}-${env/:/-}" + + T=$(mktemp -d) + pushd "$T" + if grep ubuntu <<<"$env" > /dev/null 2>&1; then + # Docker makes it impossible to access anything outside the CWD : / + cp -- /ceph/shaman/cephdev.asc . + cat > Dockerfile <