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?