Je travaille sur un morceau de code qui utilise des expressions régulières dans c.__libc_lock_lock est segfaulting
Tous les éléments regex utilisent la bibliothèque standard regex c.
Sur la ligne 246 de regexec.c, la ligne est
__libc_lock_lock(dfa->lock);
Mon programme est segfaulting ici et je ne peux pas comprendre pourquoi. J'essayais de trouver où __libc_lock_lock a été défini et il s'avère qu'il s'agit d'une macro dans bits/libc-lock.h. Cependant, la macro n'est pas réellement définie pour être quelque chose, juste définie.
Deux questions:
1) Où est le code qui est exécuté lorsque __libc_lock_lock est appelé (je sais que ce doit être remplacé par quelque chose mais je ne sais pas où ce serait
2). dfa est un objet re_dfa_t qui est casté à partir d'une chaîne de caractères qui est le membre du type d'objet regex_t, il n'aura aucun verrou de membre. Est-ce ce qui est censé arriver?
Il coutures vraiment il y a une sorte de magie qui se passe ici avec ce __libc_lock_lock
4. Vous avez à un moment donné de la mémoire corrompue utilisée par libc, et ceci est un effet retardé. –
@Tyler, je ne tente pas une procédure pas à pas de débogage mémoire tramplage! :) Je vais l'ajouter à la liste –