[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[swarm-hackers] Leopard runtime mismatch crash - the cause
From: |
Bill Northcott |
Subject: |
[swarm-hackers] Leopard runtime mismatch crash - the cause |
Date: |
Wed, 21 May 2008 11:12:00 +1000 |
On 21/05/2008, at 9:01 AM, Bill Northcott wrote:
On 27/04/2008, at 4:06 AM, Marcus G. Daniels wrote:
First, I was curious to see if the stock compiler would work. I
noticed that there were some more OBJC segments creeping in
(presumably new features with the compiler), and so made some
tweaks so that all segment names for Objective C would be recoded
as GNUOBJC to avoid the problems with the Apple Objective C runtime
stepping on the GNU Objective C runtime. This did not work,
however. I still get the runtime protocol mismatch problem. There
may actually be a protocol change even for the GNU runtime.
Did you get anywhere to fixing this?? I did a build last night
using Apple compilers and libffi, but it has the protocol mismatch
issue.
Here is the reason for the runtime mismatch crash:
billn$ otool -L /Users/Shared/Public/Swarm/swarm-cvs/macosx/build/
src/.libs/libswarm.0.dylib
/Users/Shared/Public/Swarm/swarm-cvs/macosx/build/src/.libs/libswarm.
0.dylib:
/usr/local/swarm2.2/lib/libswarm.0.dylib (compatibility version
1.0.0, current version 1.0.0)
/usr/lib/libffi.dylib (compatibility version 1.0.0, current version
1.0.0)
/usr/local/blt2.4/lib/libBLT24.dylib (compatibility version 0.0.0,
current version 0.0.0)
/System/Library/Frameworks/Tk.framework/Versions/8.4/Tk
(compatibility version 8.4.0, current version 8.4.0)
/System/Library/Frameworks/Tcl.framework/Versions/8.4/Tcl
(compatibility version 8.4.0, current version 8.4.0)
/usr/X11/lib/libXpm.4.dylib (compatibility version 16.0.0, current
version 16.0.0)
/usr/local/hdf5_1.6.7/lib/libhdf5.0.dylib (compatibility version
1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 111.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version
1.2.3)
/usr/X11/lib/libX11.6.dylib (compatibility version 9.0.0, current
version 9.0.0)
/usr/X11/lib/libXau.6.dylib (compatibility version 7.0.0, current
version 7.0.0)
/usr/X11/lib/libXdmcp.6.dylib (compatibility version 7.0.0, current
version 7.0.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current
version 1.0.0)
and a part trace from dyld showing the load of a Swarm test program:
dyld: loaded: /Users/Shared/Public/Swarm/swarm-cvs/macosx/build/tests/
activity/.libs/ActionGroup
dyld: loaded: /Users/Shared/Public/Swarm/swarm-cvs/macosx/build/
src/.libs/libswarm.0.dylib
dyld: loaded: /usr/lib/libffi.dylib
dyld: loaded: /usr/local/blt2.4/lib/libBLT24.dylib
dyld: loaded: /System/Library/Frameworks/Tk.framework/Versions/8.4/Tk
dyld: loaded: /System/Library/Frameworks/Tcl.framework/Versions/8.4/Tcl
dyld: loaded: /usr/X11/lib/libXpm.4.dylib
dyld: loaded: /usr/X11/lib/libpng12.0.dylib
dyld: loaded: /usr/local/hdf5_1.6.7/lib/libhdf5.0.dylib
dyld: loaded: /usr/lib/libSystem.B.dylib
dyld: loaded: /usr/lib/libz.1.dylib
dyld: loaded: /usr/X11/lib/libX11.6.dylib
dyld: loaded: /usr/X11/lib/libXau.6.dylib
dyld: loaded: /usr/X11/lib/libXdmcp.6.dylib
dyld: loaded: /usr/lib/libgcc_s.1.dylib
dyld: loaded: /usr/lib/system/libmathCommon.A.dylib
dyld: loaded: /usr/local/lib/libtk8.4.dylib
dyld: loaded: /usr/local/lib/libtcl8.4.dylib
dyld: loaded: /usr/local/lib/libgcc_s.1.dylib
dyld: loaded: /System/Library/Frameworks/Carbon.framework/Versions/A/
Carbon
dyld: loaded: /System/Library/Frameworks/ApplicationServices.framework/
Versions/A/ApplicationServices
dyld: loaded: /System/Library/Frameworks/CoreServices.framework/
Versions/A/CoreServices
dyld: loaded: /System/Library/Frameworks/CoreFoundation.framework/
Versions/A/CoreFoundation
dyld: loaded: /usr/lib/libicucore.A.dylib
dyld: loaded: /usr/lib/libobjc.A.dylib
dyld: loaded: /usr/lib/libauto.dylib
dyld: loaded: /usr/lib/libstdc++.6.dylib
So we linking the linking the system Tcl/Tk which in turn links Cocoa
and hence the system libobjc.
I think this is because we have a '-L/usr/lib' in the link line and so
pick up the the Tcl/Tk symlinks.
I have to do some thing else now, but I think I am close.
Bill