On Wed, Aug 13, 2008 at 6:56 AM, Ken Ferry <[EMAIL PROTECTED]> wrote: > What does the stack look like when you break on > auto_refcount_underflow_error? After you break, you can do "call > (void)CFShow(<number goes here>)" with the number printed out in the > log message. That should hopefully give you the type of the object, > which might help you determine where the issue is.
Actually, I don't know how to "break on something". Would you please tell me? Also, I have always been wondering how do I set compiler flags in XCode... > What do you mean when you say that only one object causes the problem? > If that means you know what object it is, then can you show the code > where you work with it? I mean that when the function gets first executed in debugger, I record on paper all the hex addresses of the few objects I create, and then when the error is issued later on, I check the address and see what is the object by its address. Here's the code. It is a voyeur-like pdf parser. CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)pdfData); if (provider != nil) { CFMakeCollectable(provider); CGPDFDocumentRef document = CGPDFDocumentCreateWithProvider(provider); if (document != nil) { CFMakeCollectable(document); size_t pageCount = CGPDFDocumentGetNumberOfPages(document); if (pageCount > 0) { CGPDFPageRef page = CGPDFDocumentGetPage(document, 1); if (page != nil) { // *******TODO: the page object causes the reference count underflow CFMakeCollectable(page); CGPDFContentStreamRef contentStream = CGPDFContentStreamCreateWithPage(page); if (contentStream != nil) { CFMakeCollectable(contentStream); CGPDFOperatorTableRef operatorTable = CGPDFOperatorTableCreate(); if (operatorTable != nil) { CFMakeCollectable(operatorTable); // the op_xxx are just functions defined in the .m file CGPDFOperatorTableSetCallback(operatorTable, "q", &op_q); CGPDFOperatorTableSetCallback(operatorTable, "Q", &op_Q); CGPDFOperatorTableSetCallback(operatorTable, "cm", &op_cm); CGPDFScannerRef scanner = CGPDFScannerCreate(stream, operatorTable, self); if (scanner != nil) { CFMakeCollectable(scanner); CGPDFScannerScan(scanner); } } . } - Hide quoted text - } } } } > -Ken > > On Tue, Aug 12, 2008 at 8:46 PM, Oleg Krupnov <[EMAIL PROTECTED]> wrote: >> I have added a call to CFMakeCollectable each time after I create a CF >> object like this >> >> CFSomeTypeRef a = CFCreateSomeType(); >> if (a != nil) >> { >> CFMakeCollectable(a); >> } >> >> But I keep getting this runtime message in the console: >> malloc: reference count underflow for 0x10773c0, break on >> auto_refcount_underflow_error to debug. >> >> All CF objects I create are local vars in scope of one single >> function, no instance or global vars. I create several CF objects, >> some of them are used as arguments for other functions. The error is >> issued only for one of the CF objects I create, the other work fine. >> >> What can be the problem? >> >> On Mon, Aug 11, 2008 at 3:25 PM, Antonio Nunes <[EMAIL PROTECTED]> wrote: >>> On 11 Aug 2008, at 13:14, Antonio Nunes wrote: >>> >>>>> Will it cause a memory leak if I treat the Quartz object in the same >>>>> way as I do to all my NSObject descendants, i.e. no retains and rely >>>>> only on garbage collection? >>>> >>>> You either take care of the object's life time manually as you would in a >>>> non-garbage collected environment, or you explicitly move it into the realm >>>> of the garbage collector. Lookup "CFMakeCollectable" and >>>> "NSMakeCollectable" >>>> in the docs. >>> >>> I should add: read the "Memory Management Semantics" in "Using Core >>> Foundation with Garbage Collection" in the "Garbage Collection Programming >>> Guide", which has a thorough explanation of how to handle CF objects under >>> GC. >>> >>> António >>> >>> ---------------------------------------------------- >>> It isn't so important to do great things, >>> as to do what you do with great love. >>> ---------------------------------------------------- >>> >>> >>> >>> >> _______________________________________________ >> >> 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/kenferry%40gmail.com >> >> This email sent to [EMAIL PROTECTED] >> > _______________________________________________ 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 [EMAIL PROTECTED]