Ugh again (2.1.65)

David E. Fox (dfox@belvdere.vip.best.com)
Wed, 26 Nov 1997 15:47:42 -0800


OK folks, I've got two more "Ugh's" today show up in my
/var/log/messages file:

Nov 26 12:41:55 belvdere kernel: Ugh at c010ff13
Nov 26 14:13:03 belvdere PAM_pwdb[5773]: (login) session opened for user dfox by dfox(uid=0)
Nov 26 14:41:13 belvdere kernel: Ugh at c010ff13
Nov 26 14:42:40 belvdere kernel: ext2_rmdir: d_count=39, pruning
Nov 26 14:43:10 belvdere last message repeated 3 times
Nov 26 14:43:28 belvdere last message repeated 2 times

Note that they both give the same address, which is in __do_page_fault.
Also not the close proximity of the ext2_rmdir: message (which I've
gotten a few times whilst removing directories; however, I don't
recently remember doing anything like 'rm -rf' in the last
ten minutes or so.)

As far as I can tell, I wasn't doing much of anything that would
cause either of the "Ugh" messages; someone was kind enough to
forward a message from Linux on this topic. The first time I might
have been running netscape, the second I was just reading mail
with elm, and I also latexed a file, and viewed it with
xdvi. Not a whole lot else was running:

FLAGS UID PID PPID PRI NI SIZE RSS WCHAN STA TTY TIME COMMAND
100 0 1 0 0 0 952 60 end S ? 0:04 init
40 0 2 1 0 0 0 0 end SW ? 0:05 (kflushd)
40 0 3 1 -12 -12 0 0 end SW< ? 1:07 (kswapd)
140 0 19 1 0 0 936 44 end S ? 0:00 /sbin/ker
140 0 100 1 2 0 972 88 end S ? 0:06 syslogd
140 0 109 1 0 0 1216 0 end SW ? 0:00 (klogd)
40 0 120 1 4 0 972 100 end S ? 0:01 crond
140 1 131 1 0 0 964 0 end SW ? 0:00 (portmap)
40 0 142 1 0 0 1220 128 end S ? 0:01 /usr/sbin
140 0 154 1 0 0 960 0 end SW ? 0:00 (inetd)
40 0 165 1 0 0 1152 0 end SW ? 0:00 (named)
140 0 176 1 0 0 980 0 end SW ? 0:00 (lpd)
40 0 188 1 0 0 988 68 end S ? 0:00 rpc.mount
40 0 197 1 0 0 1028 72 end S ? 0:00 rpc.nfsd
140 0 231 1 0 0 1004 0 end SW ? 0:00 (ypserv)
140 0 244 1 0 0 952 0 end SW ? 0:00 (rpc.yppa
140 0 259 1 0 0 1064 28 end S ? 0:00 (amd)
40 0 261 1 0 0 0 0 end SW ? 0:00 (rpciod)
40 0 262 1 0 0 0 0 end SW ? 0:00 (lockd)
140 0 274 1 6 0 1368 248 end S ? 0:01 sendmail:
140 0 287 1 0 0 952 24 end S a0 0:00 gpm -t Mo
140 0 298 1 0 0 1488 224 end S ? 0:10 httpd
140 0 314 1 0 0 1252 0 end SW ? 0:00 (smbd)
140 0 323 1 0 0 1136 112 end S ? 0:00 nmbd -D
40 9 346 1 0 0 1924 416 end S ? 0:02 /usr/sbin
40 9 348 1 0 0 1272 0 end SW ? 0:00 (rc.news)
100 0 364 1 0 0 1224 0 end SW 1 0:00 (login)
100 405 365 1 0 0 1228 0 end SW 2 0:00 (login)
140 0 371 1 0 0 928 44 end S ? 0:09 update (b
100 405 3668 1 0 0 1224 0 end SW 4 0:00 (login)
100 405 5773 1 0 0 1224 0 end SW 5 0:00 (login)
140 0 9002 1 0 0 1036 56 end S a1 0:00 -dip (204
100 0 10083 1 0 0 2884 64 end S ? 0:04 xterm -cr
0 405 11943 1 0 0 11804 8 end S p0 0:00 (netscape
40 405 12025 1 0 0 2084 0 end SW p0 0:00 (sh)
100 405 13130 1 0 0 1224 0 end SW 3 0:00 (login)
100 0 14241 1 0 0 932 0 end SW 6 0:00 (mingetty
140 99 308 298 0 0 1504 72 end S ? 0:00 (httpd)
140 99 309 298 0 0 1504 76 end S ? 0:00 (httpd)
140 99 310 298 0 0 1504 76 end S ? 0:00 (httpd)
140 99 311 298 0 0 1488 136 end S ? 0:00 (httpd)
140 99 312 298 0 0 1488 136 end S ? 0:00 (httpd)
140 99 12577 298 0 0 1488 120 end S ? 0:00 (httpd)
0 9 359 346 0 0 940 0 end SW ? 0:00 (crosspos
0 9 360 346 0 0 940 0 end SW ? 0:00 (overchan
0 9 397 348 1 0 1312 356 end S ? 4:01 sh /usr/l
0 0 372 364 0 0 1324 0 end SW 1 0:00 (bash)
0 405 384 365 0 0 1308 0 end SW 2 0:00 (bash)
0 405 646 384 0 0 1256 0 end SW 2 0:00 (startx)
0 9 14075 397 0 0 940 244 end S ? 0:00 sleep 600
0 405 647 646 0 0 1988 0 end SW 2 0:00 (xinit)
100 0 648 647 0 0 10980 3728 end S 2 16:21 /usr/X11R
0 405 658 647 0 0 1256 0 end SW 2 0:00 (sh)
0 405 664 658 0 0 3160 464 end S 2 58:11 /usr/X11/
0 405 665 658 0 0 5824 576 end S 2 0:06 /usr/X11R
0 405 3669 3668 0 0 1320 20 end S 4 0:01 (bash)
0 405 13810 3669 0 0 1248 368 end S 4 0:00 (elm)
0 405 12598 5773 0 0 1316 184 end S 5 0:00 (bash)
100 405 10084 10083 0 0 1312 4 end S p0 0:00 (bash)
0 405 12026 12025 0 0 5436 188 end S p0 10:26 /usr/lib/
0 405 13398 13130 0 0 1316 0 end SW 3 0:00 (bash)
0 405 11802 13398 0 0 2236 764 end S 3 0:21 slrn --sp
0 405 13844 13810 5 0 1416 644 end S 4 0:00 /bin/vi /
0 405 14095 13844 8 0 1252 500 end S 4 0:00 /bin/bash
0 405 14096 14095 11 0 1100 424 R 4 0:00 ps -alx

Here is a dissassembly:

belvdere:~$ gdb /usr/src/linux/vmlinux
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.16 (i586-unknown-linux), Copyright 1996 Free Software Foundation, Inc...
(no debugging symbols found)...
(gdb) disass __do_page_fault
Dump of assembler code for function __do_page_fault:
0xc010fed4 <__do_page_fault>: subl $0xc,%esp
0xc010fed7 <__do_page_fault+3>: pushl %ebp
0xc010fed8 <__do_page_fault+4>: pushl %edi
0xc010fed9 <__do_page_fault+5>: pushl %esi
0xc010feda <__do_page_fault+6>: pushl %ebx
0xc010fedb <__do_page_fault+7>: movl 0x28(%esp,1),%esi
0xc010fedf <__do_page_fault+11>: movl %esp,%eax
0xc010fee1 <__do_page_fault+13>: andl $0xffffe000,%eax
0xc010fee6 <__do_page_fault+18>: movl 0x3bc(%eax),%ebx
0xc010feec <__do_page_fault+24>: cmpl $0x0,0xc022d28c(,%ebx,4)
0xc010fef4 <__do_page_fault+32>: je 0xc010ff08 <__do_page_fault+52>
0xc010fef6 <__do_page_fault+34>: pushl $0xc010fef6
0xc010fefb <__do_page_fault+39>: pushl $0xc01de86d
0xc010ff00 <__do_page_fault+44>: call 0xc01139a0 <printk>
0xc010ff05 <__do_page_fault+49>: addl $0x8,%esp
0xc010ff08 <__do_page_fault+52>: movzbl 0xc0200c90,%eax
0xc010ff0f <__do_page_fault+59>: cmpl %eax,%ebx
0xc010ff11 <__do_page_fault+61>: jne 0xc010ff2a <__do_page_fault+86>
0xc010ff13 <__do_page_fault+63>: pushl $0xc010ff13
0xc010ff18 <__do_page_fault+68>: pushl $0xc01defc7
0xc010ff1d <__do_page_fault+73>: call 0xc01139a0 <printk>

The Ugh appears at 0xc010ff13, at the 'pushl', and here it is
pushing its own address and calling the "Ugh" function. Unless
the cmpl doesn't take (what's in %eax at this point??) then the
Ugh happens.

I looked, and SMP=1; I guess it is shipped this way, so I am
running SMP on uniprocessor Pentium machine, rather generic
hardware (Triton motherboard).

------------------------------------------------------------------------
David E. Fox Tax Thanks for letting me
dfox@belvdere.vip.best.com the change magnetic patterns
root@belvedere.sbay.org churches on your hard disk.
-----------------------------------------------------------------------