Jeff Dike wrote:
> On Wed, May 17, 2006 at 11:12:22AM -0600, Rennie deGraaf wrote:
>>but the UML
>>kernel seems to be spending some of its time in an idle loop and some in
>>the stack trace below.
> Are you positive that it's hung, and not just taking a while to flush
> out dirty data? The fact that you see either the idle loop or writeout
> code suggests that it's doing writeout and isn't hung.
That had occurred to me, but if so, then it's not flushing properly,
since I've left it for half an hour without it finishing, I only have a
250 MB swap file, and all I did was boot and halt immediately.
Immediately before halting, free (on the UML system) reported only 528
kB of swap in use.
The swap file is sparse; du reports that only 62560 kB are allocated.
The swap device (as reported from inside UML) is /dev/ubdb.
While this is going on, my CPU is pegged at 100%. The host system
reports that the first linux process is using about 65%, and the third
is using 25%. (Other processes on my system are using the remaining
10%.) top also reports that almost 50% of the CPU time is spent in the
kernel (of the host system).
If I bring my system up without swap (by not specifying ubd1 on the
command line), it shuts down properly.
I tried loading UML with the argument "mem=128M" (as opposed to not
specifying "mem=..."); if it never used the swap file, it shut down
properly, but once I wrote and ran a program to force the system to swap
(free reported 692 kB of swap in use at shutdown), it hung up again.
I discovered that running "swapoff -a" also hangs. I can still log into
the system via ssh, so I obviously don't have a total lock-up. I can
attach gdb to it, giving me the following stack trace:
#0 0x40000802 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x400daf42 in swapoff () from /lib/tls/libc.so.6
#2 0x080498aa in ?? ()
#3 0x0804f078 in ?? ()
#4 0xbf643698 in ?? ()
#5 0x400caa31 in getopt_long () from /lib/tls/libc.so.6
#6 0x0804a204 in ?? ()
#7 0x00000002 in ?? ()
#8 0xbf6456d4 in ?? ()
#9 0x0804d209 in _IO_stdin_used ()
#10 0x0804ec80 in ?? ()
#11 0x00000000 in ?? ()
(Sorry, I didn't compile my system with debugging enabled.) When I try
to resume the program after generating the stack trace, it immediately
exits (with status -1), but swapon -s reports the same swap useage as