Wed 21 Mar 2012 02:33:55 PM UTC, original submission:
Hi guys,
I'm not quite familiar with the Gorm internals but I just experienced a situation where Gorm was doing an infinite resize loop when creating a window upon "Document"->"New Application". I Could track this down to the fact that GormViewEditor tracks the frame of the edited object and, sometimes, seems to be the edited object itself (?). Consequently, you get a nice little infinite loop via the NSViewFrameDidChangeNotification:
#6 0x00007ffff7a86791 in -[GormViewEditor editedObjectFrameDidChange:] (self=0x17632c8, _cmd=0x7ffff7d39780, sender=0x1774138) at GormViewEditor.m:328
#7 0x00007ffff5d90097 in -[NSNotificationCenter _postAndRelease:] ()
from /usr/GNUstep/System/Library/Libraries/x86_64/linux-gnu/gnu-gnu-gnu/libgnustep-base.so.1.24
#8 0x00007ffff5d90cff in -[NSNotificationCenter postNotificationName:object:userInfo:] ()
from /usr/GNUstep/System/Library/Libraries/x86_64/linux-gnu/gnu-gnu-gnu/libgnustep-base.so.1.24
#9 0x00007ffff5d90a81 in -[NSNotificationCenter postNotificationName:object:] ()
from /usr/GNUstep/System/Library/Libraries/x86_64/linux-gnu/gnu-gnu-gnu/libgnustep-base.so.1.24
#10 0x00007ffff6b648f0 in -[NSView setFrame:] (self=0x171ace8, _cmd=0x7ffff704ef90, frameRect=...) at NSView.m:1229
#11 0x00007ffff6b6b638 in -[NSView resizeWithOldSuperviewSize:] (self=0x171ace8, _cmd=0x7ffff704ef00, oldSize=...) at NSView.m:2058
#12 0x00007ffff6b6adf6 in -[NSView resizeSubviewsWithOldSize:] (self=0x17632c8, _cmd=0x7ffff704e9c0, oldSize=...) at NSView.m:1933
#13 0x00007ffff6b64860 in -[NSView setFrame:] (self=0x17632c8, _cmd=0x7ffff7d82e10, frameRect=...) at NSView.m:1226
#14 0x00007ffff7a86791 in -[GormViewEditor editedObjectFrameDidChange:] (self=0x17632c8, _cmd=0x7ffff7d39780, sender=0x17740d8) at GormViewEditor.m:328
#15 0x00007ffff5d90097 in -[NSNotificationCenter _postAndRelease:] ()
from /usr/GNUstep/System/Library/Libraries/x86_64/linux-gnu/gnu-gnu-gnu/libgnustep-base.so.1.24
#16 0x00007ffff5d90cff in -[NSNotificationCenter postNotificationName:object:userInfo:] ()
from /usr/GNUstep/System/Library/Libraries/x86_64/linux-gnu/gnu-gnu-gnu/libgnustep-base.so.1.24
#17 0x00007ffff5d90a81 in -[NSNotificationCenter postNotificationName:object:] ()
from /usr/GNUstep/System/Library/Libraries/x86_64/linux-gnu/gnu-gnu-gnu/libgnustep-base.so.1.24
#18 0x00007ffff6b648f0 in -[NSView setFrame:] (self=0x171ace8, _cmd=0x7ffff704ef90, frameRect=...) at NSView.m:1229
#19 0x00007ffff6b6b638 in -[NSView resizeWithOldSuperviewSize:] (self=0x171ace8, _cmd=0x7ffff704ef00, oldSize=...) at NSView.m:2058
#20 0x00007ffff6b6adf6 in -[NSView resizeSubviewsWithOldSize:] (self=0x17632c8, _cmd=0x7ffff704e9c0, oldSize=...) at NSView.m:1933
#21 0x00007ffff6b64860 in -[NSView setFrame:] (self=0x17632c8, _cmd=0x7ffff7d82e10, frameRect=...) at NSView.m:1226
#22 0x00007ffff7a86791 in -[GormViewEditor editedObjectFrameDidChange:] (self=0x17632c8, _cmd=0x7ffff7d39780, sender=0x17393b8) at GormViewEditor.m:328
My local workaround is to disable the notification before setting the frame and then reenabling it aftewards, but somebody with more insight into Gorm should take a look at it. This happens for me on an x86_64 Linux machine with recent (last night), base, gui, back and Gorm, (it's all built using clang with the non-fragile ABI, but I don't know whether that's related).
Cheers,
Niels
|