Como ler o crash report de um servidor de Minecraft
O servidor caiu e deixou um arquivo gigante cheio de texto em inglês. Este guia mostra onde procurar, como separar o ruído da causa real e o que fazer com cada tipo de erro.
PorEquipe StreetHosting·Time de infraestrutura e suporte da StreetHosting
Onde ficam os arquivos
Todo servidor de Minecraft escreve dois tipos de arquivo quando algo dá errado, e eles não servem para a mesma coisa.
| Caminho | O que é | Quando serve |
|---|---|---|
| crash-reports/crash-AAAA-MM-DD_HH.MM.SS-server.txt | Retrato do instante da queda | O servidor morreu de repente e você quer a exceção |
| logs/latest.log | Histórico completo da execução atual | Quase sempre. É o arquivo mais informativo |
| logs/AAAA-MM-DD-1.log.gz | Logs de execuções anteriores, compactados | Quando o problema já aconteceu antes e você quer comparar |
| logs/debug.log | Log detalhado, quando ativado na build | Investigação profunda de comportamento estranho |
Em painel gerenciado esses arquivos aparecem no gerenciador de arquivos, dentro da raiz do servidor. Em VPS root, eles ficam na mesma pasta do server.jar. Baixe sempre os dois: o crash report diz o que quebrou, o latest.log diz o que estava acontecendo antes.
O latest.log é sobrescrito a cada inicialização. Se o servidor reiniciou automaticamente depois da queda, o arquivo que interessa já virou um .log.gz com a data. Baixe antes de reiniciar de novo.
Anatomia de um crash report
O arquivo assusta pelo tamanho, mas ele tem estrutura fixa. Sempre as mesmas quatro partes, sempre na mesma ordem.
1. Descrição
As primeiras linhas trazem uma frase de piada aleatória gerada pelo jogo, que você pode ignorar, e logo abaixo um campo Description. Esse campo diz em que momento o servidor caiu: Exception in server tick loop, Ticking entity, Ticking block entity, Exception initializing level. Isso já reduz muito o universo de suspeitos.
2. Exceção e stacktrace
Vem o nome da exceção, seguido de dezenas de linhas começando com at. Cada linha dessas é uma chamada de método, da mais recente para a mais antiga. É a pilha de execução no momento exato da quebra, e é onde mora a resposta.
3. Detalhes do servidor
Uma seção com a versão do servidor, a build exata, o mundo carregado, a lista de plugins ou mods e as configurações relevantes. Aqui você confere se o plugin culpado está mesmo na versão que você acha que está.
4. Detalhes do sistema
Versão do Java, memória alocada e livre, sistema operacional, número de núcleos. Essa seção resolve sozinha dois tipos de crash: heap insuficiente e Java na versão errada.
Antes de sair pesquisando o erro no Google, leia a seção de sistema. Um Memory: 42 MB free num servidor com 4 GB de heap explica a queda sem precisar de mais nada.
Como achar a linha que importa
Noventa por cento da stacktrace é ruído. O truque é saber que tipo de linha descartar.
- Descarte os pacotes da plataforma. Linhas com
net.minecraft,java.util,java.lang,io.nettyeorg.bukkitquase sempre são só a máquina executando o código de outra pessoa. - Procure o pacote estranho. Nomes como
com.algumplugin.coreounet.algummod.tileentregam o autor do código que quebrou. O primeiro que aparecer de cima para baixo é o mais próximo do problema. - Vá até o Caused by. Uma stacktrace pode ter vários blocos
Caused byencadeados. O último deles é a causa raiz de verdade, o resto é o erro sendo repassado camada por camada. - Anote as coordenadas quando houver. Em crashes de
Ticking entityeTicking block entity, o arquivo informa a posição no mundo. Ir até lá e remover o bloco ou a entidade resolve o caso.
Se você tem o arquivo mas não a paciência, o crashdoc faz exatamente essa triagem: acha o Caused by, isola o pacote de terceiro e traduz o padrão de erro para uma explicação em português, com a correção sugerida. O arquivo é lido no próprio navegador. Ele fica junto das outras ferramentas gratuitas da StreetHosting.
Os erros mais comuns e o que significam
A grande maioria dos crashes de servidor cai em meia dúzia de padrões. Reconhecer o padrão é mais rápido do que entender o código.
NoClassDefFoundError e NoSuchMethodError
O plugin ou mod chamou um método que não existe na versão do servidor que está rodando. É o erro clássico de plugin compilado para outra versão do Minecraft, ou de plugin que depende de outro que você não instalou. A correção é baixar a versão do plugin compatível com a sua build, ou instalar a dependência que falta.
Mixin apply failed
Aparece em Fabric e Forge. Dois mods tentaram alterar o mesmo trecho do código do jogo e um atropelou o outro, ou o mod foi escrito para outra versão. O nome do mixin quase sempre carrega o nome do mod responsável. Atualizar os dois mods para a mesma versão do jogo resolve na maior parte das vezes. Para montar o ambiente do zero sem esse tipo de conflito, veja instalar mods e plugins juntos.
java.lang.OutOfMemoryError: Java heap space
A JVM pediu memória e não tinha. Existem duas leituras possíveis, e elas exigem soluções opostas. Se o servidor cresceu de verdade, com mais gente online, mundo maior ou modpack novo, o heap está pequeno e precisa subir. Se o erro se repete sempre depois do mesmo tempo de uptime, mesmo com pouca gente, existe vazamento de memória em algum plugin, e aumentar o heap só empurra a queda para mais tarde.
Nunca defina o heap maior do que a memória real disponível. O sistema começa a usar swap, o TPS despenca e o processo acaba morto de qualquer jeito, agora sem crash report nenhum.
Server thread dump e watchdog
Quando um tick trava por mais tempo do que o limite configurado, o watchdog do servidor mata o processo e despeja o estado da thread principal no log. A mensagem costuma dizer que o servidor parou de responder. O dump mostra exatamente em que método a thread ficou presa, e daí sai o culpado. Se em vez de travar completo o servidor só fica lento, o caso não é de crash e sim de perfilamento: leia como reduzir o lag no Paper.
Address already in use: bind
A porta que o servidor tenta abrir já está ocupada. Quase sempre é o processo anterior que não morreu direito depois de um restart, ou dois servidores configurados na mesma porta. Encerre o processo antigo ou troque a porta no server.properties.
UnsupportedClassVersionError
A versão do Java instalada é mais antiga do que a exigida pela build do servidor. A mensagem traz dois números de versão de classe, e o maior deles é o que o jar exige. Builds modernas de Paper pedem Java 21. Instalar a versão certa resolve na hora.
Failed to load eula.txt
Não é bem um crash, é o servidor recusando subir porque o EULA não foi aceito. Basta trocar o valor no arquivo. O contexto completo está em o que é o EULA do Minecraft.
Isolar o culpado por bisecção
Às vezes a stacktrace não aponta nenhum pacote de terceiro, ou aponta um plugin que claramente só foi vítima. Nesses casos a solução não é ler mais, é testar. E testar de forma organizada economiza horas.
- Faça backup da pasta de plugins ou mods antes de mexer em qualquer coisa.
- Tire metade dos arquivos da pasta. Suba o servidor e reproduza o que causava a queda.
- Se quebrou, o culpado está na metade que ficou. Se não quebrou, está na metade que saiu.
- Pegue a metade suspeita e divida de novo pela metade. Repita.
- Em quatro ou cinco rodadas você chega em um único arquivo, mesmo partindo de cinquenta plugins.
Se o crash só acontece com gente online, reproduzir fica difícil. Nesse caso compare os logs de várias quedas: o que se repete nos três últimos arquivos é o rastro do problema, e o que aparece só uma vez é coincidência.
- Backup feito antes de remover qualquer plugin
- Uma mudança por vez, sempre
- Mesma forma de reproduzir a cada teste
- Anotar o resultado de cada rodada em algum lugar
- Versão do servidor e do Java inalteradas durante o teste
Quando o problema é a máquina
Existe uma categoria de queda que não gera crash report nenhum: o processo simplesmente desaparece e o log termina no meio de uma linha normal. Isso não é bug de plugin, é a máquina.
- O sistema matou o processo. Quando a memória da máquina acaba, o sistema operacional escolhe o processo mais gordo e encerra. O servidor de Minecraft é sempre o escolhido. Sinal claro: log cortado no meio, sem exceção alguma.
- Disco cheio. Sem espaço, o servidor não consegue salvar o mundo nem escrever log. Costuma aparecer erro de escrita antes da queda.
- CPU saturada. Não derruba sozinha, mas faz o watchdog matar o processo por tick travado. Se o TPS já vinha ruim antes do crash, esse é o caminho.
- Plano apertado demais para o projeto. Um modpack de duzentos mods em 2 GB de heap não é problema de configuração, é conta que não fecha.
Se o diagnóstico apontar para limite de máquina, o caminho é subir de plano ou migrar para hardware com mais folga. Nos planos Minecraft Pro e nas VPS Ryzen o clock alto por núcleo dá margem justamente para o pico que hoje derruba o servidor. Antes de gastar, porém, confirme no log que a causa é mesmo essa: trocar de plano não conserta plugin quebrado.
Perguntas frequentes
- Qual a diferença entre crash report e latest.log?
- O crash report é um retrato do instante da queda, com a exceção e o estado da máquina. O latest.log é o histórico completo da execução, com tudo que foi carregado e todos os avisos antes do problema. Na maioria dos casos o latest.log explica melhor o que aconteceu.
- O que significa Exception in server tick loop?
- Significa que algo lançou uma exceção durante o processamento de um tick e o servidor não conseguiu continuar. É uma mensagem genérica: a causa real está na linha Caused by mais abaixo, quase sempre apontando um plugin, um mod ou uma entidade corrompida no mundo.
- Recebi java.lang.OutOfMemoryError. É só aumentar a RAM?
- Aumentar ajuda quando o servidor cresceu de verdade, com mais jogadores, mundo maior ou modpack pesado. Mas se o erro volta sempre no mesmo intervalo de tempo, existe vazamento de memória em algum plugin ou mod, e aí subir o heap só adia a queda.
- O servidor nem inicia e não gera crash report. E agora?
- Sem crash report, a resposta está no logs/latest.log. As causas mais comuns são EULA não aceito, porta já em uso por um processo antigo, versão de Java incompatível com a build do servidor e arquivo de configuração com erro de sintaxe.
- Preciso saber Java para entender um crash report?
- Não. Você precisa saber onde olhar. Localizar a linha Caused by e o nome do pacote que não é do Minecraft resolve a maior parte dos casos sem escrever uma linha de código.
- Posso mandar o crash report para alguém analisar?
- Pode, e é o caminho normal quando o erro vem de um plugin específico. Antes disso, vale rodar o arquivo por um analisador para chegar no autor do plugin já com a informação mastigada e a versão exata em que o problema aparece.
Próximo passo
Planos Minecraft
Compare opções de hospedagem Minecraft no Brasil.
Guias relacionados
Como reduzir lag em servidor Minecraft Paper (TPS e mspt)
Lag não é 'culpa do host' até você medir: mspt alto vem de mundo, configuração e código rodando no tick. Este texto prioriza diagnóstico antes de tunagem agressiva.
Como instalar mods e plugins juntos no servidor Minecraft
Muita gente quer unir mods e plugins no mesmo servidor. Funciona em alguns cenários, mas precisa de escolha correta de software e testes.
O que é EULA do Minecraft no servidor e como aceitar
Servidor que não inicia por causa da EULA assusta quem está começando. Este guia explica o que é, por que existe e como aceitar sem erro.