[Zope-dev] ZEO Client nonresponsive

Dieter Maurer dieter@handshake.de
Mon, 14 Apr 2003 20:52:08 +0200


Jan-Wijbrand Kolman wrote at 2003-4-14 12:51 +0200:
 > ...
 > I include the output of a gdb session at the end of this mail.

 > It is not very informative

It is not so bad...

   We see that is is no locking problem.

 > Do you have more ways to get gdb more informative? Do you need more 
 > details?

I think you can call Python functions only in the thread that
holds the Python interpreter lock. Otherwise, you
have only GDB and low (C) level ways.

GDBs most usefull command in this respect is "bt" (aka "backtrace").
It shows you the call history of the selected thread.

 > ....
 > (gdb) info threads
 >    7 Thread 114694 (LWP 19135)  0x40151b1e in select () from 
 > /lib/libc.so.6
 >    6 Thread 98309 (LWP 19134)  0x40151b1e in select () from /lib/libc.so.6
 >    5 Thread 81924 (LWP 19133)  0x40151b1e in select () from /lib/libc.so.6
 >    4 Thread 65539 (LWP 19132)  0x40151b1e in select () from /lib/libc.so.6
 >    3 Thread 16386 (LWP 19106)  0x40151b1e in select () from /lib/libc.so.6
 >    2 Thread 32769 (LWP 19105)  0x401502c0 in poll () from /lib/libc.so.6
 >    1 Thread 16384 (LWP 19104)  0x40151b1e in select () from /lib/libc.so.6

Thread 2 is waiting is "poll" (this is almost surely the ZServer
main loop). All other threads are waiting is "select".

You want to know what led to these selects and use the "bt" command
for this. Almost surely, it is an external C extension.
Then it will reveal itself.


Dieter