Пример программы C работает, но существующая многопоточная программа C++ прерывается в Perl_sv_upgrade в Perl 5.16.0

В 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

person yogishaj    schedule 04.10.2012    source источник
comment
Да, передавать NULL в sv_upgrade плохо. Не делай этого.   -  person ikegami    schedule 04.10.2012
comment
Использование bt gdb может помочь найти фактическую ошибку.   -  person ikegami    schedule 04.10.2012
comment
@mob - Фрагмент кода, размещенный мной в ссылке, работает, но код, который я использую, является конфиденциальным, но похож на тот, что указан в ссылке. Я подозреваю, что некоторые параметры компилятора ИЛИ патчи, но не уверен, " title="c ​​вызов perl code eval sv без передачи аргументов скрипту"> stackoverflow.com/questions/12403729/   -  person yogishaj    schedule 08.10.2012
comment
@ikegami - я не передаю NULL в sv_upgrade. Образец программы, размещенный мной по ссылке, работает, но аналогичный код, написанный в нашем проекте, не работает на HPUX и AIX. stackoverflow.com/questions/12403729/   -  person yogishaj    schedule 08.10.2012
comment
@mob - я новичок в коде Perl, и мне нужно время, чтобы найти проблему. Если вы знаете какие-либо группы разработчиков Perl, которые могут мне помочь, не могли бы вы предложить?   -  person yogishaj    schedule 08.10.2012
comment
@ikegami - я новичок в коде Perl, и мне нужно время, чтобы найти проблему. Если вы знаете какие-либо группы разработчиков Perl, которые могут мне помочь, не могли бы вы предложить?   -  person yogishaj    schedule 08.10.2012
comment
@yogishaj, ну что-то есть. Опять же, использование bt gdb может помочь найти фактическую ошибку.   -  person ikegami    schedule 08.10.2012
comment
Если бы мы могли видеть полную трассировку стека, мы могли бы куда-то продвинуться. sv_upgrade определенно получает значение NULL, о чем свидетельствует sv=0x0, но без полной трассировки стека мы не можем сказать, что именно.   -  person Schwern    schedule 22.10.2012
comment
Вы скомпилировали свой модуль XS с помощью -Wall и используете ли вы правильные типы данных для всего? Я помню, как видел segfaults (вне рассматриваемого модуля XS) с аргументом NULL-указателя в устаревшем модуле XS, который использовал int вместо STRLEN.   -  person Dre    schedule 23.02.2013