Problema resolvido!
Eu achei que o main.c chamava freeListaUtil() que recebe uma lista com cabeça e dá free. Porém o main.c chama a freeUtil, que recebe e dá free numa célula única... Resumindo, devolver o endereço da própria célula na função eval.
Fórum