ports/137694: lang/perl5.10 and lang/perl5.8 -- Embedded perl fails after libtool/libltdl upgrade

Alexander Hasenfuss hasenfuss at rz.tu-clausthal.de
Wed Aug 12 12:00:21 UTC 2009

>Number:         137694
>Category:       ports
>Synopsis:       lang/perl5.10 and lang/perl5.8 -- Embedded perl fails after libtool/libltdl upgrade
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-ports-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Aug 12 12:00:17 UTC 2009
>Originator:     Alexander Hasenfuss
>Release:        7.2
Clausthal University of Technology
FreeBSD schluesselmeister-vm.rz.tu-clausthal.de 7.2-RELEASE-p3 FreeBSD 7.2-RELEASE-p3 #0: Thu Jul 30 09:27:38 CEST 2009     root at teufelchen.rz.tu-clausthal.de:/usr/obj/usr/src/sys/TEUFELCHEN  i386
We were facing the problem when installing the port net/freeradius2 with perl
module. The port maintainer was able to reproduce the problem. FreeRADIUS just
uses the interface described in perlembed(1), so it seems not to be a freeradius

- Update ports to latest version (we use the base system FreeBSD

- Follow the steps in "/usr/ports/UPDATING" to update to the new libtool

- Install net/freeradius2 from scratch with perl support (problem seems
to exist with both perl 5.10 and 5.8). All of following steps use the
sample configuration that comes with the FreeRADIUS distribution.

- Go to "/usr/local/etc/raddb/sites-enabled" and edit "inner-tunnel".
Add "perl" to the "authorize" section (e.g. right underneath the line

#       ldap

is a good place).

- Run "radiusd -X".

This will produce the error message.

 >The problem is clearly with dynamic linkage of the Data::Dumper module -
 >though this module seems to work in a quick Perl program outside FreeRADIUS,
 >so the problem only happens when Perl is embedded.
 >The problem is similar to that described at
 >(this is embedding Perl in Python)
 >It appears that calls to dlopen made via rlm_perl may need " | RTLD_GLOBAL"
 >adding to the 'mode' argument (see the man page for dlopen(3)). However, that
 >system call is not made directly in rlm_perl - all that rlm_perl does is use
 >the interface found in the perlembed(1) man page. 
 Here is the error message after starting "radiusd -X":
  Module: Linked to module rlm_perl
  Module: Instantiating perl
   perl {
     module = "/usr/local/etc/raddb/example.pl"
     func_authorize = "authorize"
     func_authenticate = "authenticate"
     func_accounting = "accounting"
     func_preacct = "preacct"
     func_checksimul = "checksimul"
     func_detach = "detach"
     func_xlat = "xlat"
     func_pre_proxy = "pre_proxy"
     func_post_proxy = "post_proxy"
     func_post_auth = "post_auth"
 Can't load '/usr/local/lib/perl5/5.10.0/mach/auto/Data/Dumper/Dumper.so'
 for module Data::Dumper:
 /usr/local/lib/perl5/5.10.0/mach/auto/Data/Dumper/Dumper.so: Undefined
 symbol "Perl_sv_cmp" at /usr/local/lib/perl5/5.10.0/mach/XSLoader.pm
 line 64.
  at /usr/local/lib/perl5/5.10.0/mach/Data/Dumper.pm line 36
 Compilation failed in require at /usr/local/etc/raddb/example.pl line 30.
 BEGIN failed--compilation aborted at /usr/local/etc/raddb/example.pl
 line 30.
 rlm_perl: perl_parse failed: /usr/local/etc/raddb/example.pl not found
 or has syntax errors.
 /usr/local/etc/raddb/modules/perl[7]: Instantiation failed for module
 /usr/local/etc/raddb/sites-enabled/inner-tunnel[130]: Failed to find
 module "perl".
 /usr/local/etc/raddb/sites-enabled/inner-tunnel[34]: Errors parsing
 authorize section.
 Errors initializing modules
 Rebuilding perl and freeradius doesn't fix the problem.

More information about the freebsd-ports-bugs mailing list