GDB nejde attachnout na forknutý proces

Jiří Netolický netolicky na epos.cd.cz
Pátek Únor 12 08:17:25 CET 2010


Pěkný den všem.

Napsal jsem jaký si modul pro Apache.  V modulu je zřejmě
chybka, která způsobí že jedno z vláken (apache běží
s mpm_worker == N procesů M vláken) začne vytěžovat
jedno jádro na 100% (zřejmě se mi povedl dead-lock).
Bohužel se to stává velmi zřídka, na serveru je průměrně
4 mil hity / den a stane se to tak dvakrát do týdne.
Chtěl jsem pomocí GDB zjistit v které části kód mi vlákno cyklí,
ale nedaří. Při pokusu o attach na proces ve kterém běží
inkriminované vlákno dostanu jen:

../../gdb/linux-nat.c:977: internal-error: linux_nat_post_attach_wait:
Assertion `pid == new_pid && WIFSTOPPED (status)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.

Attach na parent proces funguje bez problémů, ale nevím
jak se z něj dostat na potomky a jejich vlákna.

Nemáte prosím nějaký tip jak zjisti kde se onen dead-lock nachází?
Systém je Centos 5.4 se všemi aktualizacemi bežící
na nějakém XEN virtuálu.

Díky, Netolish




Další informace o konferenci Linux