URL: https://linuxfr.org/forums/programmation-c--2/posts/petit-probleme-avec-gdb-et-la-structure-pthread_mutex_t Title: petit probleme avec gdb et la structure pthread_mutex_t Authors: cosmoff Date: 2020年05月25日T22:12:32+02:00 License: CC By-SA Tags: Score: 1 Bonjour à tous, voila je me suis fabriqué un petit programme qui fait un deadlock (via 2 threads). puis ensuite avec gdb je regarde à quelle instruction est mon programme (via backtrace), j'ai : #0 __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135 #1 0x00007f623ede4023 in __GI___pthread_mutex_lock ( mutex=0x5571dcb2c040 ) at ../nptl/pthread_mutex_lock.c:78 #2 0x00005571dc92b89b in callback1 () #3 0x00007f623ede16db in start_thread (arg=0x7f623e9e8700) at pthread_create.c:463 #4 0x00007f623eb0a88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 je constate donc que mon thread est bloqué par le mutex : mutexDeCosmoff je veux regarder la valeur cette structure, je regarde dans pthread.h et on a : typedef struct pthread_queue { struct pthread *head; struct pthread *tail; } *pthread_queue_t; typedef struct { struct pthread_queue queue; char lock; struct pthread *owner; int flags; #ifdef _POSIX_THREADS_PRIO_PROTECT int prioceiling; pthread_protocol_t protocol; int prev_max_ceiling_prio; #endif } pthread_mutex_t; pour accéder à la valeur lock de ma structure pthread_mutex_t, je lance la commande sous gdb : (gdb) print ((char*)&mutexDeCosmoff)[16] le 16 correspond au décalage que je dois faire pour accéder à la variable lock malheureusement gdb me retourne 0 alors que je m'attendais à 1 ou 2 avez vous une idée ? Merci d'avance pour votre aide

AltStyle によって変換されたページ (->オリジナル) /