discuss-gnustep
[Top][All Lists]
Advanced

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

Re: new crash: TalkSoup startup


From: Wolfgang Lux
Subject: Re: new crash: TalkSoup startup
Date: Thu, 15 Dec 2016 12:08:44 +0100

> Am 15.12.2016 um 00:05 schrieb Riccardo Mottola <riccardo.mottola@libero.it>:
> 
> Hi,
> 
> Fred Kiefer wrote:
>> In your specific case the initialisation of the NSDocumentController happens 
>> because NSApplication cannot find a suitable responder for an action it is 
>> trying to send. This looks like your UI is using an undefined message.
>> 
>> Sorry, I know that this isn’t much help. But it is the best I can do right 
>> now.
>> Fred
> 
> I did not yet try valgrind, I am not very good at getting usable information 
> from it, but I tried going back in gnustep GUI code and check if we "broke" 
> something and indeed.
> 
> Oct 1st -> works!
> Oct 9th -> works
> Oct 23rd -> works
> Oct 24th -> works
> Oct 25th -> broken
> 
> thus the problems appears to be the lock change by Gregory!
> The fact that we get a crash in [NSLock new] doesn't look so unreasonble now.

Actually, we don't get a crash in NSLock new, but we get a crash when the 
result of NSLock new is assigned to the mlock variable. This looks a bit weird 
at first, but then turns out to be a name conflict that is not resolved 
properly by the linker. The mlock variable is not declared static and libc 
exports a function mlock. Because of the incorrect declaration, the linker 
resolves the name mlock in the assignment mlock = [NSLock new] to the libc 
function rather than the global variable and the crash happens when the code 
attempts to write the address of the new lock to the text section (read the 
code) of the program.

Changing the declaration to use static (as it should always have been!) fixes 
the issue.

Wolfgang
 


reply via email to

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