В Perl 5.16.0 пример программы C работает, но существующая многопоточная программа прерывается в Perl_sv_upgrade
. Многопоточная программа отлично работает с Perl 5.8.8. Тот же код работает в Linux и Solaris с Perl 5.16.0.
Сравнение значения аргумента sv
между Linux и Hp-PA показывает, что значение sv
равно NULL
в случае Hp-PA. Кто-нибудь замечал эту проблему раньше. Пожалуйста, дайте мне знать?
Трассировка стека Linux после отладки и просмотра значения sv
:
Breakpoint 4, Perl_sv_upgrade (my_perl=0x14fe6400, sv=0x150317a8, new_type=SVt_PV)
at sv.c:1140
1140 sv.c: No such file or directory.
(gdb) where
#0 Perl_sv_upgrade (my_perl=0x14fe6400, sv=0x150317a8, new_type=SVt_PV) at sv.c:1140
Трассировка стека HP-PA после просмотра значения sv при анализе прерывания в gdb:
Thread 3 (system thread 428417):
#3 signal handler called
#4 0xca9825c4 in Perl_sv_upgrade (my_perl=0x40236f10, sv=0x0, new_type=SVt_PV)
at sv.c:1260
sv_upgrade
плохо. Не делай этого. - person ikegami   schedule 04.10.2012bt
gdb
может помочь найти фактическую ошибку. - person ikegami   schedule 04.10.2012bt
gdb
может помочь найти фактическую ошибку. - person ikegami   schedule 08.10.2012sv=0x0
, но без полной трассировки стека мы не можем сказать, что именно. - person Schwern   schedule 22.10.2012