I’ve had FR 2.1.6 running on a FreeBSD 7.2 test server for some time now.  When I applied the rlm_mschap / rlm_eap_mschap patch I worked on over the weekend (which is working great btw – I will upload it shortly), I now get the following error on FR startup:

 

Can't load '/usr/local/lib/perl5/5.8.8/mach/auto/Data/Dumper/Dumper.so' for module Data::Dumper: /usr/local/lib/perl5/5.8.8/mach/auto/Data/Dumper/Dumper.so: Undefined symbol "Perl_sv_cmp" at /usr/local/lib/perl5/5.8.8/mach/XSLoader.pm line 70.

 at /usr/local/lib/perl5/5.8.8/mach/Data/Dumper.pm line 36

 

My friend google tells me that others have had this problem in the past (esp. on Debian) and the workaround is to use LD_PRELOAD=path_to_libperl.so /usr/local/sbin/radiusd

This does, in fact, work; but, isn’t very satisfying as a permanent solution.  I believe that libtool and libltdl were updated during the install of the patch and this is the source of the problem.  I’m now running FreeBSD 7.2 with libltdl-2.2.6a & libtool-2.2.6a (they were at 2.2.5 before).

 

Is anyone aware of any compatibility issues with libtool/libltdl 2.2.6a and FreeRADIUS?  

Anyone have a more permanent solution that avoids the LD_PRELOAD ugliness? 

 

I’ve tried rebuilding FR from the port with no subsequent patches and received the same result (FR wouldn’t start without the LD_PRELOAD).  I also tried using the portdowngrade port to downgrade libtool & libltdl back to 2.2.5 which didn’t seem to have this problem.  However, it only displayed 2.2.6a (i.e., I couldn’t downgrade).  rlm_perl seems to be pointing to the proper libperl.so as shown below:

 

ldd output on rlm_perl.so shows:

/usr/local/lib/freeradius-2.1.6/rlm_perl.so:

        libfreeradius-radius-2.1.6.so => /usr/local/lib/freeradius-2.1.6/libfreeradius-radius-2.1.6.so (0x2816c000)

        libperl.so => /usr/local/lib/perl5/5.8.8/mach/CORE/libperl.so (0x28187000)

        libm.so.4 => /lib/libm.so.4 (0x28294000)

        libcrypt.so.3 => /lib/libcrypt.so.3 (0x282aa000)

        libutil.so.5 => /lib/libutil.so.5 (0x282c2000)

 

libtool output for rlm_perl:

libtool: install: warning: relinking `rlm_perl.la'

libtool: install: (cd /usr/ports/net/freeradius2/work/freeradius-server-2.1.6/src/modules/rlm_perl; /bin/sh /usr/local/bin/libtool  --mode=relink cc -release 2.1.6 -module -export-dynamic -L/usr/local/lib -pthread -o rlm_perl.la -rpath /usr/local/lib/freeradius-2.1.6 rlm_perl.lo rlm_perl.c /usr/ports/net/freeradius2/work/freeradius-server-2.1.6/src/lib/libfreeradius-radius.la -Wl,-R/usr/local/lib/perl5/5.8.8/mach/CORE -pthread -Wl,-E -L/usr/local/lib /usr/local/lib/perl5/5.8.8/mach/auto/DynaLoader/DynaLoader.a -L/usr/local/lib/perl5/5.8.8/mach/CORE -lperl -lm -lcrypt -lutil )

 

*** Warning: Linking the shared library rlm_perl.la against the

*** static library /usr/local/lib/perl5/5.8.8/mach/auto/DynaLoader/DynaLoader.a is not portable!

libtool: relink: cc -shared  .libs/rlm_perl.o   -Wl,-rpath -Wl,/usr/local/lib/freeradius-2.1.6 -L/usr/local/lib -L/usr/local/lib/freeradius-2.1.6 -lfreeradius-radius -pthread /usr/local/lib/perl5/5.8.8/mach/auto/DynaLoader/DynaLoader.a -L/usr/local/lib/perl5/5.8.8/mach/CORE -lperl -lm -lcrypt -lutil  -pthread -Wl,-R/usr/local/lib/perl5/5.8.8/mach/CORE -pthread -Wl,-E -pthread -pthread -pthread   -pthread -Wl,-soname -Wl,rlm_perl-2.1.6.so -o .libs/rlm_perl-2.1.6.so

libtool: install: /usr/ports/net/freeradius2/work/freeradius-server-2.1.6/install-sh -c -c .libs/rlm_perl-2.1.6.soT /usr/local/lib/freeradius-2.1.6/rlm_perl-2.1.6.so

libtool: install: (cd /usr/local/lib/freeradius-2.1.6 && { ln -s -f rlm_perl-2.1.6.so rlm_perl.so || { rm -f rlm_perl.so && ln -s rlm_perl-2.1.6.so rlm_perl.so; }; })

libtool: install: /usr/ports/net/freeradius2/work/freeradius-server-2.1.6/install-sh -c -c .libs/rlm_perl.lai /usr/local/lib/freeradius-2.1.6/rlm_perl.la

libtool: install: /usr/ports/net/freeradius2/work/freeradius-server-2.1.6/install-sh -c -c .libs/rlm_perl.a /usr/local/lib/freeradius-2.1.6/rlm_perl.a

libtool: install: chmod 644 /usr/local/lib/freeradius-2.1.6/rlm_perl.a

libtool: install: ranlib /usr/local/lib/freeradius-2.1.6/rlm_perl.a

 

Thanks, in advance, for any help you can provide..