[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Segmentation fault on OSX for intel
From: |
David Ayers |
Subject: |
Re: Segmentation fault on OSX for intel |
Date: |
Wed, 04 Jan 2006 21:25:08 +0100 |
User-agent: |
Mozilla Thunderbird 1.0.2 (X11/20051002) |
joekewoud_@joekewoud.nl schrieb:
> When I start *any* gnustep program. Including most from the Tools directory
> I get a segmentation fault
>
[snip]
>
> I use GCC4.02 FSF
>
[snip]
>
> Program received signal EXC_BAD_ACCESS, Could not access memory.
> Reason: KERN_INVALID_ADDRESS at address: 0x746f7270
> 0x90a418b0 in objc_msgSend ()
> (gdb) bt
> #0 0x90a418b0 in objc_msgSend ()
> (gdb)
Hello Ewoud,
This is an indication that your binary is being linked against Apple's
libobjc as this function is called objc_msg_send on FSF libobjc.
> This is the crashlog:
>
>
[snip]
>
> Thread 0 Crashed:
> 0 libobjc.A.dylib 0x90a418b0 objc_msgSend + 16
Note the name.
> 1 dyld 0x8fe0e2d6
> ImageLoaderMachO::doNotification(dyld_image_mode, unsigned, dyld_image_info
> const*) + 70
> 2 dyld 0x8fe03409
> dyld::notifyAdding(std::vector<ImageLoader*, std::allocator<ImageLoader*>
>
>>&) + 201
>
> 3 dyld 0x8fe0c4bd
> ImageLoader::runInitializers(ImageLoader::LinkContext const&) + 75
> 4 dyld 0x8fe02cfa dyld::initializeMainExecutable() + 112
> 5 Affiche 0x0000214d _call_mod_init_funcs + 36 (crt.c:305)
> 6 Affiche 0x00002079 _start + 79 (crt.c:240)
> 7 Affiche 0x00002029 start + 41
>
> Thread 0 crashed with i386 Thread State:
> eax: 0x746f7250 ebx: 0x90a404e8 ecx:0x90a4f33c edx: 0x00095470
> edi: 0x00000000 esi: 0x00095470 ebp:0xbfffee58 esp: 0xbfffec98
> ss: 0x0000002f efl: 0x00010282 eip:0x90a418b0 cs: 0x00000027
> ds: 0x0000002f es: 0x0000002f fs:0x00000000 gs: 0x00000037
>
> Binary Images Description:
> 0x1000 - 0x17fff Affiche
> /usr/GNUstep/Local/Applications/Affiche.app/Affiche
> 0x81000 - 0x92fff libobjc-gnu.1.dylib
> /opt/local/lib/gcc40/libobjc-gnu.1.dylib
This is the libobjc you actually want.
> 0x907f0000 - 0x908b9fff com.apple.CoreFoundation 6.4.4 (368.22)
> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundatio
Not sure where CoreFoundation comes from...
> 0x908fa000 - 0x909eefff libicucore.A.dylib /usr/lib/libicucore.A.dylib
> 0x90a3f000 - 0x90abffff libobjc.A.dylib /usr/lib/libobjc.A.dylib
And here is Apples libobjc
> 0x90ae8000 - 0x90b4cfff libstdc++.6.dylib /usr/lib/libstdc++.6.dylib
> 0x90bbb000 - 0x90bc2fff libgcc_s.1.dylib /usr/lib/libgcc_s.1.dylib
and Apples gcc.
So it seems you have linked code previously linked with something that
pulls in CoreFoundation which is possibly responsible for also linking
the NeXT runtime, so your code is currently linked with both runtimes
which is causing the confusion.
I'm no expert on Darwin but I think with otool you can figure out the
dependencies of dylibs to determine what is pulling in the Apple code.
Good luck!
David