Ladeni multithreadove aplikace

Lubos Lunak l.lunak na sh.cvut.cz
Pátek Leden 21 13:08:16 CET 2000


Michal Krause wrote:
> 
> Zdravim,
> 
> pisu (ted uz hlavne ladim) multithreadovou aplikaci (s pthreads).
> Jde o implementaci toho jednouceloveho HTTP serveru, o kterem jsme se
> tady bavili asi pred mesicem, kdyz jsme probirali moznosti paralelizace
> Navrcholu, takze princip aplikace je nasledujici: hlavni thread ceka na
> pozadavky (accept()) a pak otevereny socket predava pracovnim threadum,
> ktere ctou, parsuji a vyrizuji requesty.
> 
> Problem je, ze pracovni thread (zatim to testuju s jednim) mi ze zatim
> neznamych duvodu duvodu kolabuje. Jelikoz ani s pomoci ladicich vypisu
> jsem nebyl schopen najit pricinu, zkusil jsem gdb, jenze jsem se zase moc
> nedozvedel. Aplikace normalne bezi, dela co ma a pak, z niceho nic gdb
> zahlasi:
[snip]
> Takze jsem se chtel zeptat zkusenejsich, jestli lze z vyse uvedeneho
> zjistit mozna pricina, pripadne jak postupovat, abych chybu nasel. Nezda
> se mi, ze by to byl nejaky signal, to by asi zkolabovala cela aplikace,
> nebo by to alespon debugger poznal, ne? Navic je mi divna ta hlaska
> "ptrace in stop_thread: No such process". To stop_pthread snad naznacuje,
> ze jde o korektni ukonceni threadu? Neni to vyloucene, ale pak by musel
> byt chybny ten vypis stacku (where).
> 
> Uz nevim, co bych zkusil, takze diky za kazdou radu...

Ciste teoreticky by mohlo pomoci stahnout si
http://www.gnu.org/software/pth , a pouzit Pth ( resp. jeji Pthreads API
) + nejspis soft syscalls mapping. Vzhledem k tomu, ze je to
kooperativni, tak se s tim da ladit daleko snadneji, navic se da
prelozit tak, ze doslova chrli ladici hlasky.

> 
> S pozdravem
> --
> Michal Krause                                                      /\

 Lubos Lunak
 l.lunak na email.cz http://dforce.sh.cvut.cz/~seli


Další informace o konferenci Linux