IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 32189


Ignore:
Timestamp:
Aug 24, 2011, 3:12:34 PM (15 years ago)
Author:
watersc1
Message:

Update to fix ppMops memory leak bug.

Location:
tags/ipp-20110622
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • tags/ipp-20110622/ppTranslate/src

  • tags/ipp-20110622/ppTranslate/src/ppMops.c

    r29565 r32189  
    6565    psFree(merged);
    6666    psFree(args);
     67    psFree(detections);
    6768
    6869    psLibFinalize();
     70
     71    fprintf (stderr, "found %d leaks at %s\n",
     72        psMemCheckLeaks2 (0,
     73                NULL, stdout, false, 500), "ppMops");
    6974
    7075    return PS_EXIT_SUCCESS;
  • tags/ipp-20110622/ppTranslate/src/ppMopsArguments.c

    r29567 r32189  
    123123    psTrace("ppMops.args", 1, "Done parsing command-line arguments\n");
    124124
     125psFree(arguments);
    125126    return args;
    126127}
  • tags/ipp-20110622/ppTranslate/src/ppMopsGetSkyChipPsfVersion.c

    r29565 r32189  
    99          "EXTTYPE value: [%s]\n", version);
    1010  if (strcmp(version, "PS1_DV1") == 0) {
     11    psFree(headerSkyChip);
    1112    return 1;
    1213  } else if (strcmp(version, "PS1_DV2") == 0) {
     14    psFree(headerSkyChip);
    1315    return 2;
    1416  }
    1517  psWarning("Unsupported EXTTYPE in SkyChip.psf table: [%s]", version);
     18  psFree(headerSkyChip);
    1619  return 0;
    1720}
  • tags/ipp-20110622/ppTranslate/src/ppMopsMerge.c

    r30656 r32189  
    3636    ppMopsDetections *merged = NULL;    // Merged list
    3737    int num = 0;                                                         // Number of merged files
     38    psVector *coords = psVectorAlloc(2, PS_TYPE_F64); // Coordinates of interest
    3839    for (int i = 0; i < detections->n; i++) {
    3940        ppMopsDetections *det = detections->data[i]; // Detections of interest
     
    110111        }
    111112
    112         psVector *coords = psVectorAlloc(2, PS_TYPE_F64); // Coordinates of interest
    113113        for (int j = 0; j < det->num; j++) {
    114114            coords->data.F64[0] = det->ra->data.F64[j];
     
    162162        ppMopsDetectionsPurge(merged);
    163163    }
     164    psFree(coords);
    164165
    165166    if (num == 0) {
  • tags/ipp-20110622/ppTranslate/src/ppTranslateVersion.c

    r28043 r32189  
    7777    psFree(version);
    7878    psFree(source);
     79    psFree(time);
    7980
    8081    return true;
  • tags/ipp-20110622/psLib/src/sys/psMemory.c

    r31660 r32189  
    889889                      psMemBlock ***array,
    890890                      FILE * fd,
    891                       bool persistence)
     891                      bool persistence,
     892                      int maxDisplayedLeaksCount          ///< List at most maxDisplayedLeaksCount (-1 for all)
     893                  )
    892894{
    893895    psS32 nleak = 0;
     
    896898
    897899    // XXX move this elsewhere?
    898     fprintf (stderr, "set %d locks, cleared %d locks, retry on %d locks (memID %ld)\n", setLock, clearLock, retryLock, memid);
     900    if (fd != NULL) {
     901      fprintf (fd, "set %d locks, cleared %d locks, retry on %d locks (memID %ld)\n", setLock, clearLock, retryLock, memid);
     902    }
    899903
    900904    // make sure that the memblock list is free of corruption before we crawl
     
    915919    for (memBlock = topBlock; memBlock->nextBlock != NULL; memBlock = memBlock->nextBlock) { }
    916920
     921    int maxToDisplay = maxDisplayedLeaksCount;
     922    psMemBlock *memBlockBackup = memBlock;
     923    if (maxToDisplay == -1 ) {
     924      for (; memBlock != NULL; memBlock = memBlock->previousBlock) {
     925        if ( (memBlock->refCounter > 0) &&
     926             ( (persistence) || (!persistence && !memBlock->persistent) ) &&
     927             (memBlock->id >= id0)) {
     928          nleak++;
     929        }
     930      }
     931      maxToDisplay=nleak;
     932    }
     933    if (fd != NULL) {
     934      fprintf(fd, "Number of leaks to display: %d\n", maxToDisplay);
     935    }
     936    memBlock = memBlockBackup;
     937
     938    nleak=0;
    917939    // iterate through the block list starting with the oldest block
    918940    for (; memBlock != NULL; memBlock = memBlock->previousBlock) {
     
    924946
    925947            // only print a max of 500 leaks (make this an argument)
    926             if ((nleak < 500) && (fd != NULL)) {
     948            if ( (nleak <= maxToDisplay) && (fd != NULL) ) {
    927949                if (nleak == 1) {
    928950                    fprintf(fd, "# func at (file:line)  ID: X  Ref: X\n");
  • tags/ipp-20110622/psLib/src/sys/psMemory.h

    r31660 r32189  
    367367    bool persistence                   ///< make check across all object even persistent ones
    368368);
     369int psMemCheckLeaks2(
     370    psMemId id0,                       ///< don't list blocks with id < id0
     371    psMemBlock ***array,               ///< pointer to array of pointers to leaked blocks, or NULL
     372    FILE * fd,                         ///< print list of leaks to fd (or NULL)
     373    bool persistence,                  ///< make check across all object even persistent ones
     374    int maxDisplayedLeaksCount         ///< List at most maxDisplayedLeaksCount (-1 for all)
     375);
    369376#else // ifdef DOXYGEN
    370377int p_psMemCheckLeaks(
     
    375382    psMemBlock ***array,                ///< pointer to array of pointers to leaked blocks, or NULL
    376383    FILE * fd,                          ///< print list of leaks to fd (or NULL)
    377     bool persistence                    ///< make check across all object even persistent ones
    378 );
    379 #ifndef SWIG
     384    bool persistence,                   ///< make check across all object even persistent ones
     385    int maxDisplayedLeaksCount          ///< List at most maxDisplayedLeaksCount (-1 for all)
     386);
     387#ifndef SWIG
     388#define psMemCheckLeaks2(id0, array, fd, persistence, maxDisplayedLeaksCount) \
     389      p_psMemCheckLeaks(__FILE__, __LINE__, __func__, id0, array, fd, persistence, maxDisplayedLeaksCount)
    380390#define psMemCheckLeaks(id0, array, fd, persistence) \
    381       p_psMemCheckLeaks(__FILE__, __LINE__, __func__, id0, array, fd, persistence)
     391      p_psMemCheckLeaks(__FILE__, __LINE__, __func__, id0, array, fd, persistence, 500)
    382392#endif // ifndef SWIG
    383393#endif // ifdef DOXYGEN
Note: See TracChangeset for help on using the changeset viewer.