Question

Trying installing Term::ReadLine::Gnu on OS X. make test returns errors, like:

t/00checkver.t .. 1/3 panic: free from wrong pool, 62696c2f62696c!=7f8ed2801200 during global destruction.

After a searching found an advice compile perl with -DPERL_USE_SAFE_PUTENV. So, tried the next:

perlbrew install perl-5.16.3 --thread --multi --debug -DPERL_USE_SAFE_PUTENV

Need threads because the Padre needs them. Unfortunately, recompile doesn't helps and getting the same error. Next, I found this What is the cause for “panic: free from wrong pool during global destruction.” in Term::ReadLine::Gnu? question, and the accepted answer suggest to use: -Accflags="-DPERL_USE_SAFE_PUTENV".

The questions are:

  • mainly, how to get a working Term::ReadLine::Gnu on OS X with perlbrew?
  • how to compile/install/switch the perl with perlbrew to getting working perl for the Padre, what needs Term::ReadLine::Gnu.

Only wondering:

  • if the perl needs some "SAFE_PUTENV" for compile some CPAN modules, why is it not ON default? Why someone want a perl where isn't possible compile some CPAN modules?
  • have someone working Padre & perlbrew on OS X?

If someone needs:

My perl version

$ perl -V
Summary of my perl5 (revision 5 version 16 subversion 3) configuration:

  Platform:
    osname=darwin, osvers=13.0.0, archname=darwin-thread-multi-2level
    uname='darwin medvedik.local 13.0.0 darwin kernel version 13.0.0: thu sep 19 22:22:27 pdt 2013; root:xnu-2422.1.72~6release_x86_64 x86_64 '
    config_args='-de -Dprefix=/Users/nemo/perl5/perlbrew/perls/perl-5.16.3 -DPERL_USE_SAFE_PUTENV -Dusethreads -DDEBUGGING -Dusemultiplicity -Aeval:scriptdir=/Users/nemo/perl5/perlbrew/perls/perl-5.16.3/bin'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-fno-common -DPERL_DARWIN -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/opt/local/include',
    optimize='-O3 -g',
    cppflags='-fno-common -DPERL_DARWIN -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/opt/local/include'
    ccversion='', gccversion='4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -fstack-protector -L/usr/local/lib -L/opt/local/lib'
    libpth=/usr/local/lib /opt/local/lib /usr/lib
    libs=-lgdbm -ldbm -ldl -lm -lutil -lc
    perllibs=-ldl -lm -lutil -lc
    libc=, so=dylib, useshrplib=false, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/opt/local/lib -fstack-protector'


Characteristics of this binary (from libperl): 
  Compile-time options: DEBUGGING HAS_TIMES MULTIPLICITY PERLIO_LAYERS
                        PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT
                        PERL_MALLOC_WRAP PERL_PRESERVE_IVUV
                        PERL_TRACK_MEMPOOL USE_64_BIT_ALL USE_64_BIT_INT
                        USE_ITHREADS USE_LARGE_FILES USE_LOCALE
                        USE_LOCALE_COLLATE USE_LOCALE_CTYPE
                        USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
                        USE_REENTRANT_API
  Built under darwin
  Compiled at Jan  5 2014 12:57:57
  %ENV:
    PERLBREW_BASHRC_VERSION="0.67"
    PERLBREW_HOME="/Users/nemo/.perlbrew"
    PERLBREW_MANPATH="/Users/nemo/perl5/perlbrew/perls/perl-5.16.3/man"
    PERLBREW_PATH="/Users/nemo/perl5/perlbrew/bin:/Users/nemo/perl5/perlbrew/perls/perl-5.16.3/bin"
    PERLBREW_PERL="perl-5.16.3"
    PERLBREW_ROOT="/Users/nemo/perl5/perlbrew"
    PERLBREW_VERSION="0.67"
  @INC:
    /Users/nemo/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/darwin-thread-multi-2level
    /Users/nemo/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3
    /Users/nemo/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3/darwin-thread-multi-2level
    /Users/nemo/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3
    .

Output from t/checkver.t

$ perl -Mblib t/00checkver.t
1..3
ok 1    loading
ok 2    new
OS: darwin
Perl version: 5.016003

Term::ReadLine::Gnu version: 1.20
GNU Readline Library version: 6.2
ok 3    done
panic: free from wrong pool, 686372612f62696c!=7fd3db000000 during global destruction.

GCC:

$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix

perlbrew

$ perlbrew version
/Users/nemo/perl5/perlbrew/bin/perlbrew  - App::perlbrew/0.67

others:

  • using macports for some libraries and utilities. macports are selfupdated and all ports are upgraded.
Was it helpful?

Solution

As linked in the question, the answer is already in this answer. Run:

 perlbrew install perl-5.16.3 --thread --multi --64all --debug --clang -Accflags="-DPERL_USE_SAFE_PUTENV"

and with this perl will get a successful installation:

$ cpanm Term::ReadLine::Gnu
--> Working on Term::ReadLine::Gnu
Fetching http://www.cpan.org/authors/id/H/HA/HAYASHI/Term-ReadLine-Gnu-1.20.tar.gz ... OK
Configuring Term-ReadLine-Gnu-1.20 ... OK
Building and testing Term-ReadLine-Gnu-1.20 ... 
Term::ReadLine::Gnu version: 1.20
GNU Readline Library version: 6.2
OK
Successfully installed Term-ReadLine-Gnu-1.20
1 distribution installed

In daxim's answer nowhere stated than the -Accflags works for perlbrew too. Really need read perlbrew help where is clearly stated:

-D,-U,-A       Switches passed to perl Configure script.

Anyway, still don't underdtand why for OS X is the -Accflags="-DPERL_USE_SAFE_PUTENV" not an default, but the lessons learned:

For OS X when build perl with perlbrew, an ordinary user should use

perlbrew -Accflags="-DPERL_USE_SAFE_PUTENV"`

to getting an working perl.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top