Jules
Jules

Reputation: 7776

Obj-c, incorrect checksum for freed object - object was probably modified after being freed

I'm getting this error

malloc: * * * error for object 0x8a591d4: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
No memory available to program now: unsafe to call malloc
No memory available to program now: unsafe to call malloc

It comes from this line

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info" 
       ofType:@"plist"];
NSData *plistData = [NSData dataWithContentsOfFile:plistPath];
NSDictionary *loadedPlist = 
[NSPropertyListSerialization  propertyListFromData:plistData 
       mutabilityOption:0 format:NULL errorDescription:NULL]; <<< this line

The value of plistData is set to Summary Unavailable

I'm not sure where to start ?

EDIT - added more code

Upvotes: 0

Views: 4931

Answers (3)

David Dunham
David Dunham

Reputation: 8329

I'm going to add another answer: it's also possible that you have ALREADY hosed the heap, and you're failing on propertyListFromData: just because it does a lot of allocations and happens to hit the bad spot. So edit your scheme in Xcode, and make sure you have all of the Memory Management items checked (in the Diagnostics tab of the Run task).

Upvotes: 5

Chris Wagner
Chris Wagner

Reputation: 21013

How is Info.plist being stored? Is it a standard plist/xml file? Would the following solve the problem you are trying to solve, and possibly prevent this issue from happening?

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info" 
       ofType:@"plist"];
NSDictionary *loadedPlist = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

Or if you want an auto-released object...

NSDictionary *loadedPlist = [NSDictionary dictionaryWithContentsOfFile:plistPath];

Upvotes: 0

David Dunham
David Dunham

Reputation: 8329

Have you set a breakpoint in malloc_error_break? This at least gives you a backtrace and you might see something of note. If nothing else, you could try po plistData from the GDB console.

BTW, while it may not help, I'd think dictionaryWithContentsOfFile: would be simpler.

Upvotes: 0

Related Questions