[geeks] Perl-5.10 on Solaris 10

Phil Stracchino alaric at metrocast.net
Fri Apr 24 13:33:34 CDT 2009


Has anyone managed to successfully build Perl 5.10 with largefile and
64-bit support on Solaris 10 x86?

I have a correctly configured, tested and verified locally-bootstrapped
gcc-4.3.3 compiled for i686-pc-solaris2.10, with the correct -mnocona
microarchitecture optimization for Irwindale P4 Xeons.  I've
successfully built coreutils and a number of other packages with it, but
when I try to build Perl-5.10, the build successfully compiles and links
miniperl, successfully runs miniperl once, and then dumps core when it
tried to build the Perl Config.pm.  The error is a FLTBOUND, invalid
address (out of bounds).

This is the sum of the useful fault trace info I have from the build
failure:

`sh  cflags "optimize='-O'" opmini.o` -fPIC -DPERL_EXTERNAL_GLOB opmini.c
          CCCMD =  gcc -DPERL_CORE -c -D_REENTRANT -fno-strict-aliasing
-pipe -I/usr/local/include -I/usr/sfw/include -I/opt/sfw/include -m64
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV
-mtune=nocona  -O -Wall -W -Wextra -Wdeclaration-after-statement
-Wendif-labels -Wc++-compat
LD_LIBRARY_PATH=/netstore/src/perl-5.10.0 gcc -m64
-L/usr/local/lib/amd64 -L/usr/local/lib -L/usr/sfw/lib/amd64
-L/usr/sfw/lib -L/opt/sfw/lib/amd64 -L/opt/sfw/lib -o miniperl \
            `echo   gv.o toke.o perly.o op.o pad.o regcomp.o dump.o
util.o mg.o reentr.o mro.o hv.o av.o perl.o run.o pp_hot.o sv.o pp.o
scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o
universal.o xsutils.o globals.o perlio.o perlapi.o numeric.o mathoms.o
locale.o pp_pack.o pp_sort.o  | sed 's/ op.o / /'` \
            miniperlmain.o opmini.o -lsocket -lnsl -ldl -lm -lpthread -lc
LD_LIBRARY_PATH=/netstore/src/perl-5.10.0  ./miniperl -w -Ilib
-MExporter -e '<?>' || make minitest
LD_LIBRARY_PATH=/netstore/src/perl-5.10.0  ./miniperl -Ilib configpm
Segmentation Fault - core dumped
make: *** [lib/Config.pod] Error 139


A truss run on that last command:

babylon4:root:/netstore/src/perl-5.10.0:59 #
LD_LIBRARY_PATH=/netstore/src/perl-5.10.0 truss -f ./miniperl -Ilib configpm

[...]
read(3, " # ! . / m i n i p e r l".., 4096)     = 4096
stat("lib/strict.pmc", 0xFFFFFD7FFFDFD710)      Err#2 ENOENT
stat("lib/strict.pm", 0xFFFFFD7FFFDFD670)       = 0
open("lib/strict.pm", O_RDONLY)                 = 4
ioctl(4, TCGETA, 0xFFFFFD7FFFDFD430)            Err#25 ENOTTY
lseek(4, 0, SEEK_CUR)                           = 0
brk(0x00757EC0)                                 = 0
brk(0x0075BEC0)                                 = 0
read(4, " p a c k a g e   s t r i".., 4096)     = 3716
brk(0x0075BEC0)                                 = 0
brk(0x0075FEC0)                                 = 0
brk(0x0075FEC0)                                 = 0
brk(0x00763EC0)                                 = 0
lseek(4, 878, SEEK_SET)                         = 878
lseek(4, 0, SEEK_CUR)                           = 878
close(4)                                        = 0
    Incurred fault #6, FLTBOUNDS  %pc = 0x004C2F24
      siginfo: SIGSEGV SEGV_MAPERR addr=0x004C2F24
    Received signal #11, SIGSEGV [default]
      siginfo: SIGSEGV SEGV_MAPERR addr=0x004C2F24


The executable type of miniperl is correct:

babylon4:root:/netstore/src/perl-5.10.0:59 # file miniperl
miniperl: ELF 64-bit LSB executable AMD64 Version 1, dynamically linked,
not stripped, no debugging information available


Anyone run into this before?



-- 
  Phil Stracchino, CDK#2     DoD#299792458     ICBM: 43.5607, -71.355
  alaric at caerllewys.net   alaric at metrocast.net   phil at co.ordinate.org
         Renaissance Man, Unix ronin, Perl hacker, Free Stater
                 It's not the years, it's the mileage.



More information about the geeks mailing list