discuss-gnustep
[Top][All Lists]
Advanced

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

Re: Interesting error in GWorkspace


From: Eric Wasylishen
Subject: Re: Interesting error in GWorkspace
Date: Thu, 8 Sep 2011 13:04:38 -0600

I added two extra checks: one against creating a NSCachedImageRep with a size 
of zero (it looks like that is where the NSView with size 0,0 was coming from), 
and a check against locking focus on an image with a size of 0,0.

Maybe those will help isolate the problem a bit..

Actually, I just looked at Dock.m:

- (void)setBackImage
{
  NSImage *image = [[manager desktopView] backImage];
  int i;

  DESTROY (backImage);

  if (image) {
    NSRect r = [self bounds];
    
    backImage = [[NSImage alloc] initWithSize: r.size];
    [backImage lockFocus]; 
    [image compositeToPoint: NSZeroPoint 
                   fromRect: r
                  operation: NSCompositeCopy];

I bet "r" has a size of (0, 0).. I wonder why the bounds would be zero?

Eric

On 2011-09-08, at 3:38 AM, Riccardo Mottola wrote:

> Hi
>> ok, gdb must be confused because there is an NSAffineTransform.m in both 
>> base and gui.
>> 
>> Sorry, I'm not sure what to try next :-/
> me neither. I wonder if this a bug in base? I think not, I feel that 
> something is passing bad transform parameters.
> 
> I was able to break into it by setting another breakpoint of the method and 
> then removing it... a bit unrepeatable but one time it worked and I got this:
> 
> #0  -[NSAffineTransform invert] (self=0xb901b314, _cmd=0xbbaf14d8)
>    at NSAffineTransform.m:253
> #1  0xbb999824 in -[NSView _rebuildCoordinates] (self=0xb9f51be4,
>    _cmd=0xbbaf14a0) at NSView.m:348
> #2  0xbb98bf16 in -[NSView visibleRect] (self=0xb9f51be4, _cmd=0xbbaf14e0)
>    at NSView.m:2677
> #3  0xbb98c5be in -[NSView lockFocus] (self=0xb9f51be4, _cmd=0xbba8ba18)
>    at NSView.m:2343
> #4  0xbb8abfae in -[NSImage lockFocusOnRepresentation:] (self=0xb901b254,
>    _cmd=0xbba8b9f8, imageRep=0x0) at NSImage.m:1072
> #5  0xbb8a5c0e in -[NSImage lockFocus] (self=0xb901b254, _cmd=0x8103c80)
>    at NSImage.m:1048
> #6  0x08077984 in -[Dock setBackImage] (self=0xba0dff04, _cmd=0x8103cc8)
>    at Desktop/Dock/Dock.m:418
> #7  0x080790c5 in -[Dock tile] (self=0xba0dff04, _cmd=0x80fcc98)
>    at Desktop/Dock/Dock.m:490
> #8  0x08065bef in -[GWDesktopManager activateDesktop] (self=0xb9e58104,
>    _cmd=0x80f6a20) at Desktop/GWDesktopManager.m:158
> #9  0x0805749a in -[GWorkspace applicationWillFinishLaunching:] (
>    self=0xbacb3604, _cmd=0xbba4c060, aNotification=0xba101a84)
>    at GWorkspace.m:437
> #10 0xbb4d3ba5 in -[NSNotificationCenter _postAndRelease:] (self=0xbac812a4,
>    _cmd=0xbb6f7bc0, notification=0xba101a84) at NSNotificationCenter.m:1223
> 
> det is indeed 0.
> 
> now, I cannot access A, B, C, D for some reason, however moving up one in the 
> stack inside NSView, I checked the "ts" structure:
> (gdb) p ts
> $6 = {m11 = 1, m12 = 0, m21 = 0, m22 = 0, tX = 0, tY = 0}
> 
> I don't think this is very sane.
> 
> Inside NSView I also see:
> (gdb) p _frameMatrix
> $7 = (struct objc_object *) 0x0
> (gdb) p _frame
> $8 = {origin = {x = 0, y = 0}, size = {width = 0, height = 0}}
> 
> well, doing transforms of 0 stuff is useless, perhaps NSAffineTransform 
> should be smart checking for 0 values, but at the end I don't think it makes 
> sense to have them at all. The View itself seems pretty messed up:
> 
> po self
> h=-&- v=-&- <NSView: 0xb9f51be4> f={x = 0; y = 0; width = 0; height = 0} b={x 
> = 0; y = nan; width = 0; height = 1.28695e-41}
> 
> This comes further up from an NSImage, I tried to po [NSImage name] but gdb 
> crashed and afterwards I wasn't able rerun and get in to the breakpoint 
> again...
> 
> Riccardo
> 
> 
> 
> 
> 
> _______________________________________________
> Discuss-gnustep mailing list
> Discuss-gnustep@gnu.org
> https://lists.gnu.org/mailman/listinfo/discuss-gnustep




reply via email to

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