Bienvenido a la comunidad de Pandora FMS › Forums › Community support › Advanced troubleshooting › [SOLVED]Seems to crash … perl, what?
-
[SOLVED]Seems to crash … perl, what?
Posted by bluefoxicy on julio 13, 2012 at 00:03pandora_agent[18562] general protection ip:7f3f52d58fc4 sp:7f3f4f95ba40 error:0 in libperl.so[7f3f52cc4000+162000]
pandora_agent[19337] general protection ip:7fa385a08fc4 sp:7fa381c0aa40 error:0 in libperl.so[7fa385974000+162000]
pandora_agent[19528] general protection ip:7f69181eafd0 sp:7f690e55ba40 error:0 in libperl.so[7f6918156000+162000]This happens after about 5 minutes.
I’m at a loss. Â x86-64, CentOS 6, up to date as of 2012-07-12.
Nacho1988 replied 12 years, 6 months ago 3 Members · 5 Replies -
5 Replies
-
::
OK I think I figured this out:
https://bugzilla.redhat.com/show_bug.cgi?id=839788
Bug in Perl related to threading.
-
-
::
Thanks for the bug report.
>It looks like it should be included as an agent requirement to have Thread module version above 1.72, in order to have it working properly.
Much appreciated.
Regards.
I had a perl core dev test the one-liner test case, he says it’s not in Perl Threads and it’s fine on perl 5.6.2-5.10.0 and 5.12.0+. perl 5.10.1 and perl 5.11.0 both segfault on the bug. His non-threaded perl release builds also segfault on the same versions.
So likely not actually in perl threads, just a perl bug.
-
::
I got it!
http://www.nntp.perl.org/group/perl.perl5.porters/2010/01/msg155286.html
Also the work-around is to disable threading (set agent threads to 1). Odd, since this isn’t a threading bug; however it’s possible that threading causes a destructor call on a non-defined destructor.
The check for this is to fork off a new copy of perl (don’t try to exception catch this; it segfaults libperl) and see if it can exit safely. If this throws an error (exit status 137 rather than exit status 0), then perl is broken:
perl -e "sub M::DESTROY; bless {}, M;"
In which case you should disable threading.
system("perl", "-e", "sub M::DESTROY; bless {}, M;") == 0 or agent_threads = 1;
-