gnustep-dev
[Top][All Lists]
Advanced

[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




reply via email to

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