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: Tom Davie
Subject: Re: Infinite loop in objc_msg_lookup_sender
Date: Sat, 3 Nov 2012 12:30:29 +0000

Hi David,

I guess the easiest way to get a hint at this would be to find out which svn 
commit it was introduced in, as 1.6.1 works nicely.  Is it possible to find out 
at what revision trunk and 1.6.1 matched each other?  That way I can spend a 
bit of time delta debugging where it's gone awry.

Thanks

Tom Davie

On 3 Nov 2012, at 11:17, David Chisnall <address@hidden> wrote:

> 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
> 
> 
> _______________________________________________
> Gnustep-dev mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/gnustep-dev




reply via email to

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