gdb congela em malloc

Suponha que eu tenha algum programa C como este:

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

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

e eu anexo a ele comgdb como issogdb a.out PID. gdb atribui com sucesso a ele, mas que eu tento fazer algo comocall printf("bla bla bla") gdb congela e se eu pressionarCtrl^C Eu entendi isso:

(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.

Suponho que isso acontece porque meua.out estava criando um objeto e adquiriu uma trava dentromalloc.c e neste momento eu me conectei comgdb e tentou criar a string "bla bla bla" usandomalloc.

Minha pergunta é como posso detectar que estou dentromalloc.c e deixar meu programa terminar essa execução? Eu preciso fazer isso não dentro da linha de comando, mas usando algum tipo de script gdb (eu só posso executar comandos dentrogdb com-ex opção).

questionAnswers(2)

yourAnswerToTheQuestion