GDB зависает в malloc

Предположим, у меня есть какая-то программа на С, например:

#include <stdlib.h>
#include <stdbool.h>

int main()
{
    while (true) {
        void *p = malloc(1000);
        free(p);
    }
    return 0;
}

и я присоединяюсь к нему сgdb как этоgdb a.out PID. gdb успешно присоединяется к нему, но я пытаюсь сделать что-то вродеcall printf("bla bla bla") gdb зависает и если я нажмуCtrl^C Я получаю это:

(gdb) call printf("bla bla bla")
^C
Program received signal SIGINT, Interrupt.
__lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:95
95  ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: No such file or directory.
The program being debugged was signaled while in a function called from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on".
Evaluation of the expression containing the function
(malloc) will be abandoned.
When the function is done executing, GDB will silently stop.

Я полагаю, что это происходит потому, что мойa.out создавал объект и приобрел замок внутриmalloc.c и в этот момент я связан сgdb и попытался создать строку "бла бла бла", используяmalloc.

Мой вопрос, как я могу обнаружить, что я внутриmalloc.c и позволить моей программе закончить это выполнение? Мне нужно сделать это не внутри командной строки, а используя какой-то сценарий GDB (я могу выполнять только команды внутриgdb с-ex опция).

Ответы на вопрос(2)

Ваш ответ на вопрос