Ktory thread sposobil coredump?
Jan Pechanec
jp at devnull.cz
Sat Feb 4 22:48:02 CET 2006
On Sat, 4 Feb 2006, Marian Cerny wrote:
>> Nejsem zas tak zkuseny uzivatel gdb, ale skoro bych rekl, ze core-dump
>> nemohl zpusobit jiny, nez "current" thread. Takze staci coredump
>> spolscne s puvodnim binarem nahrat zpet do gdb - a zjistit, ktery thread
>> je "current".
>
>Ano, zrejme vlastny coredump nemohol sposobit iny nez current thread.
>Lenze tam bude nejaky figel, ze current thread nebude ten, ktory vykonal
>ten neplatny pristup do pamete (segmentation fault).
>
>Moja hypoteza je taka, ze ked sa vykona instrukcia, ktora sposobi
>neplatny pristup do pamete, tak sa tomu procesu posle signal, ktory bud
>
> o spracuje aktualne vlakno, ale este preda riadenie inemu vlaknu,
> ktore vykona vlastny coredump, alebo
>
> o spracuje rovno ine vlakno.
tyhle veci jsou synchronni - sigsegv, fpe a spol, tj. signal urcite
dostane to vlakno, ktere to zpusobilo. Samozrejme, pokud dane vlakno maskuje
sigsegv nebo dela neco, co UNIX03 explicitne nepovoluje v dane situaci,
vysledek je nedefinovany.
to volani adresy 0x00... muze byt treba tim, ze se zavola sym =
dlsym(...), nezkontroluje se navratova hodnota a pak se zavola ten sym().
k cemu potrebujes vedet, ktery vlakno to zpusobilo? Melo by pro
zakladni orientaci stacit, kde v kodu se to stalo, ne? Nebo to nemuzes
prelozit s debug symboly?
>
>Mne potom vlastne nejde o to, ktore vlakno sposobi/vykona ten coredump,
>ale ktore pustilo instrukciu, ktora vykonala neplatny pristup do pamete.
>
>To, ze to current vlakno z coredumpu nie je to, ktore vykonalo neplatny
>pristup do pamete, mam overene praxou, ked sme vytvarali viacvlaknovu
>hru Dark Oberon. Lenze tam som mal debugovacie informacie a stacilo sa
hmm, divny, mluvis o FBSD nebo o Linuxu? Mohlo by to souviset s tim,
o cem mluvim nahore? Treba vsechna vlakna maskujici vsechny signaly a jedno
vlakno jako signal manager cekajici v sigwait()?
h.
--
Jan Pechanec <jp (at) devnull (dot) cz>
http://www.devnull.cz
More information about the Users-l
mailing list