4
votes

I am using ARC in my application with core data and threading etc, after doing all that hard work to get core data work with threading without any crashes now I am getting a new crash with the reason-

double free*** set a breakpoint in malloc_error_break to debug

How am I supposed to handle this? I have no control on the objects' retain counts.

2
This has nothing to do with the objects' retain counts. This message is one of glibc's built-in error messages. This particular one points out that you've explicitly used free() on the same memory area twice.user529758
No I haven't done anything like free() or malloc().Yogesh Maheshwari
Then could you please provide a little more debugging information? Like some more error messages, maybe youl should compile with -g and do a backtrace in gdb etc. else we can't really help...user529758
Where is your app stoping when you set the recommended breakpoint? That is a good area of the code to examine more closely.Mark
@H2CO3 How do I get the backtrace as you were saying..Yogesh Maheshwari

2 Answers

8
votes
  1. Enable Zombie
  2. Follow this link : http://iphone2020.wordpress.com/2012/02/23/capturing-exceptions-while-debugging/. This will suggest exact point of crash.
1
votes

If you want to know who destroyed the allocation:

Simply breaking as the message suggests will give you clues.

If you want to know who created the allocation:

Although you can also do this from the command line using malloc stack logging, it may be a gentler introduction to use Instruments. Run the program with allocation recording enabled in instruments, reproduce the issue, then look up the address in instruments of the double free -- it will show you the backtrace of the allocation's creation. then figure why that allocation was freed twice.