THE ORB
Iniciando o studio

estouro de pilha

Um script chamou a si mesmo várias e várias vezes até ficar sem espaço. Alguma coisa está entrando em loop sobre si mesma.

groupsAquele script morre de vezcodePrecisa de um desenvolvedor

Faça isto primeiro

Anote qual resource ele nomeia e pare: ele vai continuar derrubando os outros.

bug_reportMelhor colar o console inteiro

O que significa

Uma função chamou a si mesma, direta ou indiretamente, até o Lua ficar sem pilha de chamadas. O script para ali. Num servidor isso costuma levar o resource inteiro na subida, e por isso aparece como «stack overflow logo depois de subir».

O que causa isso

Ordenado pela frequência com que é a resposta.

  1. 1

    Recursão direta sem caso base

    Uma função que sempre chama a si mesma. Rara de propósito, comum por acidente quando duas funções receberam o mesmo nome.

  2. 2

    Um evento que dispara a si mesmo

    Um handler de myres:update que chama TriggerEvent('myres:update', ...) dentro de si mesmo. Cada disparo é síncrono, então recorre.

  3. 3

    Um __index de metatabela que aponta para si mesmo

    setmetatable(t, { __index = t }). Qualquer chave que falte recorre para sempre.

  4. 4

    Dois resources disparando um no outro

    A dispara o evento de B, e o handler de B dispara o de A. Nenhum dos dois arquivos parece recursivo sozinho.

  5. 5

    Uma tabela profunda serializada com um ciclo

    json.encode sobre uma tabela que contém a si mesma.

Como saber qual é o seu

O rastro se repete. Procure o mesmo arquivo e a mesma linha aparecendo de novo e de novo nos quadros: esse par é o laço. Se o rastro está cortado, coloque um print no topo da função suspeita e veja ela disparar sem parar.

Onde olhar

O quadro que se repete no rastro.

Como consertar

Dê um piso à recursão, ou corte o ciclo de eventos:

-- um evento que não pode reentrar em si mesmo
local updating = false
AddEventHandler('myres:update', function(data)
    if updating then return end
    updating = true
    -- trabalho
    updating = false
end)

Ainda travado no seu próprio código?

Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.

bug_reportAbrir o Server Fixer

Para esse tipo de erro, o Script Optimizer lê o script e conserta o código por trás disso.

Erros que andam junto com este