URL: https://linuxfr.org/forums/programmation-c--2/posts/malloc_hook-et-multithread Title: malloc_hook et multithread Authors: Pierre Mallard Date: 2006年02月15日T16:28:39+01:00 Tags: Score: 0 Bonjour, J'ai un probleme pour utiliser malloc hook en multithread. Je veux simplement tracer les malloc et les free d'un soft. Mon probleme est que dans le corps de mes fonctions malloc et free, je fais appel au vrai malloc et au vrai free : Par exemple : 1 void * my_malloc_hook(size_t size,void * ret_ptr){ 2 __malloc_hook = old_malloc_hook; 3 void * ptr = malloc(size); 4 __malloc_hook = &my_malloc_hook; 5 return ptr; 6 } old_malloc_hook étant la valeur de __malloc_hook avant de l'avoir changer pour pointer su my_malloc_hook. Ceci marche tres bien en monothread, mais en multi, si malloc est appele par un thread 2 juste apres que un thread 1 est appelé malloc et restoré l'ancien hook (line 2), le thread 2 va directement appelé le malloc_hook de base et pas le mien ... J'ai essayé d'appeler __libc_malloc à la place de malloc dans my_malloc_hook mais le soft bloque sur cet appel. Je ne sais pas comment appelé explicitement le old_malloc_hook sans restaurer __malloc_hook à cause du deuxième paramètre return_ptr, ne sachant pas comment récupérer cette adresse (adresse de la ligne 4). Bref un petit coup de main serait bien venu ... Merci d'avance