
Aubrey, Jason wrote:
Hi,
When I run the following program it runs successfully but throws an exception during shutdown. I don't know why, but it seems that the call to boost::filesystem::file_size() is corrupting memory somehow. This example only shows the call to file_size() but I think I've seen similar trouble with other calls within boost::filesystem.
Am I doing something wrong here or is this a bug?
Regards, Jason Aubrey
Jason, When something like this happens, I have a function that checks all of the heap for corruption errors. If you place enough calls to this function, you can use it to find where the corruption happens. David #include <malloc.h> #include <stdlib.h> // HeapCheckWin32() // ---------------- // Sends an output to the TRACE() function with the // status of the heap. (Actually, it seems to hit // an assert inside of _heapwalk when there is an error.) // Returns 0 for ok, non-zero for error. int HeapCheckWin32() { _HEAPINFO hinfo; int heapstatus; int retStatus = 1; // start with error status hinfo._pentry = NULL; do { heapstatus = _heapwalk(&hinfo); } while(heapstatus == _HEAPOK); switch(heapstatus) { case _HEAPEMPTY: TRACE("OK - empty heap\n"); retStatus = 0; break; case _HEAPEND: TRACE("OK - end of heap\n"); retStatus = 0; break; case _HEAPBADPTR: TRACE("ERROR - bad pointer to heap\n"); retStatus = 1; break; case _HEAPBADBEGIN: TRACE("ERROR - bad start of heap\n"); retStatus = 1; break; case _HEAPBADNODE: TRACE("ERROR - bad node in heap\n"); retStatus = 1; break; default: retStatus = 2; break; } return retStatus; }