Summary: | PerlReq.pm crashes | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Dmitry V. Levin <ldv> |
Component: | rpm-build-perl | Assignee: | at <at> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | critical | ||
Priority: | P3 | CC: | at, crux, ldv, viy |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Dmitry V. Levin
2010-11-15 01:24:16 MSK
Простейший тесткейс: perl -MO=PerlReq -e 'use constant a=>"a"; print a,"a";' любопытно также сравнить вывод на perl-5.8.9 и на perl-5.12.2: perl -MData::Dumper -e 'print Dumper(\%::)' | grep "','" В данном примере ошибка происходит в функции walk_gv(), метод CV возвращает объект класса B::PV для символа 'a,"a";', вместо ожидаемого B:CV, соответственно вызов метода XSUB для этого класса приводит к фатальной ошибке. Вариант решения проблемы: http://git.altlinux.org/people/crux/packages/rpm-build-perl.git?p=rpm-build-perl.git;a=commitdiff;h=1136a3172304460cd96b75fe58c872c67b391f46 rpm-build-perl-0.73-alt2 -> sisyphus: * Mon Nov 15 2010 Vladimir Lettiev <crux@altlinux> 0.73-alt2 - fixed fatal error in walk_gv() when method CV return not B::CV class object (Closes: #24564) Deparse тоже не работает, надо файлить перлбаг. $ perl -MO=Deparse /usr/libexec/git-core/git-svn Can't locate object method "GV" via package "B::PV" at /usr/share/perl5/B/Deparse.pm line 506. CHECK failed--call queue aborted. Ошибка была исправлена в blead perl в коммите e5c69c9, для решения подобной проблемы в http://rt.perl.org/rt3//Public/Bug/Display.html?id=76540 Можно сделать cherry-pick на этот коммит (а также зависимый e3d2b9e). Я уже проверил сборку с этими изменениями - B::Deparse заработал. Можно, в принципе, отправлять в Sisyphus. Исправление будет в 5.12.3 http://www.nntp.perl.org/group/perl.perl5.porters/2011/01/msg168102.html |