Topic: Cheat-Codes für Einzelspieler?
Nordfriese |
Posted at: 2021-10-03, 17:52
Die Leaks aus SDL und diversen Graphiktreibern sind sämtlich in Third-Party-Bibliotheken auf die wir keinen Einfluss haben. Außerdem tritt manchmal ein größeres Leak aus Eris/persistence.cc (ebenfalls 3rd-Party-Code) auf. Alle drei sind seit Langem bekannt, sind jedoch kein Bug in Widelands sodass wir leider nichts dagegen tun können.
Top Quote |
dr1fter Topic Opener |
Posted at: 2021-10-03, 21:40
Ja, anhand der Namen, bzw. Dateipfade der fraglichen "Verursacher-Libs" war mir schon klar, dass es sich nicht um unmittelbar aus den widelands-Quellen stammenden Code handelt; gelegentlich werden Bugs indessen ja durch bestimmte Verwendung (die bspw. zum Durchlaufen relevanter Codepfade (ggf. mit schädlichen Argumenten) ausgelöst (wie gesagt: Noobie..). Wenn speziell diese Speicherlecks (oder was ASan dafür hält - afaik haben solche Werkzeuge ja auch nicht immer Recht..) bereits bekannt sind, gibt es hier vermutlich keinen Grund, das weiterzuverfolgen. An zwei Stellen sind mir übrigens asserts um die Ohren geflogen:
dann Folgefehler (nehme ich an), nachdem ich das fragliche assert mit einem try-catch(...) eingeschlossen hatte; ich dachte zumindest, dass das nicht (sofort) fatale Folgen hat, wenn Fehler im Destruktor ignoriert..:
Da gehe ich allerdings wirklich mal davon aus, dass das halt ein Entwicklungs-Artefakt ist (trat im Zusammenhang mit der Warenbestandseditierung auf). Mit etwas durchsterben habe ich die Mission dann noch erfolgreich geschafft Um Missverständnissen vorzubeugen: ich erwarte keinen Support oder Hilfe (für die o.g. Fehler), und mir ist schon klar, dass ich wenn ich will, dass es "einfach nur läuft" halt auf einen freigegebenen Stand zurückgehen, oder selbst fixen muss Edited: 2021-10-03, 21:41
sapere aude! user, advocate, and sometimes developer of free (as in freedom) software Top Quote |
dr1fter Topic Opener |
Posted at: 2021-10-03, 23:02
was mir übrigens gerade noch aufgefallen ist: ich hatte (eben nochmal nachgeschaut) ohne ASan gebaut ( update: im build.ninja steht:
--> ja hmpf. wie's aussieht, hängt es wohl daran, dass die reihenfolge im ARGV darüber entscheidet, wie USE_ASAN gesetzt wird:
..aber wie ich gerade gesehen habe, weist die online-Hilfe darauf auch hin (wer lesen kann, und es auch tut, ist wie so oft klar im Vorteil) - seufz Edited: 2021-10-03, 23:17
sapere aude! user, advocate, and sometimes developer of free (as in freedom) software Top Quote |
Nordfriese |
Posted at: 2021-10-04, 11:11
Bzgl ASan: Also die ASan hat laut Dokumentation angeblich garantiert immer Recht wenn es Memory Leaks meldet. Allerdings soll es angeblich eine Möglichkeit geben, Leaks aus 3rd-Party-Bibliotheken zu unterdrücken … das muss ich mir mal anschauen. Bezüglich asserts: Das Texture-Assert ist ein Bug, der im Nachgang des neuen Multithreading-Features noch manchmal nicht-reproduzierbar auftaucht (lies: meine Schuld ), und andere Asserts sind mit hoher Wahrscheinlichkeit auch damit verwandt. Falls du diese Asserts öfter siehst könntest du versuchen sie in
Die Backtrace beider Threads wäre zum Debuggen enorm hilfreich Edited: 2021-10-04, 11:11
Top Quote |
dr1fter Topic Opener |
Posted at: 2021-10-04, 11:33
tatsächlich! Ich hatte - nachdem um die 300 compile-units neugebaut worden sind - fälschlicherweise angenommen, dass das Abschalten von ASan wirksam geworden sei (stutzig gemacht hatte mich indessen, dass CMAKE_EXE_LINKER_FLAGS im CMakeCache.txt trotzdem noch
allerdings einer, den ihr dokumentiert habt (steht in der online-hilfe direkt beim -a dran..):
kann mal schauen, ob ich eine Korrektur dazu als PR einreiche, wenn gewünscht? So ein paar Zeilen Bourne Shell Script bekomme ich sicherlich noch hin
ah, danke für die Hinweise/Erklärungen. Da ich (denke ich) den Fehler reproduzieren kann, schaue ich mal, ob ich demnächst die Muße finde, die die Backtraces nachzuliefern (wollte eh' schon länger mal etwas in's Debuggung mit gdb einsteigen..) sapere aude! user, advocate, and sometimes developer of free (as in freedom) software Top Quote |
Nordfriese |
Posted at: 2021-10-04, 11:59
Gerne Top Quote |
Caldessa |
Posted at: 2021-10-06, 11:42
Hallo zusammen. Ich würde gerne auch ein wenig rumtüfteln, habe aber so leider gar keine Ahnung wie ich vorgehen muss. Gibts da eine "einfache" Möglichkeit und Beschreibung dazu? Gruss Caldessa Coming directly from Settlers 2 Top Quote |
dr1fter Topic Opener |
Posted at: 2021-10-06, 13:23
Woran möchtest du denn knobeln? Am Build, oder eher am "richtigen" Code? Die Quellen findest du auf github.com: https://github.com/widelands bzw. https://github.com/widelands/widelands Im CONTRIBUTING.md wird auf das widelands-wiki verwiesen, in dem grob umrissen wird, wie man sich beteiligen kann: https://www.widelands.org/wiki/Contribute/ Falls du dich tatsächlich speziell für den Build interessierst (das ist ja typischerweise eher ein Rand-Thema^^), könnte vermutlich die Lektüre der Dokumentationen zu CMake und ninja helfen (eher CMake): https://cmake.org/ https://cmake.org/cmake/help/v3.7/generator/Ninja.html Wo man eine Referenzdokumentation zur Bourne Shell findet, weiß ich nicht (man findet per Google einiges auf diversen Universitäten). Allerdings gibt es die Referenzdokumentation zur GNU Bourne-Again-Shell (aka bash): https://www.gnu.org/software/bash/manual/bash.html Caveat: das shebang im compile.sh verweist explizit auf die bourne-shell. Daher nehme ich an, dass es unerwünscht ist, bash-spezifika zu verwenden (bash ist eine zur bourne-shell kompatible shell mit zu bourne-shell inkompatiblen Erweiterungen (bspw. [[ vs [). Weiß nicht, ob ich dir damit helfen konnte. Vllt noch ein Hinweis: wenn du vorhast, unter Windows zu entwickeln: davon kann ich aus persönlicher mehrjähriger Erfahrung nur abraten (man macht sich das Leben da schon unnötig schwer..) sapere aude! user, advocate, and sometimes developer of free (as in freedom) software Top Quote |
hessenfarmer |
Posted at: 2021-10-06, 14:03
Mit den richtigen Tools und dem richtigen Setup geht das einwandfrei. Zumindest arbeite ich so. Allerdings gebe ich zu, dass es unter linux ggf einfacher ist. Falls hier Beratungsbedarf ist einfach melden. Top Quote |
hessenfarmer |
Posted at: 2021-10-06, 14:06
Wie dr1fter schon schrieb, kommt es darauf an was du ausprobieren möchtest. Falls es um "Cheats" geht, wäre eine Beschäftigung mit unserem Lua Interface hilfreich. (https://www.widelands.org/documentation/lua_index/) Edited: 2021-10-06, 14:07
Top Quote |