octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: build trouble on MacOS 10.6


From: Ben Abbott
Subject: Re: build trouble on MacOS 10.6
Date: Mon, 23 Nov 2009 21:15:28 -0500

On 21-Nov-2009, Ben Abbott wrote:

> The build looks good until Octave is run.
> 
> Making all in interpreter
> ../../run-octave -f -q -H -p . --eval "geometryimages ('voronoi', 'txt');"
> make[3]: *** [voronoi.txt] Bus error
> make[2]: *** [all-recursive] Error 1
> make[1]: *** [all-recursive] Error 1
> make: *** [all] Error 2

Martin (from Fink) recommended I look into the crash log (it is attached). 
After looking over the crash log, he noticed that there are two different 
libstdc++.6.dylib's being linked to (nice catch Martin, I hadn't noticed that).

> I don't really know what's going on; I can only speculate.
> 
> What looks suspicious to me is the following:
> There are two copies of libstdc++ loaded
> 
> 0x2bf7000 -  0x2c88fe7 +libstdc++.6.dylib /sw/lib/gcc4.4/lib/libstdc++.6.dylib
> 
> 0x98a75000 - 0x98adffe7  libstdc++.6.dylib /usr/lib/libstdc++.6.dylib
> 
> The crash happens inside Apple's libstdc++, and this seems to be pulled in 
> from liboctinterp-3.3.50+.dylib.
> 
> Did you compile parts of that dylib with Fink's c++-4.4 and parts with 
> Apple's c++-4.2? Maybe this leads to the crash.
> 
> -- 
> Martin

Using otool (Mac OSX equivalent to ldd), I checked to see what liboctinterp was 
linked to.

> $ otool -L ./src/.libs/liboctinterp.dylib
> ./src/.libs/liboctinterp.dylib:
>       /sw/lib/octave-3.3.50+/liboctinterp-3.3.50+.dylib (compatibility 
> version 0.0.0, current version 0.0.0)
>       /sw/lib/octave-3.3.50+/liboctave-3.3.50+.dylib (compatibility version 
> 0.0.0, current version 0.0.0)
>       /sw/lib/octave-3.3.50+/libcruft-3.3.50+.dylib (compatibility version 
> 0.0.0, current version 0.0.0)
>       /sw/lib/libpcre.0.dylib (compatibility version 1.0.0, current version 
> 1.1.0)
>       /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
> version 125.0.0)
>       /sw/lib/gcc4.4/lib/libgfortran.3.dylib (compatibility version 4.0.0, 
> current version 4.0.0)
>       /sw/lib/libGraphicsMagick.3.dylib (compatibility version 6.0.0, current 
> version 6.0.0)
>       /sw/lib/fltk-aqua/lib/libfltk_gl.1.1.dylib (compatibility version 
> 1.1.0, current version 1.1.4)
>       /sw/lib/fltk-aqua/lib/libfltk.1.1.dylib (compatibility version 1.1.0, 
> current version 1.1.4)
>       /sw/lib/libfftw3.3.dylib (compatibility version 6.0.0, current version 
> 6.4.0)
>       /sw/lib/libfftw3f.3.dylib (compatibility version 6.0.0, current version 
> 6.4.0)
>       /sw/lib/libhdf5.0.dylib (compatibility version 1.0.0, current version 
> 1.0.0)
>       /sw/lib/libsz.2.dylib (compatibility version 3.0.0, current version 
> 3.0.0)
>       /usr/X11/lib/libfontconfig.1.dylib (compatibility version 5.0.0, 
> current version 5.0.0)
>       /usr/X11/lib/libX11.6.dylib (compatibility version 9.0.0, current 
> version 9.0.0)
>       /sw/lib/libreadline.5.dylib (compatibility version 5.0.0, current 
> version 5.0.0)
>       /sw/lib/ncurses/libncurses.5.dylib (compatibility version 5.0.0, 
> current version 5.0.0)
>       /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate 
> (compatibility version 1.0.0, current version 4.0.0)
>       /sw/lib/freetype219/lib/libfreetype.6.dylib (compatibility version 
> 10.0.0, current version 10.19.0)
>       /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 
> 1.2.3)
>       /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL 
> (compatibility version 1.0.0, current version 1.0.0)
>       
> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
>  (compatibility version 1.0.0, current version 38.0.0)
>       /sw/lib/gcc4.4/lib/libstdc++.6.dylib (compatibility version 7.0.0, 
> current version 7.13.0)
>       /sw/lib/gcc4.4/lib/libgcc_s.1.dylib (compatibility version 1.0.0, 
> current version 1.0.0)

The 2nd to the last line indicates a link to 
/sw/lib/gcc4.4/lib/libstdc++.6.dylib, but there is no indication of  Apple's 
version in /usr/lib/gcc4.4/lib/libstdc++.6.dylib.

To see how liboctinterp is built, I deleted the lib and ran make again.

> $ rm liboctave*.dylib
> $ make
> rm -f liboctave.dylib
> g++-4 -dynamiclib -single_module -L/sw/lib/fltk-aqua/lib -L/sw/lib/flex/lib 
> -L/sw/lib/gcc4.4/lib/ -L/sw/lib -larpack -lgfortran -lGraphicsMagick 
> -lfltk_gl -lfltk -lpthread -install_name /sw/lib/octave-3.2.3/liboctave.dylib 
> -o liboctave.dylib \
> [... $OBJS ...]
>  -L../libcruft -L.  -lcruft -lcholmod -lumfpack  -lamd -lcamd -lcolamd 
> -lccolamd -lcxsparse  -lqrupdate -framework Accelerate -lfftw3 -lfftw3f 
> -lreadline  -L/sw/lib -lpcre -lreadline  -lncurses -lhdf5 -lz -lm  
> /sw/lib/gcc4.4/lib/libgfortran.dylib
> rm -f liboctave.3.2.3.dylib
> ln -s liboctave.dylib liboctave.3.2.3.dylib


It doesn't appear to me that Octave is aware of /usr/lib/libstdc++.6.dylib when 
building. Is it possible that /usr/lib/libstdc++.6.dylib being loaded at run 
time?

If so, can someone educate me on the process by which libraries are 
searched/located?

Ben

Attachment: octave_2009-11-22-141641_ben-abbotts-macbook-pro.crash
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]