Automatic backtrace [Was: Re: NetAPP/Samba 3.0/plugs]
Esh, Andrew
AEsh at tricord.com
Wed Mar 13 13:36:02 GMT 2002
Can the smbd process pid be passed to a panic action?
#!/bin/bash -norc
#
# bt - backtrace a process, given its PID
#
# Copyright (c) 2002 Andrew C. Esh
#
# License: Forceless - You can use it any way
# you like, as long as you don't use it to force
# anyone else to do anything they don't want to.
#
# Log:
# 3/13/2002 ACE Initial development. Works with Redhat 7.1.
# Find the process's command
cmd=`/bin/ps --no-heading -p $1 -o cmd | cut -f1 -d' ' 2>/dev/null`
# Leave if process not found
if [ $? -eq 1 ] ; then
echo Process not found
exit 1
fi
# Leave if command not found
if [ X${cmd}X == XX ] ; then
echo Command not found
exit 2
fi
# Strip decorating braces on swapped processes
cmd=`echo $cmd | sed 's/\[//g' | sed 's/\]//g'`
# Find the process's state
state=`/bin/ps -p $1 -o stat --no-heading`
# Leave if gdb won't be able to trace it
if [ X${state}X == XTX ] ; then
echo Process is being traced already
exit 3
fi
# Find the executable, if the ps listing didn't
if [ ! -f ${cmd} -o ! -x ${cmd} ] ; then
cmd2=`which $cmd 2>/dev/null`
if [ $? -eq 0 ] ; then
cmd=$cmd2
else
echo Executable not found
exit 4
fi
fi
# Backtrace it
echo "bt" >/tmp/backtrace$$.txt
echo "q" >>/tmp/backtrace$$.txt
echo "Backtrace of process $1 '$cmd'"
gdb $cmd $1 -x /tmp/backtrace$$.txt -batch 2>/dev/null
rm /tmp/backtrace$$.txt
-----Original Message-----
From: Mike Gerdts [mailto:Michael.Gerdts at alcatel.com]
Sent: Wednesday, March 13, 2002 6:19 AM
To: Andrew Bartlett
Cc: Scott Gifford; David Lee; Samba Technical Mailing List
Subject: Re: Automatic backtrace [Was: Re: NetAPP/Samba 3.0/plugs]
On Wed, 2002-03-13 at 03:56, Andrew Bartlett wrote:
> Scott Gifford wrote:
> > Perhaps I'm missing something obvious, but why not just let Samba dump
> > core?...It's straightforward to provide a backtrace from a core file.
>
> Where? Under what uid? Following what symlinks?
>
> Dumping core just has 'bad idea' written all over it. Plus the people
> who know how to use gdb on a core file would already have a magic 'panic
> action' already setup.
Most systems will not dump core if real, effective, and saved (if it
exists) do not match.
Solaris 7 with the right patches and later allows you to get core dumps
in a defined location, even for setuid programs. See coreadm(1) or
http://lists.samba.org/pipermail/samba-technical/2001-October/032047.html
for details. I have used this quit successfully with a variety of programs
(including samba) to cause core dumps to be put in /var/cores, which I
create as owned by root and mode 700.
I have seen mention of a similar patch for Linux mentioned. I first saw
it mentioned at http://lwn.net/2002/0228/kernel.php3 , the kernel
mailing list message is http://lwn.net/2002/0228/a/coredump-name.php3 .
Mike
-------------- next part --------------
HTML attachment scrubbed and removed
More information about the samba-technical
mailing list