[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Infinite loop in objc_msg_lookup_sender
From: |
David Chisnall |
Subject: |
Re: Infinite loop in objc_msg_lookup_sender |
Date: |
Sat, 3 Nov 2012 11:17:32 +0000 |
This sounds like a problem in the forwarding. Here it tries to invoke the fast
proxying function:
> #92241 0x00007ffff6a810d2 in objc_msg_lookup_internal
> (receiver=0x7fffffff8550, selector=0xa68660, sender=0x2b4d9b8) at
> sendmsg2.c:96
This then calls the GNUstep proxying hook:
> #92240 0x00007ffff77347be in gs_objc_proxy_lookup (receiver=0x2b4d9b8,
> op=0xa68660) at GSFFIInvocation.m:276
This then calls back into the runtime to invoke the
-forwardingTargetForSelector: method.
> #92239 0x00007ffff6a80ea8 in objc_msg_lookup_sender (receiver=0x7fffffff7fa0,
> selector=0x7ffff7b86f30, sender=0x0) at sendmsg2.c:171
This then fails to find the -forwardingTargetForSelector: method in the
receiver's class and so repeats the process.
The odd thing is that the call in gs_objc_proxy_lookup() is bracketed in a call
to class_respondsToSelector(), which should only return YES if the class
responds to the selector directly, without invoking any forwarding mechanisms.
The code in objc_msg_lookup_internal() should always find a method if
class_respondsToSelector() does, unless there is some memory corruption going
on...
David
On 3 Nov 2012, at 10:54, Tom Davie wrote:
> Hey all,
>
> Having managed to get libobjc2 trunk installed, I'm now unfortunately hitting
> an infinite recursion in the runtime:
>
> gdb sayeth:
>
> #92231 … repeats ad-infinatum, decrementing the receiver pointer by 0x110
> every iteration.
> #92232 0x00007ffff6a810d2 in objc_msg_lookup_internal
> (receiver=0x7fffffff7d80, selector=0x7ffff7b86f30, sender=0x0) at
> sendmsg2.c:96
> #92233 0x00007ffff6a80ea8 in objc_msg_lookup_sender (receiver=0x7fffffff7d80,
> selector=0x7ffff7b86f30, sender=0x0) at sendmsg2.c:171
> #92234 0x00007ffff77347be in gs_objc_proxy_lookup (receiver=0x2b4d9b8,
> op=0x7ffff7b86f30) at GSFFIInvocation.m:276
> #92235 0x00007ffff6a810d2 in objc_msg_lookup_internal
> (receiver=0x7fffffff7e90, selector=0x7ffff7b86f30, sender=0x0) at
> sendmsg2.c:96
> #92236 0x00007ffff6a80ea8 in objc_msg_lookup_sender (receiver=0x7fffffff7e90,
> selector=0x7ffff7b86f30, sender=0x0) at sendmsg2.c:171
> #92237 0x00007ffff77347be in gs_objc_proxy_lookup (receiver=0x2b4d9b8,
> op=0x7ffff7b86f30) at GSFFIInvocation.m:276
> #92238 0x00007ffff6a810d2 in objc_msg_lookup_internal
> (receiver=0x7fffffff7fa0, selector=0x7ffff7b86f30, sender=0x0) at
> sendmsg2.c:96
> #92239 0x00007ffff6a80ea8 in objc_msg_lookup_sender (receiver=0x7fffffff7fa0,
> selector=0x7ffff7b86f30, sender=0x0) at sendmsg2.c:171
> #92240 0x00007ffff77347be in gs_objc_proxy_lookup (receiver=0x2b4d9b8,
> op=0xa68660) at GSFFIInvocation.m:276
> #92241 0x00007ffff6a810d2 in objc_msg_lookup_internal
> (receiver=0x7fffffff8550, selector=0xa68660, sender=0x2b4d9b8) at
> sendmsg2.c:96
> #92242 0x00007ffff6a80ea8 in objc_msg_lookup_sender (receiver=0x7fffffff8550,
> selector=0xa68660, sender=0x2b4d9b8) at sendmsg2.c:171
> #92243 0x0000000000591c43 in -[Item initWithCoder:] (self=0x2b4d9b8,
> _cmd=0x7ffff7b24820, aDecoder=0xda4308) at Classes/Model/Immutable/Item.m:241
> #92244 …. About 80 more stack frames of my code.
>
> Thanks
>
> Tom Davie
> _______________________________________________
> Gnustep-dev mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/gnustep-dev
-- Sent from my PDP-11