SIGABRT
O programa desiste de si: abort() toca o próprio sino.
As outras falhas vêm de fora — MMU, CPU, kernel. Esta é autoinfligida: o processo chama abort() e manda o sinal para si mesmo, porque continuar seria pior do que morrer com a memória documentada.
É o sino do assert(3) que falhou, da glibc que detectou um double free, do std::terminate do C++. O abort() desbloqueia o próprio sinal antes de tocá-lo — desistir de desistir não é opção.
$ ./inventario
inventario: inventario.c:42: repor: Assertion `qtde > 0' failed.
Aborted (core dumped)