Boost logo

Boost Users :

From: David Walthall (walthall_at_[hidden])
Date: 2006-11-01 12:02:49


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;
}


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net