|
From: | Fred Kiefer |
Subject: | Re: Problem with Gorm |
Date: | Mon, 11 Jul 2011 11:42:56 +0200 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.18) Gecko/20110616 SUSE/3.1.11 Thunderbird/3.1.11 |
Fred On 09.07.2011 02:38, Germán Arias wrote:
Well, Gorm crash at line 959 in NSImage.m (when rep is equal to nil) if (rep == nil) return; after call [self nativeDrawInRect: dstRect fromRect: .... in line 1293. But definitely this don't have sense. Fortunately debug=yes solve the problem. On lun, 2011-07-04 at 12:23 -0600, Eric Wasylishen wrote:That's really strange. I don't see any #ifdef's in NSImage.m. Maybe you can try to compile without "debug=yes" (so you get the crash), but somehow add "-g" to the compile flags so debug info is generated. Do you get any info if you select stack frame 0 and type "l" (for listing source code)? On 2011-07-04, at 12:15 PM, Germán Arias wrote:If the problem disappears with "debug=yes". Could be the cause a code line inside a #ifdef DEBUG? A code line that should be outside of that ifdef? On lun, 2011-07-04 at 10:41 +0200, Fred Kiefer wrote:Which backend are you using? That will result in different methods being called next and most likely the problem is one level deeper. I had a quick look into these new methods and didn't like too much what I saw there. We have a lot of code duplication between these two methods, but we also have differences there which I don't understand. Why do we use scaling for the native drawing but not for the gui drawing? Anyway, the code in native drawing should not check for isDrawingToScreen. When drawing to a PDF or PostScript surface we should be able to composite or dissolve, we just need to package that up correctly as backend operations. And of course need to have the PS and PDF context report back that they are able to support this. I also noticed that the new code wont fill the cached image rep with the image background colour. Why isn't this done and does this match the Cocoa behaviour? Why does the old code (guiDrawInRect:...) use PSgsave and PSgrestore around the cache drawing? We wont do any other operations on the cache and don't need to restore the old state. I think that we should start a discussion about this whole drawing code. Hopefully we end up with a deeper understanding of what should happen here and will then be able to package it up with a nice and clean call to the backend and three or four (almost?) correct implementations for this in GSContext, GSStreamContext and GSCairoContext. But then I may be completely wrong here, as I really don't understand much of this new code. On 03.07.2011 01:49, Germán Arias wrote:Well, after compiling gui with "debug=yes" all works fine. But then, recompiling gui just with "make" the problem is there again. On sáb, 2011-07-02 at 11:36 -0600, Eric Wasylishen wrote:Hey German, I wasn't able to reproduce that in Gorm or Gemas, but it looks like it's coming from code I've worked on lately... Frame 1 of the backtrace is just the line which redirects -drawInRect: to -guiDrawInRect:, but frame 0 has no debug info. Would you be able to recompile -gui (and maybe -back as well) with debugging on (just make clean and make debug=yes), and see if it you can get a better backtrace? Thanks. Eric On 2011-07-01, at 4:20 PM, Germán Arias wrote:When I select "Containers Palette" the app crash. The backtrace is: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb669fb30 (LWP 6463)] 0x0847ac03 in ?? () (gdb) backtrace #0 0x0847ac03 in ?? () #1 0xb7344734 in -[NSImage drawInRect:fromRect:operation:fraction:] ( self=0x86385f8, _cmd=0xb759a358, dstRect= {origin = {x = 0, y = 0}, size = {width = 0, height = 0}}, srcRect= {origin = {x = 0, y = 0}, size = {width = 0, height = 0}}, op=NSCompositeSourceOver, delta=1) at NSImage.m:1297 #2 0xb73405dd in -[NSImage drawAtPoint:fromRect:operation:fraction:] ( self=0x86385f8, _cmd=0xb759a320, point={x = 0, y = 0}, srcRect= {origin = {x = 0, y = 0}, size = {width = 0, height = 0}}, op=NSCompositeSourceOver, delta=1) at NSImage.m:925 #3 0xb7344650 in -[NSImage compositeToPoint:fromRect:operation:fraction:] ( self=0x86385f8, _cmd=0xb759a2d0, aPoint={x = 0, y = 9}, srcRect= {origin = {x = 0, y = 0}, size = {width = 0, height = 0}}, op=NSCompositeSourceOver, delta=1) at NSImage.m:864 #4 0xb73402a1 in -[NSImage compositeToPoint:operation:] (self=0x86385f8, _cmd=0xb756f658, aPoint={x = 0, y = 9}, op=NSCompositeSourceOver) at NSImage.m:811 #5 0xb72df7dc in -[NSCell drawInteriorWithFrame:inView:] (self=0x8600bf0, _cmd=0xb756f668, cellFrame= {origin = {x = 0, y = 0}, size = {width = 9, height = 9}}, controlView=0x86393f0) at NSCell.m:2031 #6 0x086385f8 in ?? () #7 0xb756f658 in _OBJC_SELECTOR_TABLE () from /usr/GNUstep/Local/Library/Libraries/libgnustep-gui.so.0.21 ---Type<return> to continue, or q<return> to quit--- #8 0x00000000 in ?? () (gdb) FisicaLab also crash, when you open the help panel, with a similar backtrace.
[Prev in Thread] | Current Thread | [Next in Thread] |