Usando Stack Trace
Em alguns sistemas operacionais, o log de erro irá conter um stack trace se mysqld
finalizar inesperadmente. Você pode usá-lo para descobrir onde (e talvez por que) o mysqld
finalizou. See "O Log de Erros". Para obter um stack trace, você não deve compilar o mysqld
com a opção -fomit-frame-pointer
para gcc. Leia Seção E.1.1, "Compilando o MYSQL para Depuração".
Se o arquivo de erro conter algo como o seguinte:
mysqld got signal 11; The manual section 'Debugging a MariaDB server' tells you how to use a stack trace and/or the core file to produce a readable backtrace that may help in finding out why mysqld died Attemping backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong stack range sanity check, ok, backtrace follows 0x40077552 0x81281a0 0x8128f47 0x8127be0 0x8127995 0x8104947 0x80ff28f 0x810131b 0x80ee4bc 0x80c3c91 0x80c6b43 0x80c1fd9 0x80c1686
você pode descobrir onde o mysqld
finalizou fazendo o seguinte:
- Copie os números acima em um arquivo, por exemplo
mysqld.stack
. - Faça um arquivo de símbolos para o servidor
mysqld
:nm -n libexec/mysqld > /tmp/mysqld.sym
Note que a maioria das distribuições binárias do MariaDB (exceto para o pacotes de 'depuração' onde as informações são incluídas dentro dos binários) já possuem o arquivo acima, chamado
mysqld.sym.gz
. Neste caso você pode simplesmente desempacotá-lo fazendo:gunzip < bin/mysqld.sym.gz > /tmp/mysqld.sym
- Execute
resolve_stack_dump -s /tmp/mysqld.sym -n mysqld.stack
.Isto exibirá a onde o
mysqld
finalizou. Se isto não lhe ajuda a descobrir o porque omysqld
morreu, você deve fazer um relato de erro e incluir a saída do comando acima no relatório.Note no entanto que na maioria dos casos, termos apenas um stack trace, não nos ajudará a encontrar a razão do problema. Para estarmos apto a localizar o erro ou fornecer um modo de contorná-lo, precisariamos, na maioria dos casos, conhecer a consulta que matou o
mysqld
e de preferência um caso de teste para que possamos repetir o problema! Leia "Como relatar erros ou problemas".