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: