• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Garbage Collection Crash using NSImage
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Garbage Collection Crash using NSImage


  • Subject: Garbage Collection Crash using NSImage
  • From: Kristof Van Landschoot <email@hidden>
  • Date: Mon, 1 Jun 2009 15:59:21 -0700

 This piece of code was split off from a project I am working on. It
consistently reproduces a garbage collection error on my Mac OS 10.5.7 and
sometimes crashes. I have been looking at it for too long so my question is:
does anybody else see why this would give errors when garbage collection is
on?

- (void) doCrash: (id) sender
{
    NSArray *lURLArray = [ NSArray arrayWithObjects:


@"http://userserve-ak.last.fm/serve/300x300/23621007.jpg";,


@"http://userserve-ak.last.fm/serve/300x300/26675609.png";,


@"http://userserve-ak.last.fm/serve/300x300/26675609.png";,

                          nil ];
    NSString *lImageURL = nil;

    for (lImageURL in lURLArray)

    {
        NSImage *lImage = [[NSImage alloc] initWithContentsOfURL:
[NSURL URLWithString: lImageURL]];

        NSSize targetSize = NSMakeSize(80,80);

        NSImage *newImage = [[NSImage alloc] initWithSize:targetSize];

        [newImage lockFocus];

        NSRect thumbnailRect = NSMakeRect(0,0,80,80);

        NSRect sourceRect = NSMakeRect(0,0,[lImage size].width,[lImage
size].height);

        [lImage drawInRect: thumbnailRect
                  fromRect: sourceRect

                 operation: NSCompositeSourceOver
                  fraction: 1.0];

        [newImage unlockFocus];
    }
}

When playing around with the URLs in the lURLArray I get different behavior:
sometimes crashes, sometimes the error message.

The garbage collection error message is triggered when the garbage collector
is freeing one of the images and goes like this:

reference count underflow for <address>, break on
auto_refcount_underflow_error to debug.

Stack Trace:

#0   auto_refcount_underflow_error ()
#1   Auto::Zone::dec_refcount_small_medium ()
#2   Auto::Zone::block_decrement_refcount ()
#3   CFRelease ()
#4   -[NSBitmapImageRep _freeData] ()
#5   -[NSBitmapImageRep _freeImage] ()
#6   -[NSBitmapImageRep finalize] ()
#7   finalizeOneObject ()
#8   foreach_block_do ()
#9   batchFinalize ()
#10  batchFinalizeOnMainThread ()
#11  objc_collect_if_needed ()
#12  NSPopAutoreleasePool ()

Any help is much appreciated, thanks, Kristof

[ see also
http://stackoverflow.com/questions/937105/garbage-collection-crash-using-nsimagefor
the same question ]

Best Regards,

Kristof
_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Prev by Date: NSToolbar: notification of change?
  • Next by Date: Re: NSToolbar: notification of change?
  • Previous by thread: Re: NSToolbar: notification of change?
  • Next by thread: Referring to file by Alias ^or^ path
  • Index(es):
    • Date
    • Thread