Solaris 10: 'gmake check' dumps core

Ole Tange octave at tange.dk
Mon Aug 4 10:44:30 CDT 2008


Bug report for Octave 3.0.1 configured for i386-pc-solaris2.10

Description:
-----------

I have made a fresh install of Solaris 10 to determine the
requirements for compiling Octave 3.0.1, so the requirements can be
detected reliably by configure and a failing compilation can be
avoided.

When I tried 'gmake check' it would not even start octave.

run-octave dumps core.


Repeat-By:
---------

I made a fresh install of Solaris 10. Then installed GCC, gmake,
texinfo, and gsed. Then:

./configure; gmake

Then:

gmake check

This fails:

gmake -f octMakefile check
gmake[1]: Entering directory `/octave/octave-3.0.1'
gmake -C test check
gmake[2]: Entering directory `/octave/octave-3.0.1/test'
../run-octave --norc --silent --no-history ./fntests.m .
ld.so.1: octave: fatal: liboctinterp.so: open failed: No such file or directory
gmake[2]: *** [check] Killed
gmake[2]: Leaving directory `/octave/octave-3.0.1/test'
gmake[1]: *** [check] Error 2
gmake[1]: Leaving directory `/octave/octave-3.0.1'
gmake: *** [check] Error 2

I assume it has to do with using /bin/sh on Solaris is not the same as
using /bin/bash. So I changed run-octave:

--- run-octave.old      2008-08-04 19:36:00.000000000 +0200
+++ run-octave.new      2008-08-04 19:36:47.000000000 +0200
@@ -65,8 +65,12 @@
   fi
 fi

-OCTAVE_SITE_INITFILE="$top_srcdir/scripts/startup/main-rcfile" \
-LD_PRELOAD="$liboctinterp $liboctave $libcruft" \
-LD_LIBRARY_PATH="$builddir/src:$builddir/liboctave:$builddir/libcruft:$LD_LIBRARY_PATH"
\
+OCTAVE_SITE_INITFILE="$top_srcdir/scripts/startup/main-rcfile"
+export OCTAVE_SITE_INITFILE
+LD_PRELOAD="$liboctinterp $liboctave $libcruft"
+export LD_PRELOAD
+LD_LIBRARY_PATH="$builddir/src:$builddir/liboctave:$builddir/libcruft:$LD_LIBRARY_PATH"
+export LD_LIBRARY_PATH
+
   exec $driver "$builddir/src/octave" --no-initial-path
--path="$LOADPATH" --image-path="$IMAGEPATH" --info-file="$INFOFILE"
"$@"

This fixes the problem not being able to find liboctinterp.so. Now I get:

# gmake check
gmake -f octMakefile check
gmake[1]: Entering directory `/octave/octave-3.0.1'
gmake -C test check
gmake[2]: Entering directory `/octave/octave-3.0.1/test'
../run-octave --norc --silent --no-history ./fntests.m .
gmake[2]: *** [check] Segmentation Fault (core dumped)
gmake[2]: Leaving directory `/octave/octave-3.0.1/test'
gmake[1]: *** [check] Error 2
gmake[1]: Leaving directory `/octave/octave-3.0.1'
gmake: *** [check] Error 2

To see a little more on what is going on I installed gdb:

./run_octave -g

# ./run-octave -g
Segmentation Fault (core dumped)

Then I tried setting the enviroment variables manually and run the
command line manually:

# gdb --args "/octave/octave-3.0.1/src/octave" --no-initial-path
--path="{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}"
--image-path="/octave/octave-3.0.1/scripts/image"
--info-file="/octave/octave-3.0.1/doc/interpreter/octave.info" ""
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-pc-solaris2.8"...
(no debugging symbols found)
(gdb) run
Starting program: /octave/octave-3.0.1/src/octave --no-initial-path
--path=\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}:\{\}
--image-path=/octave/octave-3.0.1/scripts/image
--info-file=/octave/octave-3.0.1/doc/interpreter/octave.info ''
(no debugging symbols found)
warning: Temporarily disabling breakpoints for unloaded shared library
"/usr/lib/ld.so.1"

Program received signal SIGSEGV, Segmentation fault.
0xfd5a5c01 in std::string::find () from /opt/csw/lib/libstdc++.so.6
(gdb) bt
#0  0xfd5a5c01 in std::string::find () from /opt/csw/lib/libstdc++.so.6
#1  0xfd907471 in file_ops::is_dir_sep (c=47 '/') at file-ops.cc:857
#2  0xfd90c7f2 in file_ops::concat (dir=@0x8047780, file=@0x8047790)
    at /opt/csw/gcc3/lib/gcc/i386-pc-solaris2.8/3.4.5/../../../../include/c++/3.4.5/bits/basic_string.h:541
#3  0xfe4b842a in __static_initialization_and_destruction_0
(__initialize_p=1, __priority=0)
    at /opt/csw/gcc3/lib/gcc/i386-pc-solaris2.8/3.4.5/../../../../include/c++/3.4.5/ext/new_allocator.h:62
#4  0xfe842d0d in __do_global_ctors_aux ()
    at /opt/csw/gcc3/lib/gcc/i386-pc-solaris2.8/3.4.5/../../../../include/c++/3.4.5/bits/list.tcc:69
#5  0xfe842d22 in _init () at
/opt/csw/gcc3/lib/gcc/i386-pc-solaris2.8/3.4.5/../../../../include/c++/3.4.5/bits/list.tcc:69
#6  0xfefd58fc in call_init () from /lib/ld.so.1
#7  0xfefd5681 in is_dep_init () from /lib/ld.so.1
#8  0xfefdf7c5 in elf_bndr () from /lib/ld.so.1
#9  0xfefcc1d4 in elf_rtbndr () from /lib/ld.so.1
#10 0xfefb03f0 in ?? ()
#11 0x00000d98 in ?? ()
#12 0xfd931758 in __static_initialization_and_destruction_0
(__initialize_p=-17103888, __priority=1) at DiagArray2.h:115
#13 0xfdc64531 in __do_global_ctors_aux ()
    at /opt/csw/gcc3/lib/gcc/i386-pc-solaris2.8/3.4.5/../../../../include/c++/3.4.5/bits/stl_construct.h:106
#14 0xfdc64546 in _init () at
/opt/csw/gcc3/lib/gcc/i386-pc-solaris2.8/3.4.5/../../../../include/c++/3.4.5/bits/stl_construct.h:106
#15 0xfefd58fc in call_init () from /lib/ld.so.1
#16 0xfefd4fcc in setup () from /lib/ld.so.1
#17 0xfefe0734 in _setup () from /lib/ld.so.1
#18 0xfefcc0b8 in _rt_boot () from /lib/ld.so.1
#19 0x08047b60 in ?? ()
#20 0xfeffab18 in _GLOBAL_OFFSET_TABLE_ () from /lib/ld.so.1
#21 0x00000003 in ?? ()
#22 0x08047ba4 in ?? ()
#23 0x00000004 in ?? ()
#24 0x08047bc0 in ?? ()
#25 0x00000005 in ?? ()
#26 0x08047c0c in ?? ()
#27 0x00000000 in ?? ()
(gdb)

Then I thought truss (i.e. solaris strace) might help:

# truss -ff  "/octave/octave-3.0.1/src/octave" --no-initial-path
--path="{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}"
--image-path="/octave/octave-3.0.1/scripts/image"
--info-file="/octave/octave-3.0.1/doc/interpreter/octave.info" ""
[... complete output at: http://ange.dk/~tange/truss-3.0.1.txt ...]
4808:   open64("/var/run/name_service_door", O_RDONLY)  = 3
4808:   fcntl(3, F_SETFD, 0x00000001)                   = 0
4808:   door_info(3, 0xFD4FE3A0)                        = 0
4808:   door_call(3, 0x08047138)                        = 0
4808:   sysinfo(SI_HOSTNAME, "solvm", 255)              = 6
4808:       Incurred fault #6, FLTBOUNDS  %pc = 0xFD5A5C01
4808:         siginfo: SIGSEGV SEGV_MAPERR addr=0xFFFFFFF4
4808:       Received signal #11, SIGSEGV [default]
4808:         siginfo: SIGSEGV SEGV_MAPERR addr=0xFFFFFFF4

Config.log: http://ange.dk/~tange/config-with-makeinfo.log
Output from gmake: http://ange.dk/~tange/gmake-with-makeinfo.log
Core-file: http://ange.dk/~tange/core-3.0.1.bz2
Truss output: http://ange.dk/~tange/truss-3.0.1.txt
The whole build dir: http://ange.dk/~tange/octave-3.0.1.build.tar.bz2


Fix:
---

I do not have a fix for this.


Configuration (please do not edit this section):
-----------------------------------------------

uname output:     SunOS solvm 5.10 Generic_118855-14 i86pc i386 i86pc
configure opts:   'CC=gcc' 'CFLAGS=-I/opt/csw/include'
'CPPFLAGS=-I/opt/csw/include' 'CXX=g++' 'F77=g77'
Fortran compiler: g77
FFLAGS:           -O -mieee-fp
F2C:              @F2C@
F2CFLAGS:         @F2CFLAGS@
FLIBS:            -R/opt/csw/lib -L/opt/csw/lib -L/usr/ccs/lib
-L/usr/lib -L/opt/csw/gcc3/lib/gcc/i386-pc-solaris2.8/3.4.5
-L/usr/ccs/bin -L/opt/csw/gcc3/lib/gcc/i386-pc-solaris2.8/3.4.5/../../..
-lz -lfrtbegin -lg2c -lm
CPPFLAGS:         -I/opt/csw/include
INCFLAGS:         -I. -I. -I./liboctave -I./src -I./libcruft/misc
C compiler:       gcc, version 3.4.5
CFLAGS:           -I/opt/csw/include
CPICFLAG:         -fPIC
C++ compiler:     g++, version 3.4.5
CXXFLAGS:         -g -O2
CXXPICFLAG:       -fPIC
LD_CXX:           g++
LDFLAGS:
LIBFLAGS:         -L.
RLD_FLAG:         -R /usr/local/lib/octave-3.0.1
BLAS_LIBS:
FFTW_LIBS:
LIBS:             -lreadline  -lncurses -ldl -lz -lm
LEXLIB:           -ll
LIBGLOB:
SED:              /opt/csw/bin/gsed
DEFS:

  -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION=""
  -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DOCTAVE_SOURCE=1
  -D_GNU_SOURCE=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1
  -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1
  -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1
  -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSEPCHAR=':' -DSEPCHAR_STR=":"
  -D__NO_MATH_INLINES=1 -DCXX_NEW_FRIEND_TEMPLATE_DECL=1
  -DCXX_ISO_COMPLIANT_LIBRARY=1 -DCXX_BROKEN_REINTERPRET_CAST=1
  -DCXX_ABI=gnu_v3 -DHAVE_LIBM=1 -DHAVE_REGEXEC=1 -DHAVE_REGEX=1
  -DHAVE_REGEXEC=1 -DHAVE_ZLIB_H=1 -DHAVE_ZLIB=1
  -DHAVE_IEEE754_DATA_FORMAT=1 -DF77_FUNC(name,NAME)=name ## _
  -DF77_FUNC_(name,NAME)=name ## __ -DHAVE_GETHOSTNAME=1
  -DHAVE_GETPWNAM=1 -DHAVE_DEV_T=1 -DHAVE_INO_T=1 -DHAVE_NLINK_T=1
  -DHAVE_NLINK_T=1 -DHAVE_LONG_LONG_INT=1 -DHAVE_UNSIGNED_LONG_LONG_INT=1
  -DHAVE_SIGSET_T=1 -DHAVE_SIG_ATOMIC_T=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4
  -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1
  -DNPOS=std::string::npos -DHAVE_PLACEMENT_DE


More information about the Bug-octave mailing list