On Wed, 14 Jun 2006, Anselm R. Garbe wrote:

> The process list of magellan looks like /tmp is exported among
> all diskless clients. This also means that the socket file might
> be accessed through NFS, which might cause trouble.

No, /tmp is local on magellan only, the terminals don't even know wmii is
running, they are just X servers. All X clients, including wmii, run on
the server. The only thing different about /tmp is that it is a tmpfs
(i.e. dynamic RAM filesystem). Here is the relevant contents:

drwx------    2 rkirkpat users          60 Jun 12 06:25 
/tmp/ns.rkirkpat.apollo.rkirkpat.net:0
drwx------    2 rkirkpat users          60 Jun  6 06:42 
/tmp/ns.rkirkpat.furies.rkirkpat.net:0
drwx------    2 rkirkpat users          60 Jun 10 17:44 
/tmp/ns.rkirkpat.hathaway.rkirkpat.net:0
drwx------    2 rkirkpat users          60 Jun  6 06:45 
/tmp/ns.rkirkpat.juno.rkirkpat.net:0
drwx------    2 rkirkpat users          60 Jun  6 06:54 
/tmp/ns.rkirkpat.vesta.rkirkpat.net:0
srwx------    1 rkirkpat users           0 Jun 12 06:25 
/tmp/ns.rkirkpat.apollo.rkirkpat.net:0/wmii
srwx------    1 rkirkpat users           0 Jun  6 06:42 
/tmp/ns.rkirkpat.furies.rkirkpat.net:0/wmii
srwx------    1 rkirkpat users           0 Jun 10 17:44 
/tmp/ns.rkirkpat.hathaway.rkirkpat.net:0/wmii
srwx------    1 rkirkpat users           0 Jun  6 06:45 
/tmp/ns.rkirkpat.juno.rkirkpat.net:0/wmii
srwx------    1 rkirkpat users           0 Jun  6 06:54 
/tmp/ns.rkirkpat.vesta.rkirkpat.net:0/wmii

But the good news is that I managed to catch one of the locks up in the
act with strace. I have attached three files:
  'okay' that shows the successful processing of 'Key Mod1-Left'
         event. The last event before the freeze.
  'froze' that shows the frozen processing of 'Key Mod1-Left' event. The
          event that was never recovered from. 
  'wmiirc' is my current wmiirc script, pretty basic.

Hopefully the strace will tell you want happened. I have the history of
the entire run of wmiirc from shortly after startup until lockup a day or
so later, but it is rather large. I will send it only if it you think it
would be helpful. Thanks!

---------------------------------------------------------------------------
|   "For to me to live is Christ, and to die is gain."                    |
|                                            --- Philippians 1:21 (KJV)   |
---------------------------------------------------------------------------
|   Ryan Kirkpatrick  |  Boulder, Colorado  |  http://www.rkirkpat.net/   |
---------------------------------------------------------------------------

#!/bin/sh
# configure wmii

# Utility functions.
xwrite() {
        file="$1"; shift
        echo -n "$@" | wmiir write "$file"
}
proglist() {
        ls -lL "$@" 2>/dev/null | awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' | 
sort -u
}
del_tag () {
        echo $2 |
        awk -v val=$1 '{ split($0,a,/\+/); nr=0;
                         for(i in a)
                            if (a[i] != val) {
                                if (nr++ > 0) printf "+"
                                printf a[i] }}'
}
add_tag () {
        if [ -n "$2" ]; then
            echo -n "`del_tag $1 $2`+$1"
        else
            echo -n $1
        fi 
}
split_tags () {
        echo $* | sed 's/[-+]/\
&/g' 
}

# Default keys.
MODKEY=Mod1
UP=Up
DOWN=Down
LEFT=Left
RIGHT=Right

# Colors and fonts.
WMII_FONT='fixed'
WMII_SELCOLORS='#ffffff #006600 #004400'
WMII_NORMCOLORS='#aaaaaa #002200 #004400'
export WMII_FONT WMII_NORMCOLORS WMII_SELCOLORS

# give wmiiwm a chance to start
while :
do
        echo Start wmiirc | wmiir write /event >/dev/null 2>&1 && break
        sleep 1
done

# WM CONFIGURATION
xwrite /def/border 2
xwrite /def/font $WMII_FONT
xwrite /def/selcolors $WMII_SELCOLORS
xwrite /def/normcolors $WMII_NORMCOLORS
xwrite /def/colmode default
xwrite /def/colwidth 0

# TAGGING RULES
wmiir write /def/rules <<EOF
/XMMS.*/ -> ~
/Gimp.*/ -> ~
/MPlayer.*/ -> ~
/.*/ -> !
/.*/ -> 1
EOF

# MISC
xsetroot -solid '#000000'
dpms init
status &
PROGS_FILE=/tmp/.wmiimenu.$USER.proglist
proglist `echo "$PATH" | tr : ' '` >$PROGS_FILE &

# SHORTCUTS
xwrite /def/grabmod $MODKEY
wmiir write /def/keys <<EOF
$MODKEY-$LEFT
$MODKEY-$RIGHT
$MODKEY-$DOWN
$MODKEY-$UP
$MODKEY-space
$MODKEY-d
$MODKEY-f
$MODKEY-s
$MODKEY-m
$MODKEY-a
$MODKEY-p
$MODKEY-t
$MODKEY-Return
$MODKEY-Shift-$LEFT
$MODKEY-Shift-$RIGHT
$MODKEY-Shift-$UP
$MODKEY-Shift-$DOWN
$MODKEY-Shift-space
$MODKEY-Shift-c
$MODKEY-Shift-t
$MODKEY-Control-$LEFT
$MODKEY-Control-$RIGHT
$MODKEY-Control-$DOWN
$MODKEY-Control-$UP
$MODKEY-Control-x
EOF

# EVENT LOOP
wmiir read /event 2>/dev/null |
while read event
do
        set -- $event
        type="$1"; shift
        case "$type" in
        Start)
                if test wmiirc = "$1"
                then
                        exit
                fi;;
        BarClick)
                xwrite /ctl view ''"$1"'';;
        Key)
                case "$1" in
                $MODKEY-$LEFT)
                        xwrite /view/ctl select prev;;
                $MODKEY-$RIGHT)
                        xwrite /view/ctl select next;;
                $MODKEY-$DOWN)
                        xwrite /view/sel/ctl select next;;
                $MODKEY-$UP)
                        xwrite /view/sel/ctl select prev;;
                $MODKEY-space)
                        xwrite /view/ctl select toggle;;
                $MODKEY-d)
                        xwrite /view/sel/mode default;;
                $MODKEY-s)
                        xwrite /view/sel/mode stack;;
                $MODKEY-m)
                        xwrite /view/sel/mode max;;
                $MODKEY-f)
                        xwrite /view/0/sel/geom 0 0 east south;;
                $MODKEY-a)
                        PATH=$HOME/.wmii-3:/etc/X11/wmii-3:$PATH `proglist 
/etc/X11/wmii-3 $HOME/.wmii-3 | wmiimenu` &;;
                $MODKEY-p)
                        wmiisetsid `wmiimenu <$PROGS_FILE` &;;
                $MODKEY-t)
                        xwrite /ctl view "`wmiir read /tags | wmiimenu`" &;;
                $MODKEY-Return)
                        xterm -ls -name "Shell" -title "Shell" &;;
                $MODKEY-Shift-$LEFT)
                        xwrite /view/sel/sel/ctl sendto prev;;
                $MODKEY-Shift-$RIGHT)
                        xwrite /view/sel/sel/ctl sendto next;;
                $MODKEY-Shift-$DOWN)
                        xwrite /view/sel/sel/ctl swap down;;
                $MODKEY-Shift-$UP)
                        xwrite /view/sel/sel/ctl swap up;;
                $MODKEY-Shift-space)
                        xwrite /view/sel/sel/ctl sendto toggle;;
                $MODKEY-Shift-c)
                        xwrite /view/sel/sel/ctl kill;;
                $MODKEY-Shift-t)
                        {
                            oldtags=`wmiir read /view/sel/sel/tags`
                            newtags=`wmiir read /tags | wmiimenu`
                            if echo $newtags | egrep -q '^[+-]'; then
                                for line in `split_tags $newtags`; do
                                    tag=${line#[+-]}
                                    if [ -n "${line%%-*}" ]; then
                                        oldtags=`add_tag $tag $oldtags`
                                    else
                                        oldtags=`del_tag $tag $oldtags`
                                    fi
                                done
                                xwrite /view/sel/sel/tags $oldtags
                            else
                                xwrite /view/sel/sel/tags $newtags
                            fi 
                        }&;;
                $MODKEY-Control-$LEFT)
                        xwrite /view/sel/sel/ctl swap prev;;
                $MODKEY-Control-$RIGHT)
                        xwrite /view/sel/sel/ctl swap next;;
                $MODKEY-Control-$DOWN)
                        xwrite /view/sel/sel/ctl swap down;;
                $MODKEY-Control-$UP)
                        xwrite /view/sel/sel/ctl swap up;;
                $MODKEY-Control-x)
                        dpms lock;;
                esac;;
        esac
done &
Okay processing of 'Key Mod1-Left' event.
=================================================================
read(0, "K", 1)                         = 1
read(0, "e", 1)                         = 1
read(0, "y", 1)                         = 1
read(0, " ", 1)                         = 1
read(0, "M", 1)                         = 1
read(0, "o", 1)                         = 1
read(0, "d", 1)                         = 1
read(0, "1", 1)                         = 1
read(0, "-", 1)                         = 1
read(0, "L", 1)                         = 1
read(0, "e", 1)                         = 1
read(0, "f", 1)                         = 1
read(0, "t", 1)                         = 1
read(0, "\n", 1)                        = 1
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
pipe([3, 4])                            = 0
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [CHLD], 8) = 0
fork()                                  = 14277
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
close(4)                                = 0
close(4)                                = -1 EBADF (Bad file descriptor)
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [CHLD], 8) = 0
fork()                                  = 14278
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
close(3)                                = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
rt_sigaction(SIGINT, {0x806e2f8, [], 0x4000000}, {0x807a900, [], 0x4000000}, 8) 
= 0
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) = 14278
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) = 14277
rt_sigprocmask(SIG_BLOCK, [CHLD TTOU], [CHLD], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
rt_sigaction(SIGINT, {0x807a900, [], 0x4000000}, {0x806e2f8, [], 0x4000000}, 8) 
= 0
close(3)                                = -1 EBADF (Bad file descriptor)
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD (Child exited) ---
wait4(-1, 0xbfffee00, WNOHANG, NULL)    = 0
sigreturn()                             = ? (mask now [])
ioctl(0, SNDCTL_TMR_TIMEBASE, 0xbffff50c) = -1 EINVAL (Invalid argument)
_llseek(0, 0, 0xbffff598, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
Frozen processing of 'Key Mod1-Left' event.
=====================================================================
read(0, "K", 1)                         = 1
read(0, "e", 1)                         = 1
read(0, "y", 1)                         = 1
read(0, " ", 1)                         = 1
read(0, "M", 1)                         = 1
read(0, "o", 1)                         = 1
read(0, "d", 1)                         = 1
read(0, "1", 1)                         = 1
read(0, "-", 1)                         = 1
read(0, "L", 1)                         = 1
read(0, "e", 1)                         = 1
read(0, "f", 1)                         = 1
read(0, "t", 1)                         = 1
read(0, "\n", 1)                        = 1
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
pipe([3, 4])                            = 0
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [CHLD], 8) = 0
fork()                                  = 22116
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
close(4)                                = 0
close(4)                                = -1 EBADF (Bad file descriptor)
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [CHLD], 8) = 0
fork()                                  = 22117
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
close(3)                                = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
rt_sigaction(SIGINT, {0x806e2f8, [], 0x4000000}, {0x807a900, [], 0x4000000}, 8) 
= 0
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) = 22116
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) = 22117
wait4(-1, 
_______________________________________________
[email protected] mailing list
http://wmii.de/cgi-bin/mailman/listinfo/wmii

Reply via email to