Solution: Get the source off of http://sawmill.sourceforge.net. In the file server.c find the function server_accept_connection:
static void
server_accept_connection(int unused_fd)
{
int confd = accept(socket_fd, NULL, NULL);
...
That appeared to be where the crash in sawfish was occuring,
although "man 2 accept" apparently permitted this usage of accept.
Curiously, providing a dummy struct sockaddr as below completely
fixed my crashing problems:
static void
server_accept_connection(int unused_fd)
{
int confd;
struct sockaddr sa;
int sa_len = sizeof(sa);
confd = accept(socket_fd, &sa, &sa_len );
...
Compile, force uninstall of the sawfish RPM package and install
your new sawfish compiled from changed source.
Solution: There are two places of interest in the xemacs startup sequence that I sometimes find to cause problems:
Go to http://www.emacswiki.org/ for lots of useful emacs info. Not all of it applies to xemacs -- check http://www.xemacs.org/
Solution: Look at the source code of the LKM driver (fa311.c) supplied with the card. Search for "read_mac", you will see that if the driver fails to read the MAC off of the card's registers, it sets the MAC itself, as follows: the first three bytes are fixed vendor code, the remaining three bytes are chosen at random based on kernel time (jiffies)! Wow. Pick your own last 3 bytes and hard-code them.
If you have two cards, it gets more interesting. You will notice that a variable nearby holds the card's irq. Now your 2 cards will have different irqs, so pick two MAC addresses you like and hard-code them based on current irq :-)
Solution: