在Perl 5.16.0中,示例C程序正在运行,但现有的多线程程序正在Perl_sv_upgrade
中止。多线程程序适用于Perl 5.8.8。使用Perl 5.16.0,相同的代码适用于Linux和Solaris。
比较Linux和Hp-PA之间的sv
参数值,显示Hp-PA时sv
值为NULL
。之前有人注意到这个问题吗?请告诉我?
调试并查看sv
值后的Linux堆栈跟踪:
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
在分析gdb中的中止时看到sv值后的HP-PA堆栈跟踪:
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