Date: Mon, 30 Nov 2009 15:00:06 -0000 From: "Meyers, Dan" <d.meyers@lancaster.ac.uk> To: <freebsd-questions@freebsd.org> Subject: PL_sv_undef and PL_stack_max undefined - FreBSD 8.0, Perl 5.8.9 or 5.10, FreeRADIUS 2.1.6 Message-ID: <E3375EE549EE51429A4BB9B0BD871BB75E7029@exchange-be8.lancs.local>
next in thread | raw e-mail | index | archive | help
We've had a setup for a while where we have a FreeBSD server running FreeRADIUS 2.1.6 and using the rlm_perl module to examine a database and do some fairly complex checking of the returned data before deciding whether to accept or reject the radius request. This works fine on FreeBSD 7.2 amd64 with Perl 5.8.9 and FreeRADIUS 2.1.6 (all compiled from source out of the same copy of the ports tree. Perl compiled without threading support as that causes issues with our database connections when under high load). We had need to reinstall one of the servers over the weekend (We went from i386 to amd64 a while back, and now we're periodically getting mysql [replicated across multiple servers, but with a ruby on rails app running on and talking to/updating the mysql master] hanging on what should be very simple requests and causing our Ruby on Rails apps to die. We're going back to i386 to see if that resolves the issue, as the rails code hasn't been changed so it shouldn't be that. As far as we can tell, it is actually mysql that is hanging, not a lost connection from rails or similar). Anyway, as FreeBSD 8.0 is now out we decided to go with that. But now I can't get radius to start with rlm_perl enabled. Our radius script uses (among other things) the 'Switch' perl module. On trying to run radius -X I get the following: Can't load '/usr/local/lib/perl5/5.8.9/mach/auto/Filter/Util/Call/Call.so' for module Filter::Util::Call: /usr/local/lib/perl5/5.8.9/mach/auto/Filter/Util/Call/Call.so: Undefined symbol "PL_stack_max" at /usr/local/lib/perl5/5.8.9/mach/DynaLoader.pm line 226. at /usr/local/lib/perl5/5.8.9/Switch.pm line 11 and radius refuses to start. I've not got the perl Filter module installed, and installing it makes no difference. But this seems to be a minor symptom of a larger problem - The freeradius provided example script doesn't use Switch, but does use Data:Dumper. When I install a completely different server (a VM) with FreeBSD 8.0 and run up perl and FreeRADIUS using the example.pl rlm_perl script, I get much the same error, but for a slightly different variable: Can't load '/usr/local/lib/perl5/5.8.9/mach/auto/Data/Dumper/Dumper.so' for module Data::Dumper: /usr/local/lib/perl5/5.8.9/mach/auto/Data/Dumper/Dumper.so: Undefined symbol "PL_sv_undef" at /usr/local/lib/perl5/5.8.9/mach/XSLoader.pm line 70. at /usr/local/lib/perl5/5.8.9/mach/Data/Dumper.pm line 36 I've tried commenting and uncommenting various modules in the script I want to run. Time::HiRes also causes a moan about PL_sv_undef. File::Basename seems to work OK. What's odd is that if I run up a test perl script that just does a 'use Switch;' and then has a switch statement in that prints out some text then it works absolutely fine from the command line. I have to admit to being a bit out of my depth here. I'm not sure if the issue is with freeradius/rlm_perl, perl itself, or what. As a last ditch test, I tried FreeBSD 7.2 i386 in a VM. I was very surprised when I got the same error, even though this server that is now having issues was FreeBSD 7.2 (admittedly on amd64) and having no problems whatsoever. I am completely stumped. Why are these symbols undefined, and what do I need to do to get things working? Thanks in advance. Apologies for the wall of text. -- Dan Meyers Network Specialist, Lancaster University E-Mail: d.meyers@lancaster.ac.uk
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E3375EE549EE51429A4BB9B0BD871BB75E7029>