bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

more info on boot crash


From: Marcus Brinkmann
Subject: more info on boot crash
Date: Sun, 28 Jul 2002 22:10:19 +0200
User-agent: Mutt/1.4i

Hi,

the boot crash Jeff reported is quite spurious.  I can reproduce this in a
neighborhurd, and if I am careful enough to have gdb attached when it is
crashing, the kernel does not panic (phew!).  So it is convenient for me
to debug it.

I have set a breakpoint in libdiskfs/boot-start.c:394, at the dir_lookup
call.  I have set a breakpoint at diskfs_S_dir_lookup.  This break point is
correctly triggered, the inp and outp in the demuxer seems to be intact.  So
the message is correctly sent.

What happens then is that _before_ the actual reply message is sent (at some
random short time after diskfs_S_dir_lookup is invoked), the blocking thread
(which did the dir_lookup) receives a bogus message on the reply port.  This
message is _not_ send by the server stub, as far as I can tell, as I got the
assertion failure while stepping through the dir lookup server side
implementation when the client thread would crash in the assertion, so
something else sent it a message and it woke up.  I have no clue how this
can happen.  I forgot to do an info threads at this point, I will check out
if I see a spurious thread sending messages or so.

I could not access OutP on the client side, but what I saw from the
assembler code, the msgid was 2904, and this is also what I got from
examining InP (it seems that "InP" at that point in gdb referred to OutP
really.  If this is true, the msgh_bits of the bogus message are 2147488256
= 0x8001200
= MACH_MSGH_BITS_COMPLEX | 
MACH_MSGH_BITS(MACH_MSG_TYPE_UNSTRUCTURED,MACH_MSG_TYPE_PORT_SEND_ONCE)
the msgh_size was 48, the remote port 48, the local port 33 (note that the
ports in the original dir_lookup message were 89 and 90), the seqno 220 and
the id, as said above, 2904 (this was also the content of the eax register,
which was checked in the if statement that checks the msgid of the reply
message).

Anybody any ideas what might happen here?

Thanks,
Marcus

-- 
`Rhubarb is no Egyptian god.' GNU      http://www.gnu.org    marcus@gnu.org
Marcus Brinkmann              The Hurd http://www.gnu.org/software/hurd/
Marcus.Brinkmann@ruhr-uni-bochum.de
http://www.marcus-brinkmann.de/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]