oops... How do I enable Guard Malloc in Xcode 4?

J.


On 2011-03-15, at 6:45 PM, Greg Parker wrote:

> On Mar 15, 2011, at 4:10 PM, James Maxwell wrote:
>> I'm getting a crash in initWithCoder, which seems related to decoding a 
>> property called "value", which is of type id. Sometimes this object is an 
>> NSString, sometimes it's an NSNumber, and sometimes it's an NSArray. The 
>> crash only occurs in cases where "value" is an NSArray. The last few lines 
>> in my backtrace are:
>> 
>> #0  0x963c4206 in szone_malloc_should_clear ()
>> #1  0x963c41a8 in malloc_zone_malloc ()
>> #2  0x94920a13 in _CFRuntimeCreateInstance ()
>> #3  0x94943482 in CFNumberCreate ()
>> #4  0x949586f2 in __CFBinaryPlistCreateObject2 ()
>> #5  0x94985fe0 in __CFBinaryPlistCreateObject ()
>> #6  0x9823eb11 in _decodeObjectBinary ()
>> #7  0x98240314 in -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] ()
>> #8  0x98240981 in -[NSArray(NSArray) initWithCoder:] ()
>> #9  0x9823f508 in _decodeObjectBinary ()
>> #10 0x9823e800 in _decodeObject ()
>> #11 0x000cdf05 in -[CbCM_Node initWithCoder:] (self=0x4098770, 
>> _cmd=0x9433805c, aDecoder=0x410f1c0) at 
>> /Volumes/Wheet-Docs/jamesmaxwell/Documents/xcode/rubato/ManuScore+MusiCOG/ManuScore
>>  Test Build/ManuScore/CbCM_Node.m:573
>> 
>> From this, I'm guessing that the problem is happening with one of the 
>> members of the "value" array. Does that seem right? (I should mention, 
>> though, that the trace isn't always the same...)
>> I am retaining "value" when I decode it, so it's not a simple memory bug. I 
>> have also run the code with Zombies (NSZombieEnabled=YES), which doesn't 
>> indicate any Zombied objects. Finally, the analyzer sees no memory errors 
>> (there are a number of "dead stores" - mostly unused variables - but these 
>> aren't likely to be real problems, are they?), so I'm stumped. I'm running 
>> Xcode 4, btw.
> 
> A crash inside malloc generally means that there's a memory error elsewhere 
> that corrupted malloc's data structures. (Actual bugs in malloc are rare.) 
> malloc may store information before or after each allocation, and inside 
> freed allocations.
> 
> The usual bugs are:
> * writing data before or after the bounds of an allocation. Usually this 
> comes from bounds errors in C arrays.
> * writing data into an allocation after freeing it. 
> 
> NSZombie catches the latter for Objective-C objects. But if the problem is a 
> non-object allocation, or a bounds error, then NSZombie won't help. 
> 
> The next tool to try is Guard Malloc. It catches both of the above errors for 
> any malloc allocation. On the down side, it is slow and memory intensive, but 
> if this -initWithCoder: is running early in app launch then you won't have 
> any trouble with it.
> 
> http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/guardmalloc.3.html
> 
> 
> -- 
> Greg Parker     gpar...@apple.com     Runtime Wrangler
> 
> 

James B Maxwell
Composer/Doctoral Student
School for the Contemporary Arts (SCA)
School for Interactive Arts + Technology (SIAT)
Simon Fraser University
jbmaxw...@rubato-music.com
jbmax...@sfu.ca

_______________________________________________

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

Reply via email to