stdout.txt - Sammlung typischer Fehlermeldungen

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


Sie betrachten gerade eine ältere Version des Eintrags. Klicken Sie hier, um zur aktuellen Version zu gelangen.

  • Um das Mysterium "stdout.txt" ein bisschen verständlicher zu machen und die Kompetenz der gesamten Community möglichst vielen zugänglich zu machen, habe ich diesen Eintrag erstellt.

    Diese Datei wird ein lebendes Dokument sein, in das typische Fehlermeldungen eingetragen und deren Bedeutung erklärt werden kann - ich bitte euch darum, alle mitzumachen.

    Vielleicht noch ein passendes Zitat von VacuumTube zur Einleitung:

    Zitat von @VacuumTube

    Die stdout ist eine ungeordnete Sammlung von Logs (ohne Zeitstempel), die sowohl vom Spiel als auch von einzelnen Mods kommen.

    Es gibt nicht den einen Weg, eine stdout richtig zu lesen. Je nach Problem, muss man sich das genau anschauen. Erst wenn man sich schon länger damit beschäftigt hat, versteht man den prinzipiellen Aufbau.

    Und es gibt so viele mögliche Fälle, dass es eine allumfassende Sammlung vermutlich nie geben wird. Aber das ist auch nicht das Ziel.


    Danto Danke für das Erstellen. Ich den Artikel mal erweitert und unten die Liste angefangen, wie ich mir das etwa vorgestellt habe. Ob das in Zukunft hilfreich ist, wird sich zeigen.



    Dieser Lexikon-Eintrag soll den Umgang mit Fehlern/Crashes vereinfachen. Bei der Fehlersuche geht es meist darum, die verantwortliche Mod zu finden. Dieser Artikel soll helfen, die Fehlerart und die Ursache anhand der stdout festzustellen, welche für weniger erfahrene Spieler anscheinend nur schwer zu durchschauen ist. Außerdem sollen in einer "Assertion-Liste" bekannte Fehler festgehalten werden, diese ist auch für Modder interessant.


    Dies soll aber keine Schritt-für-Schritt Anleitung sein, denn in vielen Fällen muss man einfach genauer hinschauen oder ist auf die Erfahrung der Modder hier im Forum angewiesen. Daher gilt, wenn euch die Informationen hier und die Fehlerliste nicht weiterhelfen: Schreibt euer Problem ins Forum. Achtet dabei darauf, genau zu beschreiben, wann der Fehler auftritt und welche Mods ihr benutzt. Das wichtigste: immer die stdout anhängen, denn manchmal stehen auch über der eigentlich Fehlermeldung entscheidende Informationen.

    1 Allgemeines

    • Grundlagen/Speicherorte: Speicherorte der Spieldateien, stdout.txt, Speicherstände, Mods
    • Die Datei wird mit jedem neuen Spielstart überschrieben
    • Lest die stdout.txt am besten immer von unten nach oben - tendenziell steht unten das, was euer Spiel zum Absturz gebracht hat
    • Die Zeilen kurz vor der Fehlermeldung können relevant sein - müssen aber nicht (siehe gewöhnliche Meldungen)

    2 Arten von Crashes

    Ich unterscheide mal 3 grundlegende Möglichkeiten, wie das Spiel crashen kann. Es gibt sicherlich noch mehr (was aber aus unserer Sicht nicht relevant ist, siehe das Crash-Feld im Debug-Fenster).

    Ihr solltet nach einem Crash mit der Fehlermeldung schnell merken, um welche es sich handelt, somit lässt sich das Problem eingrenzen.

    • Lua Fehler: Tritt auf, wenn im Lua-Code eine nicht-geschützte Exception auftritt. Die Ursache ist meistens ein Mod. Diese Fehler sind leicht zu analysieren, weil direkt die Fehlerzeilen in den Lua Dateien angegeben sind. (zB Error message: .../local/mods/modxy_1/mod.lua:47: unexpected symbol near 'x' )
    • Assertion: Diese "Tests" sind von den Entwicklern in den Quellcode eingebaut, um fehlerhaftes Verhalten oder ungültige Zustände zu erkennen. Die eigentliche Ursache kann jedoch sehr viel früher entstehen. Grundsätzlich ist es ein Fehler im Spiel, aber auch Mods können verantwortlich sein.
      Das Spiel bricht sofort ab, um Folgefehler oder korrupte Savegames zu vermeiden (Ausnahme: Exceptions innerhalb einer Konstruktion werden jetzt "gefangen" und eine rote Meldung angezeigt, man kann die Konstruktion dann nicht bauen, aber noch weiterspielen.)
      Im Log wird zusätzlich zur fehlgeschlagenen Assertion die Quelldatei und zeile sowie die Funktion, in der der Fehler auftrat, angegeben. Wir können das nicht nachsehen, da der C++ Code nicht öffentlich ist, aber man kann oft spekulieren, was das Problem sein könnte. Außerdem findet ihr in alten Threads oder in der Liste unten mehr Informationen, falls der Fehler bekannt ist.
    • Andere: Leider passiert es auch manchmal, dass das Spiel ohne irgendeine Art von Fehlermeldung abstürzt. In der stdout ist dann die letzte Zeile "normal" und jede Art von Fehlermeldung oder Goodbye fehlt. Die Ursache ist nur schwer rauszufinden. Wahrscheinlich killt Windows das Programm von außen (ist zB der Fall, wenn es nicht reagiert und man es zum Abbruch zwingt), aber auch Hardwareprobleme sind möglich.

    3 Typische Fehlermeldungen ohne Absturz

    Hier können wir "gewöhnliche" Meldungen sammeln, die zwar zeigen, dass etwas nicht in Ordnung ist, aber in der Regel nicht der Grund für einen Crash sind.

    • texture load error: Eine Textur kann nicht geladen werden. Das ist zwar doof, führt aber normalerweise nicht zum Absturz
    • error loading dds file: Eine dds Datei kann nicht geladen werden
    • * x .mdl was removed because the following resources were missing: Fehlende Modelle werden durch Dummys ersetzt
    • vehicle/ x .mdl is missing boundingInfo: Im Modell ist keine boundingInfo angegeben

    4 Assertion Liste

    Hier sollen alle bekannten Assertion-Fehlermeldungen inklusive vermutlicher Ursache gesammelt werden.

    Der Aufbau ist immer gleich. Die Datei, in der der Fehler auftritt, beginnt mit c:\build\tpf2_steam oder c:\build\tpf2_gog, was deshalb weggelassen wird.


    Beachtet aber, dass die Ursachen unterschiedlich sein können. Auch sind viele Assertions unbekannt oder nicht aussagekräftig.

    Die Liste darf/soll gerne von jedem, der neue Erkenntnisse hat, erweitert werden. Bei Unsicherheiten Kommentar schreiben.


    Quelldatei/zeileFunktionError message / Assertion ... failedUrsache/Problemlösung (Vermutung)
    \src\lib\model\io\converter_model.h:179enum MaterialType __cdecl Converter<enum MaterialType,void>::operator ()(const class std::variant<struct lua::Nil,bool,double,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct lua::Table> &)invalid material type: REFLECTIVE_NRML_MAP_OPUngültiger Materialtyp
    TPF1?
    \src\lib\util\idrep.h:83int __cdecl IdRep<class Model *>::GetId(const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &) constfalseAsset Container Mod oder Fahrzeugmods können das Problem sein
    \src\game\terrain\renderdatamanager.cpp:806__cdecl terrain::RenderDataManager::~RenderDataManager(void)m_subscriptions.empty()Tritt manchmal als Folge eines anderen Fehlers auf
    Shader Enhancement ?
    \src\lib\renderer\tex_load.cpp:343struct Rgbe::CImage __cdecl `anonymous-namespace'::ScaleDown(const struct Rgbe::CImage &)img.width % 2 == 0 && img.height % 2 == 0Eine Textur hat eine ungültige Größe
    \src\lib\renderer\tex_load.cpp:821int __cdecl `anonymous-namespace'::UploadTexture(const class gli::texture &,unsigned int,bool)redGreen == (format.Internal == gli::gl::INTERNAL_RG_ATI2N_UNORM)Eine Textur hat ein ungültiges Format
    \src\lib\model\edge_geometry_util.cpp:123struct transport::EdgeGeometry __cdecl transport::MakeSplineEdge(const struct CVec3f &,const struct CVec3f &,const struct CVec3f &,const struct CVec3f &,float)result.length > .0fStraßen/Schienen-Bau nicht möglich (zB weil maxSlope 0 ist)
    \src\lib\model\edge_geometry_util.h:215void __cdecl transport::VisitEdge<class transport::`anonymous-namespace'::CalcMaxCurvatureStep::<lambda_c79021821819a7d7dcd543b3fd9e73a5>>(const struct transport::EdgeGeometry &,bool,float,float,float,float,int,class transport::`anonymous-namespace'::CalcMaxCurvatureStep::<lambda_c79021821819a7d7dcd543b3fd9e73a5>)len > .0fUngültige Straßenlänge
    Lidl Discounter ?
    \src\lib\ui\core.cpp:1448void __cdecl UI::CCore::AddId(class UI::ILayoutItem *)pr.second && "Duplicate id found."ID eines Gui Elements doppelt vorhanden
    \src\game\procedural\buildingtyperep.cpp:63class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __cdecl `anonymous-namespace'::GetCandidates(const class std::unordered_map ...falseEs sind keine Stadtgebäude für die Stadterweiterung verfügbar
    \src\game\terrain\groundtexturerep.cpp:131const struct GroundTexture &__cdecl GroundTextureRep::Get(const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &) constfalseNicht vorhandene ground_texture
    \src\game\transport\street\streettyperep.cpp:226int __cdecl StreetTypeRep::GetIndexExact(const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &) constfalseNicht vorhandener Straßentyp
    \src\game\transport\vehicle_cargo_util.cpp:160class std::_List_const_iterator<class std::_List_val ...it != format2model.end()Problem mit Cargo-Mod/CargoType
    \src\game\ui\components\addmodulecomp.cpp:299__cdecl UI::AddModuleComp::AddModuleComp(class CommandList &,const class GameRes &,class UI::IGameStateProvider &,class UI::GameTimeUI &,class UI::ModuleBuilder *,class std::shared_ptr<class UI::RendererFactory>,class UI::MenuCategorySettings,class UI::CRendererComponent &,class UI::Window *)it.secondEin Problem mit modularem Bahnhof
    Güterbahnhof mit bis zu 24 LKW Terminal ?
    \src\game\ecs\trainmovesystem.cpp:666auto __cdecl ecs::TrainMoveSystem::Update2::<lambda_a91b0cbcef7db7413dfe64696d786be4>::operator ()(int,int) constmp.speed >= .0f

Teilen

Kommentare

  • Test: ||

    Traurig 1
    • Ok, keine Ahnung aber offensichtlich führt " | | " zu einem müden Smiley

  • Das ist genau das, was ich haben wollte :)

    Gefällt mir 1
  • Wow, @VacuumTube, das ist wirklich toll geworden - danke dir vielmals! :)

    Gefällt mir 1