An FMR message indicates that the program is about to read from memory that has been freed. An FMR message can also indicate that you referenced memory from a heap that has not been allocated.
This message can occur when you:
§ Have a dangling pointer to a block of memory that has already been freed (caused by retaining the pointer too long or freeing the memory too soon)
§ Index far off the end of a valid block that accordingly reads another memory block earlier marked as free
§ Use a completely random pointer which happens to fall within a heap, but not within or near a currently allocated block in that heap
Notes:
§ A large deferred free queue length and threshold increases the chances of catching dangling pointer accesses long after the block has been freed and catching dangling pointer accesses to huge blocks of memory. This provides better error detection for FMR and Free Memory Write (FMW) messages. A smaller deferred free queue length and threshold limits the amount of memory on the deferred free queue, taking up less memory at run time but providing a lower level of error detection.
§ Purify cannot detect FMR messages in modules instrumented with minimal instrumentation, unless they are caused by calls to Windows APIs.
(C) Copyright IBM Corporation 1992, 2010.