pthreads + dmalloc

Michal Krause michal na krause.cz
Čtvrtek Leden 27 12:23:16 CET 2000


Zdravim,

zda se, ze jsem vsechny chyby zpusobujici nefunkcnost te moji MT
aplikace vychytal (diky vsem za podporu :), ale problemy tim jeste
nekonci. Nekde je tam totiz nejaky leak. Nedari se mi ho ale najit
(vsechen novy kod pouziva pouze jeden jediny realloc v cyklu a dva
mallocy jednorazove a zbytek tvori knihovny, ktere pouziva uz dlouhou
dobu jiny muj daemon a ten nealeakuje), takze jsem sahnul k pouziti
dmallocu a bohuzel jsem narazil. Nemohu program donutit (a to ani na
jednoduchem prikladu viz nize), aby zapisoval do logfile neuvolnene
bloky, pouze pokud pouziju nejakou hlubsi uroven logovani, ziskam seznam
vsech (m|c|re)allocu() a free(). Je sice pravda, ze by se ten log dal
zpracovat nejakym skriptem, ale nejdrive bych rad zjistil, jestli jsem
neco neopomenul.

A ted slibeny jednoduchy prikladek:

#include <pthread.h>
#include <stdio.h>

#include <dmalloc.h>

void *writer(void *arg)
{
        char    *x;
        printf("%d\n", (int)arg);
        switch ((int)arg)
        {
                case    0:
                        x = malloc(1000);
                        break;
                case    1:
                        x = malloc(2000);
                        break;
                case    2:
                        x = malloc(500);
                        break;
        }
//      free(x);
        pthread_exit(NULL);
}

int main()
{
        pthread_t       writer_id1, writer_id2, writer_id3;

        pthread_create(&writer_id1, NULL, writer, (void *)0);
        pthread_create(&writer_id2, NULL, writer, (void *)1);
        pthread_create(&writer_id3, NULL, writer, (void *)2);

        pthread_exit(NULL);
        return 0;
}

Patricne promenne prostredi nastavene mam, linkuji spravnou knihovnu
(libdmallocth), pokud uplne stejny program pouziju nethreadove (tedy jenom
trikrat zavolam funkci writer()), ziskam v pohode seznam neuvolnenych bloku
vcetne jejich umisteni ve zdrojaku.

Nema nekdo s dmallocem+pthreads nejake vetsi zkusenosti? Pokud bude
opravdu nutne zpracovavat ten log, nemel by na to uz nekdo neco
hotoveho?

Diky za kazdy tip...

S pozdravem
--
Michal Krause                                                      /\
ICQ: 7665279            Informace (nejenom) ze sveta Linuxu     /\/  \
email: mike na navrcholu.cz ______ http://www.root.cz/ ______ NAVRCHOLU.cz

Co napsat do signatury, aby to nikoho nepohorsilo? Snad jedine nejakou
obecne znamou pravdu. Doufam, ze vsichni vite, ze tucnak je bylozrava ryba. 


Další informace o konferenci Linux