Subject: | Devel::Declare fails to load |
On one machine, I get an illegal instruction when trying to load the module:
$ perl -MDevel::Declare -le 'print "hello"'
Illegal instruction
The above would work if I try to load symbols earlier, i.e.
$ LD_BIND_NOW=yes perl -MDevel::Declare -le 'print "hello"'
hello
$ PERL_DL_NONLAZY=1 perl -MDevel::Declare -le 'print "hello"'
hello
Stack trace:
#0 0x00007ffff7df0fa0 in ?? () from /lib64/ld-linux-x86-64.so.2
#1 0x00007ffff7de6f66 in ?? () from /lib64/ld-linux-x86-64.so.2
#2 0x00007ffff7de9f74 in ?? () from /lib64/ld-linux-x86-64.so.2
#3 0x00007ffff7df09e5 in ?? () from /lib64/ld-linux-x86-64.so.2
#4 0x00007ffff6606955 in dd_initialize () from /buzzfeed/perl-
5.10.1/lib/site_perl/5.10.1/x86_64-linux/auto/Devel/Declare/Declare.so
#5 0x00007ffff6606a7a in XS_Devel__Declare_initialize () from /buzzfeed/perl-
5.10.1/lib/site_perl/5.10.1/x86_64-linux/auto/Devel/Declare/Declare.so
#6 0x00007ffff7b2d588 in Perl_pp_entersub () from /buzzfeed/perl-
5.10.1/lib/5.10.1/x86_64-linux/CORE/libperl.so
#7 0x00007ffff7b24d70 in Perl_runops_standard () from /buzzfeed/perl-
5.10.1/lib/5.10.1/x86_64-linux/CORE/libperl.so
#8 0x00007ffff7ad407c in Perl_call_sv () from /buzzfeed/perl-5.10.1/lib/5.10.1/x86_64-
linux/CORE/libperl.so
#9 0x00007ffff7ad4692 in Perl_call_list () from /buzzfeed/perl-5.10.1/lib/5.10.1/x86_64-
linux/CORE/libperl.so
#10 0x00007ffff7ac1b12 in S_process_special_blocks () from /buzzfeed/perl-
5.10.1/lib/5.10.1/x86_64-linux/CORE/libperl.so
#11 0x00007ffff7ace879 in Perl_newATTRSUB () from /buzzfeed/perl-
5.10.1/lib/5.10.1/x86_64-linux/CORE/libperl.so
#12 0x00007ffff7acedb5 in Perl_utilize () from /buzzfeed/perl-5.10.1/lib/5.10.1/x86_64-
linux/CORE/libperl.so
#13 0x00007ffff7af7357 in Perl_yyparse () from /buzzfeed/perl-5.10.1/lib/5.10.1/x86_64-
linux/CORE/libperl.so
#14 0x00007ffff7ad7d37 in perl_parse () from /buzzfeed/perl-5.10.1/lib/5.10.1/x86_64-
linux/CORE/libperl.so
#15 0x0000000000400c2c in main ()
----
The line that seems to be failing is Declare.xs:523
hook_op_check(OP_ENTEREVAL, dd_ck_entereval, NULL);