iOS libsystem_c.dylib strdup memory leak NSZombie not working

neowinston picture neowinston · May 5, 2011 · Viewed 12k times · Source

Please help me track down an iOS memory leak. Thanks!

I'm using xCode 4.0.1 and I tried to activate NSZombie to track a memory leak, but it doesn't seems to work as before, with xCode 3.x

I can't find out where the memory leak is coming from, as Instruments points this out:

Leaked Object -> GeneralBlock-32 Address -> 0x4c8600 Size -> 32 Bytes Responsible Library -> libsystem_c.dylib Responsible Frame/Caller -> strup

At this point I don't know If I'm using Instruments with NSZombie the right way with xCode 4, as it doesn't show the NSZombie option when I click "i" for more information, under the left option Leaks.

OBSERVATION: My iPhone application plays a live stream mms/wma and also wma áudio files with a finite amount of time. The leak happens only with a finite wma file, but runs perfectly when I'm playing from a streamed source, with no ending time.

Answer

bbum picture bbum · May 5, 2011

First, that is a malloc block, not an object. Zombies won't work (and would never have worked in prior versions either).

How many times does that leak happen? Once? Don't worry about it. Once per stream? file a bug -- that isn't in your code from what you have posted so far (unless your code is calling strdup, which is certainly possible but atypical in most iOS apps that aren't making heavy use of third party libraries... are you?)

In any case, unless it is leaking 100s and 100s of 32 byte allocations across the runtime of your app, don't worry about it (but please do file a bug).

As Valkio said, you can grab the stack trace of the allocation from gdb (or from Instruments) directly.