Re: Quick Looking big files crash
So it looks like the QuickLook framework has some bugs with Garbage Collection required. I contacted Apple tech support and they confirmed this is likely a bug in the Quick Look framework and asked me to file a bug report. Too bad this cost me one of my free tech support chits. In the mean time I'm incorporating QL this way: NSString *paths = @; for (NSString *thisPath in srcPathArray) { NSString *s = @; if ([paths length] == 0) { s = [NSString stringWithFormat:@(quoted form of (POSIX path of \%@\)), thisPath]; } else { s = [NSString stringWithFormat:@ \ \ (quoted form of (POSIX path of \%@\)), thisPath]; } paths = [paths stringByAppendingString:s]; } NSAppleScript *quickLook = nil; // do shell script (qlmanage -p (quoted form of (POSIX path of srcPath))) NSString *command = [NSString stringWithFormat:@do shell script (\qlmanage -p \ %@),paths]; quickLook = [[NSAppleScript alloc] initWithSource:command]; [quickLook executeAndReturnError:nil]; On May 3, 2011, at 9:09 PM, Brad Stone wrote: Interesting, OK, now remember, t this is new to me. To begin the QL panel I run this required method: - (void)beginPreviewPanelControl:(QLPreviewPanel *)panel { previewPanel = [panel retain]; panel.delegate = self; panel.dataSource = self; } and then it ends with - (void)endPreviewPanelControl:(QLPreviewPanel *)panel { [previewPanel release]; previewPanel = nil; } Where QLPreviewPanel* previewPanel; is defined in my header file. The crash happens after the begin and never gets to the end. I see here http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/GarbageCollection/Articles/gcCoreFoundation.html that to ensure the longevity of Objective-C objects, you should use CFRetain instead of retain. I haven't been able to find the correct syntax to replace the retain/release with CFRetain/CFRelease On May 3, 2011, at 7:51 PM, Wim Lewis wrote: On 3 May 2011, at 4:03 PM, Brad Stone wrote: I have a symbolic breakpoint set and it stops on auto_refcount_underflow_error, even the small files. If I continue the doc shows in QL. Presumably, a few stack frames up, there will be a call to CFRelease() which is causing the underflow (what would be an over-released zombie in a non-GC app). The first thing I'd look for is using CFRelease() when you should call -release (or vise versa, and the same for retain): code written pre-GC would treat those as equivalent, but in a GC or optional-GC world they need to be treated as operating on distinct kinds of refcount. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/cocoa-dev%40softraph.com This email sent to cocoa-...@softraph.com ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Quick Looking big files crash
On 3 May 2011, at 3:45 PM, Brad Stone wrote: Here's what I get when I QL a large file. proNotes(52698,0x1196fd000) malloc: reference count underflow for 0x201afc920, break on auto_refcount_underflow_error to debug. (17 times) proNotes(52698,0x1196fd000) malloc: resurrection error for object 0x201f0a380 while assigning {conservative-block}[352](0x20189fc40)[304] = CFRunLoopSource[128](0x201f0a380) garbage pointer stored into reachable memory, break on auto_zone_resurrection_error to debug (13 times) Then crash. What should I look for? How should I approach debugging this? Have you tried breaking on auto_refcount_underflow_error and auto_zone_resurrection_error? ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Quick Looking big files crash
On May 3, 2011, at 4:45 PM, Brad Stone wrote: Here's what I get when I QL a large file. proNotes(52698,0x1196fd000) malloc: reference count underflow for 0x201afc920, break on auto_refcount_underflow_error to debug. (17 times) proNotes(52698,0x1196fd000) malloc: resurrection error for object 0x201f0a380 while assigning {conservative-block}[352](0x20189fc40)[304] = CFRunLoopSource[128](0x201f0a380) garbage pointer stored into reachable memory, break on auto_zone_resurrection_error to debug (13 times) Then crash. What should I look for? How should I approach debugging this? Do this: 1. In your project, add an executable for /usr/bin/qlmanage 2. Give it an argument that points to a file that your importer handles, plus any flags you need to pass to the task 3. If you haven't done so already, make a symbolic link pointing to your built importer product, and place it where you normally place your QuickLook generators (so it loads the built product instead of a copy of the built product) 4. Make a symbolic breakpoint for auto_zone_resurrection_error 5. Build and debug If you set up everything correctly, then Xcode's debugger will launch qlmanage, which will load your plugin, and trigger the problem, and cause the debugger to break. Good luck; debugging plugins isn't always easy. Nick Zitzmann http://www.chronosnet.com/ ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Quick Looking big files crash
I have a symbolic breakpoint set and it stops on auto_refcount_underflow_error, even the small files. If I continue the doc shows in QL. On May 3, 2011, at 6:52 PM, Wim Lewis wrote: On 3 May 2011, at 3:45 PM, Brad Stone wrote: Here's what I get when I QL a large file. proNotes(52698,0x1196fd000) malloc: reference count underflow for 0x201afc920, break on auto_refcount_underflow_error to debug. (17 times) proNotes(52698,0x1196fd000) malloc: resurrection error for object 0x201f0a380 while assigning {conservative-block}[352](0x20189fc40)[304] = CFRunLoopSource[128](0x201f0a380) garbage pointer stored into reachable memory, break on auto_zone_resurrection_error to debug (13 times) Then crash. What should I look for? How should I approach debugging this? Have you tried breaking on auto_refcount_underflow_error and auto_zone_resurrection_error? ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/cocoa-dev%40softraph.com This email sent to cocoa-...@softraph.com ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Quick Looking big files crash
My app stores an NSURL to a file. All I'm doing is acting as the data source and delegate for QL and giving it access to an NSArray with the URL. I'm not creating a plugin (or am I misunderstanding you). On May 3, 2011, at 6:59 PM, Nick Zitzmann wrote: On May 3, 2011, at 4:45 PM, Brad Stone wrote: Here's what I get when I QL a large file. proNotes(52698,0x1196fd000) malloc: reference count underflow for 0x201afc920, break on auto_refcount_underflow_error to debug. (17 times) proNotes(52698,0x1196fd000) malloc: resurrection error for object 0x201f0a380 while assigning {conservative-block}[352](0x20189fc40)[304] = CFRunLoopSource[128](0x201f0a380) garbage pointer stored into reachable memory, break on auto_zone_resurrection_error to debug (13 times) Then crash. What should I look for? How should I approach debugging this? Do this: 1. In your project, add an executable for /usr/bin/qlmanage 2. Give it an argument that points to a file that your importer handles, plus any flags you need to pass to the task 3. If you haven't done so already, make a symbolic link pointing to your built importer product, and place it where you normally place your QuickLook generators (so it loads the built product instead of a copy of the built product) 4. Make a symbolic breakpoint for auto_zone_resurrection_error 5. Build and debug If you set up everything correctly, then Xcode's debugger will launch qlmanage, which will load your plugin, and trigger the problem, and cause the debugger to break. Good luck; debugging plugins isn't always easy. Nick Zitzmann http://www.chronosnet.com/ ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Quick Looking big files crash
On 3 May 2011, at 4:03 PM, Brad Stone wrote: I have a symbolic breakpoint set and it stops on auto_refcount_underflow_error, even the small files. If I continue the doc shows in QL. Presumably, a few stack frames up, there will be a call to CFRelease() which is causing the underflow (what would be an over-released zombie in a non-GC app). The first thing I'd look for is using CFRelease() when you should call -release (or vise versa, and the same for retain): code written pre-GC would treat those as equivalent, but in a GC or optional-GC world they need to be treated as operating on distinct kinds of refcount. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Quick Looking big files crash
On May 3, 2011, at 5:27 PM, Brad Stone wrote: My app stores an NSURL to a file. All I'm doing is acting as the data source and delegate for QL and giving it access to an NSArray with the URL. I'm not creating a plugin (or am I misunderstanding you). No, when you said QuickLook I thought QuickLook plugin, sorry. Does setting a symbolic breakpoint on auto_zone_resurrection_error get any bites? Nick Zitzmann http://www.chronosnet.com/ ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com
Re: Quick Looking big files crash
Interesting, OK, now remember, t this is new to me. To begin the QL panel I run this required method: - (void)beginPreviewPanelControl:(QLPreviewPanel *)panel { previewPanel = [panel retain]; panel.delegate = self; panel.dataSource = self; } and then it ends with - (void)endPreviewPanelControl:(QLPreviewPanel *)panel { [previewPanel release]; previewPanel = nil; } Where QLPreviewPanel* previewPanel; is defined in my header file. The crash happens after the begin and never gets to the end. I see here http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/GarbageCollection/Articles/gcCoreFoundation.html that to ensure the longevity of Objective-C objects, you should use CFRetain instead of retain. I haven't been able to find the correct syntax to replace the retain/release with CFRetain/CFRelease On May 3, 2011, at 7:51 PM, Wim Lewis wrote: On 3 May 2011, at 4:03 PM, Brad Stone wrote: I have a symbolic breakpoint set and it stops on auto_refcount_underflow_error, even the small files. If I continue the doc shows in QL. Presumably, a few stack frames up, there will be a call to CFRelease() which is causing the underflow (what would be an over-released zombie in a non-GC app). The first thing I'd look for is using CFRelease() when you should call -release (or vise versa, and the same for retain): code written pre-GC would treat those as equivalent, but in a GC or optional-GC world they need to be treated as operating on distinct kinds of refcount. ___ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com