freebsd-5.4-stable panics (fwd)

Robert Watson rwatson at FreeBSD.org
Thu Sep 29 13:55:08 PDT 2005


The attached message and debugging information suggests that a thread in 
an incompletely initialized state (td->td_ksegrp == NULL) is being hooked 
up to a process, and that fill_kinfo_thread() is pretty sure this will 
never happen (it assumes that td_ksegrp != NULL).  I've suggested a 
work-around of skipping threads with td_ksegrp == NULL in the calling 
function, but this raises a general question about the invariants of the 
KSE/thread/... code during thread initialization.  Should a thread hooked 
up to a process thread list ever have a td_ksegrp of NULL?  Once a thread 
has a KSE group that is non-NULL, will it ever change such that monitoring 
code needs to worry?  Is kern_proc.c making assumptions that are too 
strong, or do we just have a nasty SMP race here and some locking work is 
needed?  The remainder of the thread can be found on the -hackers list, 
but the key points are:

- Shows up on quad-processor systems running 6.x
- Multi-threaded apps are doing lots of network I/O
- Occurs while running top under high load

Thanks,

Robert N M Watson

---------- Forwarded message ----------
Date: Thu, 29 Sep 2005 16:17:57 -0400 (EDT)
From: Rob Watt <rob at hudson-trading.com>
To: Robert Watson <rwatson at FreeBSD.org>
Cc: Rob Watt <rob at hudson-trading.com>, Jason Carroll <jason at hudson-trading.com>,
     freebsd-hackers at FreeBSD.org, freebsd-amd64 at FreeBSD.org,
     mikep at hudson-trading.com
Subject: Re: freebsd-5.4-stable panics

On Thu, 29 Sep 2005, Robert Watson wrote:

> Could you dump the contents of *td and *td->td_proc for me?  I'm quite
> interested to know what the value in td->td_proc->p_state is, among other
> things.  If I could also have you generate a dump of the KSE group
> structures in td->td_proc->p_ksegrps and the threads in
> td->td_proc->p_threads.

I've attached a file with many of the values you have asked for. We
looked at some of the threads referenced by td->td_proc->p_threads, but we
weren't sure we were walking the list correctly. Do you have any tips for
walking those thread lists?

>
> Could you tell me if the program named by p->p_comm is linked against a
> threading library?  If it's a custom app, you may already know, and if
> not, you can run ldd on the application to see what it is linked against.
>

The programs named by p->p_comm is linked against the pthreads library.

> Depending on how much time you have available, it might make sense for me
> to grab from you a copy of your source tree, compiled kernel with debug
> symbols, and core dump.

We can upload the source, kernel etc somewhere, but uncompressed that is
about 5G of data. What is the best way to get that to you?

Thanks.

-
Rob Watt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 6.0-BETA5.kgdb.out
Type: application/octet-stream
Size: 15282 bytes
Desc: 
Url : http://lists.freebsd.org/pipermail/freebsd-threads/attachments/20050929/d73d13d7/6.0-BETA5.kgdb.obj


More information about the freebsd-threads mailing list