discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GWorkspace hangs on first exit attempt. Remote objects problem?


From: Richard Frith-Macdonald
Subject: Re: GWorkspace hangs on first exit attempt. Remote objects problem?
Date: Sat, 9 Mar 2013 17:04:21 +0000

On 9 Mar 2013, at 14:44, Richard Frith-Macdonald wrote:

> 
> On 9 Mar 2013, at 12:20, Fred Kiefer wrote:
>>> 
>>> here I checked:
>>> (gdb) p [invocation->_sig isOneway]
>>> $7 = 1 '\001'
>>> 
>>> so it appears that the information about oneway is properly passed, right?
>>> (gdb) p invocation->_sig->_methodTypes
>>> $9 = 0x17a9c30 "Vv24@0:8@16"
>>> 
>>> Is this enough? In case not you need to tell me which part to inspect.
>> 
>> 
>> I think the interesting stuff happens in frame 4. There we end up in the 
>> needsResponse == YES branch, which seems wrong for a one way method call. 
>> You should have a look at the block from line 2016 to 2039 and find out why 
>> needsResponse gets set to YES. Most likely the method type gets compute 
>> wrongly. We seem to get these strange results sometimes from libobjc2.
> 
> Yes ... I can't reproduce  the problem on any system I have apaer from the 
> debian 64bit one where I recently installed using llvm/clang and libobjc2.
> So this seems to be either an llvm/clang specific issue or a libobjc2 
> specific issue, with the code going wrong later on (ie the invocation itsself 
> seems fine).
> Unfortunately, llvm/clang produces output here that gdb on debian stable 
> won't handle, so while I can reproduce the exception I can't debug it ...
> I'm going to try finding a backport of a very recent gdb, or failing that, 
> build gdb from source, to see if it can tell me where the compiler/runtime is 
> producing an unexpected result.


So, turns out this is libobjc2 bug ... the objc_get_type_qualifiers() function 
was totally broken, with the result that, when the NSConnection code asked it 
whether the method type signature said the method was oneway, the result was 
that it wasn't ... so of course it was then waiting for a response which never 
came.

I fixed the libobjc2 code in svn trunk.


reply via email to

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