[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Cynthiune on FreeBSD
From: |
David Chisnall |
Subject: |
Re: Cynthiune on FreeBSD |
Date: |
Fri, 4 May 2012 21:28:42 +0100 |
On 4 May 2012, at 21:06, Riccardo Mottola wrote:
> Hi,
>
> David Chisnall wrote:
>> Can you try to narrow it down a bit? Does it work with libobjc2 and gcc?
>> Does it work with libobjc2, clang, and -O0? Does it work with most files
>> compiled at -O2 and one at -O0?
>>
> I compiled Cynthiune with debug=yes. Now I get a slightly more meaningful
> stacktrace.
>
> [Switching to Thread 2ac04300 (LWP 100088/Cynthiune)]
> 0x28ab46be in init_protocols (protocols=Variable "protocols" is not available.
> ) at protocol.c:62
> 62 isEmpty &= (p2->properties->count == 0);
>
>
> (gdb) bt
> #0 0x28ab46be in init_protocols (protocols=Variable "protocols" is not
> available.
> ) at protocol.c:62
> #1 0x28ab45b5 in init_protocols (protocols=Variable "protocols" is not
> available.
> ) at protocol.c:186
> #2 0x28ab4231 in objc_init_protocols (protocols=Error accessing memory
> address 0x1: Bad address.
> ) at protocol.c:196
> #3 0x28aae323 in objc_try_load_category (cat=Variable "cat" is not available.
> ) at category_loader.c:38
> #4 0x28ab3d51 in __objc_exec_class (module=Variable "module" is not
> available.
> ) at loader.c:89
> #5 0x08063a11 in .objc_load_function ()
> #6 0x08086545 in __do_global_ctors_aux ()
> #7 0x0805b951 in _init ()
> #8 0x00000000 in ?? ()
> #9 0x00000000 in ?? ()
> #10 0xbfbfe498 in ?? ()
> #11 0x0805bbb7 in _start1 ()
> #12 0x0805bb38 in _start ()
> #13 0x00000000 in ?? ()
>
> I wonder where this code is? protocol.c I suppose libobjc2.
>
> IU thus recompiled also libobjc2 with debug=yes and get the following:
> (gdb) bt
> #0 0x28abb1c5 in isEmptyProtocol (aProto=0x8098cf0) at protocol.c:62
> #1 0x28abb06e in unique_protocol (aProto=0x8098cf0) at protocol.c:118
> #2 0x28ab90ac in init_protocols (protocols=0x8098d10) at protocol.c:189
> #3 0x28ab909a in init_protocols (protocols=0x8099010) at protocol.c:186
> #4 0x28ab8e3a in objc_init_protocols (protocols=0x8099010) at protocol.c:196
> #5 0x28aaf814 in load_category (cat=0x8099040, class=0x28ad0820)
> at category_loader.c:38
> #6 0x28aaf4b2 in try_load_category (cat=0x8099040) at category_loader.c:50
> #7 0x28aaf41a in objc_try_load_category (cat=0x8099040)
> at category_loader.c:63
> #8 0x28ab88ea in __objc_exec_class (module=0x8099058) at loader.c:89
> #9 0x08063a11 in .objc_load_function ()
> #10 0x08086545 in __do_global_ctors_aux ()
> #11 0x0805b951 in _init ()
> #12 0x00000000 in ?? ()
> #13 0x00000000 in ?? ()
> #14 0xbfbfe498 in ?? ()
> #15 0x0805bbb7 in _start1 ()
> #16 0x0805bb38 in _start ()
> #17 0x00000000 in ?? ()
>
>
> Does this help?
Possibly a bit. The line where it is crashing is in determining if an ObjC2
protocol is empty. This would be expected to segfault if this is an ObjC 1
protocol, but this bit of code should not be reached in this case. Can you see
what the protocol is and what its class is?
David
-- Sent from my brain