SegFault bizarro no mergeSort

SegFault bizarro no mergeSort

por João Henrique Luciano -
Número de respostas: 3

Então, ontem eu comecei a debugar o EP5 e no meu mergeSort (depois de corrigir um erro lógico bem grave) está dando o seguinte SegFault:

"Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7a9a4cc in _int_malloc (av=0x7ffff7dd3720, bytes=16)
    at malloc.c:3917
3917    malloc.c: Arquivo ou diretório não encontrado."

O segfault está vindo da função malloc? Tô meio confuso perplexo

Em resposta à João Henrique Luciano

Re: SegFault bizarro no mergeSort

por Caio Braz -

Vamos lá, com calma.

Compile seu EP com a flag -g e rode ele com o valgrind:
valgrind ./EP5

Ele vai te informar certinho onde está ocorrendo a Segfault =]

 

Em resposta à João Henrique Luciano

Re: SegFault bizarro no mergeSort

por Victor Sanches Portella -

Apesar do Caio ter já respondido, tem um jeito de ver isso usando o GDB mesmo.

Se você usar o comando backtrace, ele vai te mostrar a pilha de execução, vendo a
pilha de chamadas de função. Assim, você pode ver em que linha o programa entrou
nesse malloc que ocasionou o erro.

Se bem que, os erros de malloc normalmente são devido a coisas mais bizarras, e o
Valgrind possa dar uma dica melhor do erro. Ja tive erro parecido porque acessava
posição invalida da matriz em outro ponto do programa.

Em resposta à Victor Sanches Portella

Re: SegFault bizarro no mergeSort

por João Henrique Luciano -

Valeu Caio e Portella! Mas já achei o erro hah

Eu estava esquecendo de incrementar o lst->nFilmes na função insiraFilme(). Como nFilmes ficava em zero sempre e a base da minha recursão é nFilmes==1 => recursão infinita => stack overflow!