Solved. /net + my home dir name /a/vallon is a problem.
On Tue, 1 Jun 1999, Marcus Thiessel wrote:
Justin Vallon writes:
| On Mon, 31 May 1999, Marcus Thiessel wrote:
| > (usually use when the process waits very very short time on
| > IO). Signals don't get delivered to a process who is currently in that
| > state. If the process is blocked on that particular IO you cannot
| > SIGKILL it.
|
| Also, NFS seems to cause this (as well). Locking especially.
Or, trying to access /net/unknown-host with a broken automounter, as it
turns out.
The universe had aligned against me:
1) Somebody (FreeBSD) maps the temp-mount prefix /a/HOST to /net/HOST.
2) My home directory is /a/vallon.
3) (Our) HP automounter and/or /net is severely broken at times.
xemacs decided that /a/vallon was really better off being accessed as
/net/vallon (ha). The broken automounter caused a hard-hang looking for
host vallon. Eventually, my kill -9's got through (days later!).
Here's my start at a fix (with gratuitous context):
--- lisp/paths.el 1999-06-02 15:21:37-04 1.1
+++ lisp/paths.el 1999-06-02 16:42:39-04
@@ -257,26 +257,27 @@
;; Our code handles the following empirically observed conventions:
;; /net is an actual directory! (some systems are not broken!)
;; /net/HOST -> /tmp_mnt/net/HOST (`standard' old Sun automounter)
;; /net/HOST -> /tmp_mnt/HOST (BSDI 4.0)
;; /net/HOST -> /a/HOST (Freebsd 2.2.x)
;; /net/HOST -> /amd/HOST (seen in amd sample config files)
;;
;; If your system has a different convention, you may have to change this.
;; Don't forget to send in a patch!
(when (file-directory-p "/net")
(append
(when (file-directory-p "/tmp_mnt")
(if (file-directory-p "/tmp_mnt/net")
'(("\\`/tmp_mnt/net/" . "/net/"))
'(("\\`/tmp_mnt/" . "/net/"))))
- (when (file-directory-p "/a")
+ ;; /a, but not hp
+ (when (and (file-directory-p "/a") (not (file-exists-p "/bin/hp")))
'(("\\`/a/" . "/net/")))
(when (file-directory-p "/amd")
'(("\\`/amd/" . "/net/")))
)))
))
(if (running-temacs-p)
(initialize-xemacs-paths))
It seems a bit agressive to assume presense of /net and /a implies /a gets
mapped to /net. Even with a working /net directory, I would be hosed, I
believe, when my home directory /a/vallon gets morphed into /net/vallon.
[ Could somebody tell the FreeBSD people to pick a better automount
directory name? 1/2 :-). ]
The [ ! -f /bin/hp ] is bogus, but it seems that something should be
checked here. It might be rare, but /a is a bad name anyway. Is there a
more xemacs-ey (memq '(freebsd) xemacs-build-arch) that could be used?
Here's another place:
--- lib-src/update-elc.sh 1999-06-02 15:48:46-04 1.1
+++ lib-src/update-elc.sh 1999-06-02 15:50:39-04
@@ -65,10 +65,12 @@
# Account for various system automounter configurations
if test -d "/net"; then
if test -d "/tmp_mnt/net"; then tdir="/tmp_mnt/net"; else
tdir="/tmp_mnt"; fi
- EMACS_DIR=`echo "$EMACS_DIR" | \
- sed -e "s|^${tdir}/|/net/|" -e "s|^/a/|/net/|" -e
"s|^/amd/|/net/|"`
- CANON_PWD=`echo "$CANON_PWD" | \
- sed -e "s|^${tdir}/|/net/|" -e "s|^/a/|/net/|" -e
"s|^/amd/|/net/|"`
+ EMACS_DIR=`echo "$EMACS_DIR" | sed -e "s|^${tdir}/|/net/|" -e
"s|^/amd/|/net/|"`
+ CANON_PWD=`echo "$CANON_PWD" | sed -e "s|^${tdir}/|/net/|" -e
"s|^/amd/|/net/|"`
+ if [ ! -f /bin/hp ] ; then
+ EMACS_DIR=`echo "$EMACS_DIR" | sed -e "s|^/a/|/net/|"`
+ CANON_PWD=`echo "$CANON_PWD" | sed -e "s|^/a/|/net/|"`
+ fi
fi
REAL="$EMACS_DIR/`basename $EMACS`"
Again, only do the translation if [ ! -f /bin/hp ].
Is there a need for this script to get a canonical directory name? It
looks like it runs batch-remove-old-elc, and batch-byte-compile. Is `pwd`
stored anyplace permanently? Is a canonical dir name required?
After these changes, xemacs worked! I'll probably send a build success
once I get some auxiliary packages built.
-Justin
vallon(a)mindspring.com