Debugging "Maximale Call-Stack-Größe überschritten"
Ich habe einen server, ich kann die Ursache zu sterben, mit der folgenden Ausgabe:
events.js:38
EventEmitter.prototype.emit = function(type) {
^
RangeError: Maximum call stack size exceeded
Jedoch, ohne einen stack dump oder trace, ich habe keine Möglichkeit, herauszufinden, ob dies ist eine unendliche Rekursion oder nur ein leicht-zu-großen Kette, geschweige denn, wo das problem der Funktion ist.
Aktiven Knoten mit der --trace
option verursacht meine tests, nicht nur langsam laufen (wie man erwarten würde), aber das problem nicht reproduzieren.
Jemand irgendwelche Lösungen oder Tipps am unteren Rand dieser?
Kommentar zu dem Problem
Dieses bestimmte Problem wurde behoben, durch den Vergleich Unterschiede vor und nach diesem war bekannt, um zu geschehen, kleben zusätzliche Protokollierung bei jeder neu/geändert
Strahlen
- Aufruf und die Entdeckung der scoping-Fehler führt zu Gelenk-Rekursion auf ein 'Abfluss'
- event - damit die Geschwindigkeit Empfindlichkeit. Ich werde noch award akzeptierte Antwort auf die beste Allgemeine Strategie, wäre auch dies Problem gelöst. InformationsquelleAutor der Frage OrangeDog | 2011-10-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, die Antwort ist derzeit: eng sitzen und warten Node.js ein update auf eine neuere V8-version, oder bauen Sie Ihre eigenen mit der patch von dieser Chromium-Projekt-bug-report.
Diese archivierten thread aus dem v8-dev-mailing-Liste zeigt eine Diskussion, in der
Beachten Sie, dass Node.js v0.8 V8 3.11; Node.js 0.10 ist derzeit mit V8-3.14. Also der patch akzeptiert Chrom für dieses Problem ist noch "in der Zukunft", soweit Knoten betroffen ist.
(Diese Antwort schuldet Dank @Coderoshi, da es durch folgenden thread aus seiner Antwort, dass ich alles erfuhr.)
InformationsquelleAutor der Antwort metamatt
Die chance, dass es ein "leicht-zu-groß-Kette" scheint unwahrscheinlich.
Es ist wahrscheinlich eine Funktion aufrufen, die Auslöser selbst.
Also, wenn die Verlangsamung der code macht die Endlosschleife zu stoppen.
Meine Vermutung wäre, dass Sie eine Warteschlange haben und mit dem langsameren Modus seine nicht immer
gefüllt bis so schnell.
Wenn das nicht hilft, dann denke ich, brauche ich mehr info.
Hat jemand vielleicht eine catch-all für diese aber.
InformationsquelleAutor der Antwort megakorre
Dieser patch könnte Ihnen helfen, eine Lösung zu finden. Es erweitert den stack-trace enorm:
https://github.com/dizzyd/node/commit/40434019540ffc17e984ff0653500a3c5db87deb
InformationsquelleAutor der Antwort Coderoshi