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 _______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
