|
From: | Fred Kiefer |
Subject: | Re: Gorm segfault on exit |
Date: | Fri, 22 Feb 2013 23:22:24 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130105 Thunderbird/17.0.2 |
I was talking about the instance variable of NSWindow with that name. On 22.02.2013 22:59, Gregory Casamento wrote:
The _firstResponder object in GormDocument is a proxy object which is used to allow the developer to make a connection with a target of nil so that when the application is run and the connection is established it will cause the method [NSApplication sendAction:to:from:] to search the responder chain for the first object which responds to the action which was specified. So it makes sense that it wouldn't match any of the subviews. GC On Fri, Feb 22, 2013 at 3:50 PM, Fred Kiefer <fredkiefer@gmx.de> wrote:On 22.02.2013 18:24, Riccardo Mottola wrote:Fred Kiefer wrote:On 22.02.2013 14:15, Riccardo Mottola wrote:when I start Gorm and close it, no problem. When I start it and open a copuple of gorm files, everything file. If I open MDIndexer.m (ofDid you mean the MDIndexer.gorm file?yes, sorry.GWorkspace's Preferences, the one we are investigating about blur) Gormcrashes on exist with the following segfault: 0xbb17ef1c in objc_msg_lookup () from /usr/lib/libobjc.so.3 (gdb) bt #0 0xbb17ef1c in objc_msg_lookup () from /usr/lib/libobjc.so.3 #1 0xbb89fab3 in -[NSWindow resignKeyWindow] (self=0xba944e14, _cmd=0xbb9c6c50) at NSWindow.m:1880 #2 0xbb6fdb54 in -[NSApplication deactivate] (self=0xba7371b4, _cmd=0xba6f7c28) at NSApplication.m:1361 #3 0xba6b8359 in -[XGServer(EventOps) processEvent:] (self=Cannot access memory at address 0xe000c ) at XGServerEvent.m:1152 #4 0xba6b321c in -[XGServer(EventOps) receivedEvent:type:extra:**forMode:] ( self=0xba8201c4, _cmd=0xbb633b28, data=0x7, type=ET_RDESC, extra=0x7, mode=0xba9ca144) at XGServerEvent.m:310 #5 0xbb4550d3 in -[GSRunLoopCtxt pollUntil:within:] (self=0xba72ba64, _cmd=0xbb5ef628, milliseconds=0, contexts=0xba9e9d84) at GSRunLoopCtxt.m:494 #6 0xbb385318 in -[NSRunLoop acceptInputForMode:beforeDate:**] ( self=0xba9e9d24, _cmd=0xbb5ef648, mode=0xba9ca144, limit_date=<optimized out>) at NSRunLoop.m:1206 <snip>I was able to reproduce a segmentation fault once. Next I tried in gdb, but could not reproduces it and since then I fail to get it even without gdb. I will fire up valgrind and see if that finds any anomaly. From you back trace it looks like the issue involves notifications and events, this could be very timing sensitive. The error itself seems to come from an invalid first responder in the window. But which window? Could you try to print out some information on the window?Here it looks very consistent. The window on #1, shows this: <GormNSWindow: 0xba944f24>Number: 31 Title: Window Thus it looks to me that it is one of the Gorm windows (given the class name, but also the Title). However all the document windows are caled Window... I suppose it is the window with the tabview, because that one is key.I had to try about twenty times, but finally I was able to reproduce the error in gdb. I am able to confirm that it is the window with the tabview and that it is the _firstResponder that is causing the trouble: (gdb) p self->_firstResponder $2 = (struct objc_object *) 0xf6b458 (gdb) p *(self->_firstResponder) $3 = {class_pointer = 0xdeadface} The address of the first responder does not match any of the current subviews of the window. Most likely it is an editor that gets only added or the initial first responder that point so some obsolete object. The simplest way to find out is to run Gorm with Zombies turned on and see which class gets that call. As I need too long to reproduce the issue, it would be best if your did those checks. After that we will know whether the issue is in Gorm or in gui code and maybe we even have an idea on how to fix it.
[Prev in Thread] | Current Thread | [Next in Thread] |