Subject: kernel hangs
To: None <macbsd-development@sun-lamp.cs.berkeley.edu, core@sun-lamp.cs.berkeley.edu>
From: Lawrence Kesteloot <lk@milquetoast.engr.sgi.com>
List: macbsd-development
Date: 06/03/1994 13:27:18
I hope this looks familier. I'm not sure where to go from here>
The reason this is also sent to macbsd is that the pc532 port is
using a modified version of your ncr scsi driver. I was wondering if
something similar has been seen in the mac version. (i.e. is it due
to a polled device driver?)
The pc532 is currently having "hangs" in the kernel. My last
"good" kernel was May 20. I just last night got it to the point where
it was hung, except that ps was in core so no disk I/O was required
to run it. It showed that after a compile (cpp, cc1, as) that make was
getting hung in "short term disk wait" that never got terminated.
a) The cc1 started using a lot of memory. Swap space went up from 8
blocks to around 800 blocks.
b) as worked just fine after the cc1, but the swap memory use didn't go
down.
c) after as quit, so did cc, and then make got hung: ps reported WCHAN
as thrd_b, STAT as D. Also, the swap space reported (by the old
swapinfo -- what is it's replacement?) never went down. It was if the
swap space clean code never ran or whatever code it is that reclaims
swap space at the end of a program.
Is it possible that the new swap code does not expect a polled disk
driver and thus does the wrong thing when it requests a swap in?
Executables appear to be paging correctly.
d) The system works well until some large program requires the swap
space to go up. Then all disk I/O appears to stop. Sometimes disk
I/O continues, but the one process is stuck.
Here is some info from ps and ktrace:
ps aulx (after the "hang" see "make regex.o"
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND UID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME COMMAND
root 0 0.0 0.0 0 0 ?? DLs 7:49PM 0:00.02 (swapper) 0 0 0 0 -18 0 0 0 schedu DLs ?? 0:00.02 (swapper)
root 1 0.0 0.0 184 136 ?? Is 7:49PM 0:00.88 /sbin/init -- 0 1 0 21 10 0 184 136 wait Is ?? 0:00.88 /sbin/init --
root 2 0.0 0.0 0 12 ?? DL 7:49PM 0:00.55 (pagedaemon) 0 2 0 2 -21 0 0 12 swpgio DL ?? 0:00.55 (pagedaemon)
root 35 0.0 0.0 104 20 ?? Is 7:51PM 0:00.19 (portmap) 0 35 1 1 2 0 104 20 select Is ?? 0:00.19 (portmap)
root 51 0.0 0.0 144 120 ?? Is 7:51PM 0:02.18 syslogd 0 51 1 0 2 0 144 120 select Is ?? 0:02.18 syslogd
root 65 0.0 0.0 16 32 ?? Ss 7:52PM 0:14.55 update 0 65 1 0 18 0 16 32 pause Ss ?? 0:14.55 update
root 67 0.0 0.0 252 88 ?? Ss 7:52PM 0:00.81 cron 0 67 1 0 18 0 252 88 pause Ss ?? 0:00.81 cron
root 73 0.0 0.0 196 124 ?? Is 7:52PM 0:00.78 lpd 0 73 1 28 2 0 196 124 select Is ?? 0:00.78 lpd
root 76 0.0 0.0 196 120 ?? Is 7:52PM 0:01.18 (inetd) 0 76 1 31 2 0 196 120 select Is ?? 0:01.18 (inetd)
phil 89 0.0 0.0 452 404 00 Ss 7:52PM 1:26.79 -bash (bash) 203 89 1 4 18 0 452 404 pause Ss 00 1:26.79 -bash (bash)
phil 100 0.0 0.0 460 452 00 D 8:11PM 0:03.50 make regex.o 203 100 89 4 -18 0 460 452 thrd_b D 00 0:03.50 make regex.o
phil 2342 0.0 0.0 188 140 00 R+ 8:34PM 0:00.20 ps aulx 203 2342 89 16 32 0 188 140 - R+ 00 0:00.20 ps aulx
Last 40 lines of a dkump on the make process:
100 make NAMI "syntax.h"
100 make RET stat 0
100 make CALL stat(0x4cb90,0xfdbfccd4)
100 make NAMI "buffer.h"
100 make RET stat 0
100 make CALL break(0x71ffc)
100 make RET break 0
100 make CALL stat(0x4cc30,0xfdbfcc6c)
100 make NAMI "config.h.in"
100 make RET stat 0
100 make CALL stat(0x4cbe0,0xfdbfccd4)
100 make NAMI "config.h"
100 make RET stat 0
100 make CALL stat(0x45280,0xfdbfcc88)
100 make NAMI "/home/othersrc/gnu/emacs-19.24/src/m/ns32000.h"
100 make RET stat 0
100 make CALL stat(0x452c0,0xfdbfcc88)
100 make NAMI "/home/othersrc/gnu/emacs-19.24/src/s/netbsd.h"
100 make RET stat 0
100 make CALL stat(0x4ccc0,0xfdbfccd4)
100 make NAMI "regex.h"
100 make RET stat 0
100 make CALL stat(0x4cb40,0xfdbfcd3c)
100 make NAMI "regex.o"
100 make RET stat -1 errno 2 No such file or directory
100 make CALL fstat(0x1,0xfdbfca70)
100 make RET fstat 0
100 make CALL write(0x1,0x28000,0x65)
100 make GIO fd 1 wrote 101 bytes
"gcc -c -Demacs -DHAVE_CONFIG_H -I. -I/home/othersrc/gnu/emacs-19.24/\
src -g -O regex.c
"
100 make RET write 101/0x65
100 make CALL vfork
100 make RET vfork 101/0x65
100 make CALL wait4(0xffffffff,0xfdbfcd58,0,0)
100 make RET wait4 101/0x65
100 make CALL stat(0x4cb40,0xfdbfcd50)
100 make NAMI "regex.o"
100 make RET stat 0
Thanks for any help.
--Phil
------------------------------------------------------------------------------