Man kann (zumindest auf Linux, wahrscheinlich auch auf Windows) die Softwarebibliothek (auf Windows wäre das eine .dll), die für die Speicherreservierung verantwortlich ist, durch optimiertere Bibliotheken wie jemalloc (Firefox) oder tcmalloc (Chrome) ersetzen. Diese haben ein besserer Verhalten, dass Performance verbessert und Speicherfragmentierung verringert.
Beiträge von bionade24
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
-
-
In einfacheren Worten lässt sich das nicht wirklich formulieren, da müsste ich schon zu einer Erklärung ausholen. Eine Speicherallokation ist wenn ein Programm Speicher ("RAM") reserviert und eine Speicherdeallokation wenn dasselbe Programm reservierten Speicher wieder freigibt. https://de.wikipedia.org/wiki/Allokation_(Informatik)
-
Zumindest unter Linux konnte ich bei sehr großen, wuseligen Maps die Speicher(de)allokation (Wikipedia) als Flaschenhals ausmachen. Nach dem ich das Standard-malloc durch jemalloc ersetzt hatte, ist das Game direkt nach dem Laden deutlich flüssiger und benötigt weniger RAM. Anleitung (für Linux) im Wiki. Ich könnte möglich sein, dass das Problem so auch unter Windows auftritt (muss aber nicht, hab keine Ahnung von Windows malloc, zumindest FF und Chrome nutzten auch unter Windows IIRC jemalloc bzw tcmalloc) und mit jemalloc die Schönbauerfahrung etwas besser wird.
-
Wer Linux nutzt, kann das Standard-malloc durch jemalloc ersetzen und damit die Fragmentierung im RAM deutlich reduzieren, was wiederum die RAM-Nutzung deutlich senkt. Wies geht steht im Wiki.
(Sry fürs wiederbeleben des alten Threads, da dieser aber 2025 noch verlinkt wird, halte ich es für wichtig, die Referenz zu updaten)
-
Moin,
wie löst ihr das Problem, dass alle (mir bekannten) Cargo Terminals keinen eigenen Straßenzugang besitzen und eine LKW-Ladestelle am Flughafen deshalb in der Nähe des Hauptgebäudes sein muss? Oder gibt es doch eine Mod für eine entsprechendes Terminal oder ein kleines/unsichtbares Hauptgebäude?
VG
bionade24
-
Unter Linux liegt der einfach in der Home-/User-Directory, dieser Standort ist eigentlich ein absolutes Unding, ist das auch ein versehentlicher Bug?
-
Hi, ich habe das selbe Problem mit DH-106 's Starship und ebenso kein Problem mit der Avanti. Sobald ich die Beechcraft vom mod.io Ordner in den externe-Mods Ordner kopiert hatte, ist sie aufgetaucht. Spielst du auch unter Linux oder evtl unter macOS?
-
Dass die assertion im C++ Code der Engine ist, da habe ich nicht richtig nachgedacht. Aber ich bin mir weiterhin ziemlich sicher dass wenn du denen Namen der LUA-Api zum Erstellen von Threads in Tpf2 herausfindest und du dann danach in den Modordnern suchst, den Verdacht eingrenzen kannst. Ich hatte mir danach deinen dump einige von mir angeschaut, ich bin nie nichtmal annähernd bei Thread Nr 69 gelandet. Es kann natürlich trotzdem wieder eine falsche Fährte sein, aber ist sicher einen Versuch wert.
-
Einfach den einen Mod-eintrag mit dem Staging-area symbol abwählen und den mit Mod-Ordner Symbol anschalten.
-
Kann es sein, dass du die Single Quotes weggelassen hast? Mein Befehl war rg 'it != components.end()' <optional Ordnername in dem gesucht werden soll, sonst ab hier überall>. Wenn Powershell Single Quotes nicht macht, woran ich mich nicht erinnern kann, dann probiere es doch bitte einmal mit Double Quotes: rg "it != components.end()" <optional Ordnername in dem gesucht werden soll, sonst ab hier überall>
-
Ja, ich nutzte Linux. Aber ich nutze das Tool (und viele andere) genauso auch unter Windows. Scheinbar hatte ich beim Post-Kreieren den Downlad-Link zu ripgrep vergessen anzugeben. Du solltest auf Github ripgrep-14.1.1-x86_64-pc-windows-msvc.zip herunterladen können, die zip-Datei entpacken und dann direkt mit der enthaltenen rg.exec <argumente> loslegen können. Das Programm in the PATH packen, etc. macht nur Sinn wenn du es regelmäßig benutzen möchtest.
-
Es ist sinnvoll es auch mit ripgrep versuchen, da ich weiß wie die Volltextsuche von dem Tool funktioniert, was ich ja auch schon getestet habe. Außerdem ist ripgrep extrem schnell, Explorer verglichen mit ripgrep nicht einmal eine Schnecke.
Auffällig jedenfalls ist, dass die Abstürze nur passieren, wenn ich das Spiel vom "Pause" Modus in den "Play" Modus umschalte.
Das triggert dann wohl die Race Condition in der Mod die zum Use-After-free führt.
Ich würde eher auf eine Skript-mod tippen. Außer es gibt Fahrzeuge mit Lua-Code, der permanent in einer Schleife ausgeführt wird.
-
Wenn die Dateien von E-Citaro aus dem Base game nicht da sind, dann ist deine Spielinstallation beschädigt. Bitte bei Steam mal die Spieldateien überprüfen lassen. Wenn die Fehler neu sind bzw immer wieder kommen, kann es auch sein dass deine SSD oder HDD gerade am sterben ist.
-
Das ist ausgeschlossen. Mit welchem tool hast du gesucht? Ich habe ripgrep benutzt. Mit den 2 Befehlen rg 'it != components.end()' mods und rg 'it != components.end()' 1066780. Das es wahrscheinlich nicht Freestyle Stations ist, habe ich schon wegen dem 69. Thread vermutet. Dass F. S. so viele Threads aufmacht, ist mir nicht bekannt.
-
Bitte beim nächsten mal einen neuen Post erstellen statt an einen existierenden alten Thread heranhängen.
Aus den 4 stdout.txts die ich gelesen habe werde ich nicht schlau, die Enden sehen alle ähnlich zu folgendem aus:
Code
Alles anzeigenres/campaign/era_c/17/info.lua not in file cache! res/campaign/era_c/17/info.lua not in file cache! res/campaign/era_c/18/info.lua not in file cache! res/campaign/era_c/18/info.lua not in file cache! MinidumpCallback: dumpPath "D:/Program Files (x86)/Steam/userdata/8389914/1066780/local/crash_dump/", minidumpId "6c0383a1-e24e-48d1-9f64-3285dc101ee5", succeeded 1 local time is Tue Mar 25 21:06:40 2025 Calling thread crashtrace handlers thread: 17832 (empty) thread: 17912 taskutil.lua - game/res/gameScript/taskutil.lua_update() - mod: "urbangames_campaign_mission_05" version 1 All thread handlers called Minidump Callback An error just occurred.Als 1. würde ich einmal in Steam meine Spieldateien überprüfen/verifizieren lassen und wenn das nicht hilft, würde ich mich mit stdout.txt und .dmp-Datei direkt an Urban Games wenden.
-
Auszug aus dem dump:
Code
Alles anzeigenurban_games/train_fever/src/Lib/renderer/model/VaoManager.cpp:172: const struct VertexBuffers &__cdecl VaoManager::Get(const class ITechnique *,int,int): Assertion `(m_meshes->Get(meshId)->va2vertexAttr.empty() ? m_meshes->Get(meshId)->groups[group].va2compressedData[index].numComp : m_meshes->Get(meshId)->va2vertexAttr[index].numComp) == GetNumComponents(vertexInput.attributes[0].format) * (int)vertexInput.attributes.size()' failed. __CRASHDB_DUMP__ f3113295-e52c-49bc-bb14-68d06bd84036 Attempting to write crash save to "crash_Neu 22_2025-03-26_00-44-33" available disk space: 131538 MB [2025-03-26 00:44:33] Saving to file E:/Steam/userdata/402999803/1066780/local/save/crash_Neu 22_2025-03-26_00-44-33.sav Thread did not respond to ping. Possible hang detected! Thread did not respond to ping. Possible hang detected! Thread did not respond to ping. Possible hang detected! Saving...: 15078.6 ms Additional info extracted from the previous state: Uncaught exception while in class UI::CSelector Thread did not respond to ping. Possible hang detected! Uncaught exception while in class UI::CSelector Exception type: Fatal error Details: Assertion Failure: Assertion `(m_meshes->Get(meshId)->va2vertexAttr.empty() ? m_meshes->Get(meshId)->groups[group].va2compressedData[index].numComp : m_meshes->Get(meshId)->va2vertexAttr[index].numComp) == GetNumComponents(vertexInput.attributes[0].format) * (int)vertexInput.attributes.size()' failed. Minidump: E:/Steam/userdata/402999803/1066780/local/crash_dump/f3113295-e52c-49bc-bb14-68d06bd84036.dmp In file: urban_games/train_fever/src/Lib/renderer/model/VaoManager.cpp:172 In function: const struct VertexBuffers &__cdecl VaoManager::Get(const class ITechnique *,int,int) __CRASHDB_CRASH__ struct AssertException: urban_games/train_fever/src/Lib/renderer/model/VaoManager.cpp:172: const struct VertexBuffers &__cdecl VaoManager::Get(const class ITechnique *,int,int): Assertion `(m_meshes->Get(meshId)->va2vertexAttr.empty() ? m_meshes->Get(meshId)->groups[group].va2compressedData[index].numComp : m_meshes->Get(meshId)->va2vertexAttr[index].numComp) == GetNumComponents(vertexInput.attributes[0].format) * (int)vertexInput.attributes.size()' failed.Sieht für mich nach einer mod mit beschädigten meshes aus.
-
In der stdout.txt stehen keine Fehler im Zusammenhang mit der der Workshop-ID des Mods. Außerdem funktioniert die Mod bei mir einwandfrei. Hast du schon abgecheckt, ob:
- Der Bus in deinem aktuelle Spieljahr schon verfügbar ist.
- Der Bus in deinem aktuellen Spieljahr noch verfügbar ist.
- Der Bus in den von dir gewählten Fahrzeugregionen angeboten wird? (Vermute mal der Bus ist "europäisch")
Abseits davon scheinen bei einigen anderen Mods so einige Abhängigkeiten zu fehlen, du solltest diese entweder nachinstallieren oder die Mods entfernen.
-
Ok, hab mir gerade mal angeschaut.
- Es ist Tpf2, schätze mal das ist ein Fehler, dass es in Tpf1 gelandet ist? @Mods könnt ihr den Thread bitte an den richtigen Ort verschieben?
- Bei dem Vergleich in der Assertion in der Fehlermeldung wird, so wie ich das verstehe, von der Lua-API auf eine Speicherstelle zugegriffen, die eigentlich nicht zum dem Array (wahrscheinlich components, "it" steht vermutlich für iterator) gehört.
- Das ganze findet in einem Extra-Thread, nicht dem Haupt-thread des Spiels statt. Aufgrund der Nr 69 des Threads gehe ich mal davon aus, dass die problematische Mod sehr gerne neue Threads erstellt. Wenn man in dem Code der von dir installierten Mods nach Mods die Threads erstellen sucht, kann man die Menge der zu verdächtigenden Mods evtl eingrenzen.
- Außerdem solltest du im Code auch nach dem in der Fehlermeldung angezeigten Code-Schnipsel it != components.end() suchen. Evtl ist das ja nur bei 1 oder 2 Mods enthalten.
Auszug aus dem Beginn des dumps:
Code
Alles anzeigenOperating system: Windows NT 10.0.26100 CPU: amd64 family 25 model 97 stepping 2 16 CPUs Crash reason: EXCEPTION_NONCONTINUABLE_EXCEPTION Crash address: 0x0000000000000000 Crashing instruction: `cmp qword [rdi + 0x18], 0x0` Memory accessed by instruction: 0. Address: 0x0000002fa02fee78 Size: 8 Process uptime: 2202 seconds Thread 69 (crashed) 0 TransportFever2.exe + 0x26aee9e rax = 0x0000002fa02fe8b0 rdx = 0x0000002fa02fee60 rcx = 0x0000002fa02fe8b0 rbx = 0x0000000000000027 rsi = 0x000001f276818ed0 rdi = 0x0000002fa02fee60 rbp = 0x0000002fa02feea0 rsp = 0x0000002fa02fe7d0 r8 = 0x00000000000004d0 r9 = 0x0000000000000000 r10 = 0x000001ec71b60000 r11 = 0x0000002fa02fe8b0 r12 = 0x00007ff766bd2150 r13 = 0x00007ff7657b834c r14 = 0x0000002fa02ff080 r15 = 0x0000000000000000 rip = 0x00007ff764f4ee9e Found by: given as instruction pointer in context 1 ntdll.dll + 0x1be85 rbp = 0x0000002fa02feea0 rsp = 0x0000002fa02fe7f0 rip = 0x00007ffb2a5dbe86 Found by: stack scanning ....Ich hab mal bei mir in den Mods gesucht, it != components.end() ist bei allen von mir abonnierten oder heruntergeladenen Mods nur in Freestyle Stations enthalten. https://steamcommunity.com/wor…iledetails/?id=2363493916
-
Sieht für mich auf den 1. Blick auf wie NIMBY Rails aber für Straßen.
-
Moin, könntet ihr bitte auch noch die in der Fehlermeldung angegebenen .dmp-Dateien hochladen? Da drin könnte evtl mehr zu Ursache zu finden sein.