pthread free() weirdness with cxx

From: Michael Haller <Michael.Haller_at_uk.lionbioscience.com>
Date: Thu, 08 Mar 2001 10:54:30 +0000

Hi,

System is OSF1 V5.1 732 alpha.
Compaq C++ V6.2-024 for Compaq Tru64 UNIX V5.1 (Rev. 732)

There seems to be a strange problem with C++ programs
compiled with the -pthread flag.

Example program:

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 24795
#define MALSIZE1 32
#define MALSIZE2 20

int main() {
    char *blah, *blah2;
    char *index[MAXSIZE], *index2[MAXSIZE];

    for (int k=0; k<MAXSIZE; k++) {
        static int bla;
        blah = new char[MALSIZE1];
        sprintf (blah, "bla%d", ++bla);
        index[k] = (char*) blah;
        blah2 = new char[MALSIZE1];
        sprintf (blah2, "bla%d", ++bla);
        index2[k] = (char*) blah2;
    }
    printf("blah\n");

    for (int k=0; k<MAXSIZE; k++) {
        delete [] index[k];
    }
    printf("blah 1\n");

    for (int k=0; k<MAXSIZE; k++) {
        delete [] index2[k];
    }
    printf("blah 2\n");
}


Runs very fast when compiled:

    cxx t.cc

and very slow (5 seconds) if compiled:

    cxx t.cc -pthread

Further tests....

1. If I move the second delete statement into the first
delete loop the execution speed is effectively the same with or
without the -pthread flag.

2. If I alloc MALSIZE2 into index2 and MALSIZE1 into index1
excution speed is effectively the same with or without the
-pthread flag...irrespective of where index2 is deleted.

Has this problem been seen before? Can anybody reproduce
it locally? Is there a solution?

Many thanks for any help or advice,

        - Michael
Received on Thu Mar 08 2001 - 10:56:12 NZDT

This archive was generated by hypermail 2.4.0 : Wed Nov 08 2023 - 11:53:41 NZDT