$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Aubrey, Jason (jason.aubrey_at_[hidden])
Date: 2006-11-01 12:18:55
Thanks David.  I'll probably be tied up on other issues for 1-3 days but
I will give this a try when I can. 
Regards,
Jason
-----Original Message-----
From: boost-users-bounces_at_[hidden]
[mailto:boost-users-bounces_at_[hidden]] On Behalf Of David Walthall
Sent: Wednesday, November 01, 2006 11:03 AM
To: boost-users_at_[hidden]
Subject: Re: [Boost-users] boost filesystem
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 mailing list
Boost-users_at_[hidden]
http://listarchives.boost.org/mailman/listinfo.cgi/boost-users