# Issues with Perl 5.8.9_3 port/package (in combination with FreeRADIUS 2.1.6)



## Carr0t (Dec 11, 2009)

We've had a FreeBSD 7.1 install running FreeRADIUS 2.1.6 with rlm_perl compiled against Perl 5.8.9_2 for quite a while now. Everything has been fine, but as we wanted to bring a new server online we decided to try a new version of FreeBSD.

FreeBSD 8.0 still installs FreeRADIUS 2.1.6 (from ports or packages), but now installs Perl 5.8.9_3 (again from either). If installing from ports all the 'make test' tests return success when Perl has been compiled. However when I try to run up FreeRADIUS with the perl module (rlm_perl) enabled and the default example script I get the following error (This is with Perl compiled/installed without threads or multiplicity):


```
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
```

If I comment out the use line for Data:umper the script loads OK, but unfortunately I get similar (though not identical) errors loading other modules, such as Switch, which my actual production Perl script requires:


```
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
```

I also need to use (among other modules) Time::HiRes, which gives the same failure as Data:umper, i.e. with PL_sv_undef as opposed to PL_stack_max.

I've done some more digging:

1) This error seems to occur on both i386 and x86_64 builds of FreeBSD.

2) The error also occurs with FreeBSD 7.2, but *only* when things are installed from ports, not with packages. I checked the versions, and the latest version of ports installs Perl 5.8.9_3, whereas pkg_add still installs 5.8.9_2. Both install FreeRADIUS 2.1.6 still. As FreeBSD 8.0 installs Perl 5.8.9_3 from both ports and packages I am inclined to believe that the issue lies with the 5.8.9_3 Perl build somehow, but am more than willing to be told i'm wrong by someone with more experience.

3) If Perl is compiled with threading enabled, the error is different but still exists and still prevents my script from running.

4) If I run a standalone Perl script that has 'use Data:umper;' (or Switch, or Time::HiRes or whatever) it runs absolutely fine. As such I guess the issue could be more to do with FreeRADIUS than Perl, though I don't understand how the same version of FreeRADIUS would suddenly stop working for a minor revision increase in the Perl version in that case.

Does anyone have any pointers as to what I can do to fix this? I'm still unsure if this is an actual issue with one of the ports/packages, or just me being stupid and missing an option somewhere (i'm tending towards the latter at the moment). Can anyone else confirm the issue?


----------



## paulwollner (Sep 16, 2010)

I know that this is 10 months since your post, but I came across the same problem tonight on a Gentoo Linux machine. It appears that rlm_perl.so is linked against libperl.so. 

Find the location of the file:

```
ldd /usr/lib/rlm_perl.so|grep libperl

libperl.so.1 => /usr/lib/libperl.so.1 (0xb7e0a000)
```

And start radius as such:

```
LD_PRELOAD=/usr/lib/libperl.so.1.5.8 /usr/sbin/radiusd -f
```

Hopefully this is of some help to someone.


----------

