Googletest stürzt immer ab nach sem_wait

Gast #6307767
Guten morgen,
wir habne ein Programm in einer VM (Debian) geschrieben. Dieses testen 
wir jetzt mit googletest. Hierbei stürzt es aber immer ab. Beim Crash 
springt der Debugger zu
0x7ffff6fb2fff    48 81 c4 88 00 00 00           add    $0x88,%rsp

was genau bedeutet denn $0x88 und %rsp?
1
...
2
    tid = get_taskID();
3

4
    taskDataHead = getTaskDataHead();
5
    taskData = getTaskFromThreadId(tid, taskDataHead);
6

7
    if(taskData != NULL)
8
    {
9
        sem_wait(&taskData->sem_elements.full);
10
        sem_wait(&taskData->sem_elements.lock);
11

12
        size_t triggeredByMailbox = isTaskTriggeredByMailbox(taskData);
13
...

es stürzt immer nach dem zweite Aufruf von sem_wait ab.
Auch wenn ich danach nochmal tid=get_taskID() aufrufen würde, würde es 
dort abstürzen.

Die Semaphoren arbeiten an für sich im normalen ablauf (zumindest ist es 
dort noch nie gecrasht). Außer jetzt bei den google-Tests.
Es gab bei der Initialisierung natürlich auch
1
        sem_init(&newNode->sem_elements.lock, 0, 1);
2
        sem_init(&newNode->sem_elements.full, 0, 0);

Woran könnte das liegen? Kommt google nicht mit semaphoren klar?
Gast #6307859
> was genau bedeutet denn $0x88 und %rsp?

"Addiere 0x88 zum Stackpointer"

Wenn der Stackpointer bei Benutzung normalerweise dekrementiert wird,
entspricht das etwa dem "Aufraeumen" eines Stackframes beim
Verlassen einer Funktion.
Gast #6307885
In solchen fällen lasse ich immer zuerst mal valgrind und asan drüber 
laufen (aber nicht beide zusammen, die vertragen sich nicht). Wenn man 
glück hat, und da irgend was überschrieben wurde, finden die dann 
manchmal die eigentliche Problemstelle. Kompiliere es auch mal mit 
-fstack-protector-all eingeschalten.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.