discuss-gnustep
[Top][All Lists]
Advanced

[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




reply via email to

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