Re: [linux-audio-user] Tracking down overruns

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-user] Tracking down overruns
From: Jan Depner (eviltwin69_AT_cableone.net)
Date: Sun Sep 14 2003 - 15:30:32 EEST


Really nice! I'm an old UNIX guy so I just used the brute force
method. I did forget to add that I kill syslogd and crond before I run
Ardour.

Jan

On Sun, 2003-09-14 at 03:13, James Cameron wrote:
> On Sat, Sep 13, 2003 at 03:09:26PM -0500, Jan Depner wrote:
> > killall -9 autorun 2>/dev/null
> > killall -9 artsd 2>/dev/null
> > killall -9 jackd 2>/dev/null [and so forth ...]
>
> This sequence can be simplified and made a little more safe.
>
> a) use "--quiet" instead of "2>/dev/null", so that any failure to run
> killall is not hidden, yet it won't complain if there are no
> processes with that name,
>
> b) use "--signal KILL" instead of "-9", to ease later understanding,
>
> c) use "--wait" as well, so that potential timing issues are excluded
> (if you did the sequence of killall's at higher priority than the
> processes you have killed, then it is theoretically possible for you
> to start new processes before the processes you killed have actually
> died, and these new processes may therefore not run as expected ...
> the technical term is "race condition".)
>
> d) test for and use just the default SIGTERM signal, as there are some
> programs that need to undo some of the work they have done, and a
> SIGKILL (the -9) allows them no chance to do so. (An example are
> programs that create permanent shared memory segments or other IPC
> arcania; and then only delete them properly if not SIGKILLed.)
>
> A rule of thumb is to prove to yourself that SIGTERM doesn't work
> before adopting SIGKILL.
>
> e) place the commands in a file in /usr/local/bin or $HOME/bin, include
> that directory in your PATH, make sure the file is executable
> "chmod +x killit", and add a "set -v", so that when you run it you can
> immediately see it's progress. If you've never written a file
> containing commands to execute, have a go, you'll love the idea.
>
> #!/bin/sh
> set -v
> killall --quiet --wait --signal KILL autorun
> killall --quiet --wait --signal KILL artsd
> killall --quiet --wait --signal KILL jackd
> rm -rf /tmp/jack*
> killall --quiet --wait --signal KILL /usr/lib/ardour/ardourx
> killall --quiet --wait --signal KILL oafd
> killall --quiet --wait --signal KILL xbiff
> killall --quiet --wait --signal KILL envy24control
> killall --quiet --wait --signal KILL /usr/bin/aplay
>
> f) and to really go all the way, do some "factoring" to make it easier
> to add new programs ... although this is no use if programs need
> different signals:
>
> #!/bin/sh
> set -x
> for PROCESS in autorun artsd jackd /usr/lib/ardour/ardourx oafd \
> xbiff envy24control /usr/bin/aplay; do
> killall --quiet --wait --signal KILL $PROCESS
> done
> rm -rf /tmp/jack*
>
>
> References:
>
> man 7 signal
> man 1 killall
> man 1 bash
> tested on Debian GNU/Linux and Red Hat 9
>
> --
> James Cameron mailto:quozl_AT_us.netrek.org http://quozl.netrek.org/


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Sun Sep 14 2003 - 16:00:20 EEST