IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 639


Ignore:
Timestamp:
May 11, 2004, 10:11:17 AM (22 years ago)
Author:
desonia
Message:

fixed memory corruption detection system.

Location:
trunk/psLib/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/sys/psMemory.c

    r636 r639  
    88 *  @author Robert Lupton, Princeton University
    99 *
    10  *  @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
    11  *  @date $Date: 2004-05-11 01:57:54 $
     10 *  @version $Revision: 1.17 $ $Name: not supported by cvs2svn $
     11 *  @date $Date: 2004-05-11 20:11:17 $
    1212 *
    1313 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    6262                                      const char *file, int lineno)
    6363{
    64     checkMemBlock(ptr, __func__);
    65 
    6664    if (ptr->refCounter <= 0) {
    6765        psError(__func__,
     
    10098long p_psMemFreeID = 0;   // notify user this block is freed
    10199
    102 long psMemSetAllocateID(long id) // set p_psMemAllocateID to id
     100long psMemAllocateCallbackSetID(long id) // set p_psMemAllocateID to id
    103101{
    104102    long old = p_psMemAllocateID;
     
    108106}
    109107
    110 long psMemSetFreeID(long id)  // set p_psMemFreeID to id
     108long psMemFreeCallbackSetID(long id)  // set p_psMemFreeID to id
    111109{
    112110    long old = p_psMemFreeID;
     
    155153}
    156154
    157 psMemFreeCallback psMemFreeSetCallback(psMemFreeCallback func)
     155psMemFreeCallback psMemFreeCallbackSet(psMemFreeCallback func)
    158156{
    159157    psMemFreeCallback old = memFreeCallback;
     
    201199
    202200    if (m->startblock != P_PS_MEMMAGIC || m->endblock != P_PS_MEMMAGIC) {
    203         psError(funcName, "psMemCheckCorruption: memory block %ld is corrupted (%x %x)",
     201        psError(funcName, "psMemCheckCorruption: memory block %ld is corrupted (%p %p)",
    204202                m->id,m->startblock,m->endblock);
    205203        return(1);
     
    310308        pthread_mutex_unlock(&memBlockListMutex);
    311309
     310        //  Did the user ask to be informed about this allocation?
     311        if (ptr->id == p_psMemAllocateID) {
     312            p_psMemAllocateID += memAllocateCallback(ptr);
     313        }
     314
    312315        return ptr + 1;   // usr memory
    313316    }
     
    366369    int nleak = 0;
    367370    int j = 0;
     371    psMemBlock* topBlock = lastMemBlockAllocated;
    368372
    369373    pthread_mutex_lock(&memBlockListMutex);
    370374
    371     for (psMemBlock* iter = lastMemBlockAllocated; iter != NULL; iter=iter->nextBlock)
     375    for (psMemBlock* iter = topBlock; iter != NULL; iter=iter->nextBlock)
    372376    {
    373377        if ( (iter->refCounter > 0) && (iter->id >= id0) ) {
     
    391395    }
    392396
    393     p_psFree(*arr,__FILE__, __LINE__);  // Don't generate a memory leak!
    394 
    395397    *arr = p_psAlloc(nleak*sizeof(psMemBlock), __FILE__, __LINE__);
    396 
    397398    pthread_mutex_lock(&memBlockListMutex);
    398399
    399     for (psMemBlock* iter = lastMemBlockAllocated; iter != NULL; iter=iter->nextBlock)
     400    for (psMemBlock* iter = topBlock; iter != NULL; iter=iter->nextBlock)
    400401    {
    401402        if ( (iter->refCounter > 0) && (iter->id >= id0) ) {
  • trunk/psLib/src/sys/psMemory.h

    r541 r639  
    1212 *  @author Robert Lupton, Princeton University
    1313 *
    14  *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
    15  *  @date $Date: 2004-04-28 02:51:39 $
     14 *  @version $Revision: 1.10 $ $Name: not supported by cvs2svn $
     15 *  @date $Date: 2004-05-11 20:11:17 $
    1616 *
    1717 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    135135
    136136/// set p_psMemAllocateID to id
    137 long psMemAllocateIDSet(
     137long psMemAllocateCallbackSetID(
    138138    long id                         ///< ID to set
    139139);
    140140
    141141/// set p_psMemFreeID to id
    142 long psMemFreeIDSet(
     142long psMemFreeCallbackSetID(
    143143    long id                         ///< ID to set
    144144);
  • trunk/psLib/src/sysUtils/psMemory.c

    r636 r639  
    88 *  @author Robert Lupton, Princeton University
    99 *
    10  *  @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
    11  *  @date $Date: 2004-05-11 01:57:54 $
     10 *  @version $Revision: 1.17 $ $Name: not supported by cvs2svn $
     11 *  @date $Date: 2004-05-11 20:11:17 $
    1212 *
    1313 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    6262                                      const char *file, int lineno)
    6363{
    64     checkMemBlock(ptr, __func__);
    65 
    6664    if (ptr->refCounter <= 0) {
    6765        psError(__func__,
     
    10098long p_psMemFreeID = 0;   // notify user this block is freed
    10199
    102 long psMemSetAllocateID(long id) // set p_psMemAllocateID to id
     100long psMemAllocateCallbackSetID(long id) // set p_psMemAllocateID to id
    103101{
    104102    long old = p_psMemAllocateID;
     
    108106}
    109107
    110 long psMemSetFreeID(long id)  // set p_psMemFreeID to id
     108long psMemFreeCallbackSetID(long id)  // set p_psMemFreeID to id
    111109{
    112110    long old = p_psMemFreeID;
     
    155153}
    156154
    157 psMemFreeCallback psMemFreeSetCallback(psMemFreeCallback func)
     155psMemFreeCallback psMemFreeCallbackSet(psMemFreeCallback func)
    158156{
    159157    psMemFreeCallback old = memFreeCallback;
     
    201199
    202200    if (m->startblock != P_PS_MEMMAGIC || m->endblock != P_PS_MEMMAGIC) {
    203         psError(funcName, "psMemCheckCorruption: memory block %ld is corrupted (%x %x)",
     201        psError(funcName, "psMemCheckCorruption: memory block %ld is corrupted (%p %p)",
    204202                m->id,m->startblock,m->endblock);
    205203        return(1);
     
    310308        pthread_mutex_unlock(&memBlockListMutex);
    311309
     310        //  Did the user ask to be informed about this allocation?
     311        if (ptr->id == p_psMemAllocateID) {
     312            p_psMemAllocateID += memAllocateCallback(ptr);
     313        }
     314
    312315        return ptr + 1;   // usr memory
    313316    }
     
    366369    int nleak = 0;
    367370    int j = 0;
     371    psMemBlock* topBlock = lastMemBlockAllocated;
    368372
    369373    pthread_mutex_lock(&memBlockListMutex);
    370374
    371     for (psMemBlock* iter = lastMemBlockAllocated; iter != NULL; iter=iter->nextBlock)
     375    for (psMemBlock* iter = topBlock; iter != NULL; iter=iter->nextBlock)
    372376    {
    373377        if ( (iter->refCounter > 0) && (iter->id >= id0) ) {
     
    391395    }
    392396
    393     p_psFree(*arr,__FILE__, __LINE__);  // Don't generate a memory leak!
    394 
    395397    *arr = p_psAlloc(nleak*sizeof(psMemBlock), __FILE__, __LINE__);
    396 
    397398    pthread_mutex_lock(&memBlockListMutex);
    398399
    399     for (psMemBlock* iter = lastMemBlockAllocated; iter != NULL; iter=iter->nextBlock)
     400    for (psMemBlock* iter = topBlock; iter != NULL; iter=iter->nextBlock)
    400401    {
    401402        if ( (iter->refCounter > 0) && (iter->id >= id0) ) {
  • trunk/psLib/src/sysUtils/psMemory.h

    r541 r639  
    1212 *  @author Robert Lupton, Princeton University
    1313 *
    14  *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
    15  *  @date $Date: 2004-04-28 02:51:39 $
     14 *  @version $Revision: 1.10 $ $Name: not supported by cvs2svn $
     15 *  @date $Date: 2004-05-11 20:11:17 $
    1616 *
    1717 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    135135
    136136/// set p_psMemAllocateID to id
    137 long psMemAllocateIDSet(
     137long psMemAllocateCallbackSetID(
    138138    long id                         ///< ID to set
    139139);
    140140
    141141/// set p_psMemFreeID to id
    142 long psMemFreeIDSet(
     142long psMemFreeCallbackSetID(
    143143    long id                         ///< ID to set
    144144);
Note: See TracChangeset for help on using the changeset viewer.