Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Ergebnis 1 bis 10 von 10
  1. Beiträge anzeigen #1 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline

    Abstürze zCParser::DoStack()+2877, (wenn Hero tot ist und Spiel geladen wird?)

    Hi!
    Absturz in video hier zu sehen:
    https://youtu.be/Aqy4IDEkVk0?t=6666
    bei 1:51:08

    Von anderem Spieler habe ich report mit gleicher Stelle und Adresse(0079249D), aber anderem callstack:

    Code:
    //======================UNHANDLED EXCEPTION======================
    Gothic2.exe caused a EXCEPTION_ACCESS_VIOLATION in module Gothic2.exe at 0023:0079249D, zCParser::DoStack()+2877 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1405+40 byte(s)
    EAX=4A6CFFFD  EBX=00000000  ECX=00AB4118  EDX=2A0CF3ED  ESI=00AB4118
    EDI=00AB4108  EBP=00AB40C0  ESP=0135F680  EIP=0079249D  FLG=00010202
    CS=0023   DS=002B  SS=002B  ES=002B   FS=0053  GS=002B
    //=====================  INFOS =========================
    Gothic II - 2.6 (fix), Parser Version: 50
    User:  konst,  CPUType: 586,  Mem: 2048 MB total, 2048 MB free
    Camera: Pos(28951.2852/-4030.55493/11586.0439), At(0.491448969/-0.195411414/0.848700345)
    //====================== CALLSTACK ========================
    0023:0079249D (0x0027AE75 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2877 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1405+40 byte(s)
    0023:00792504 (0x0027AE75 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x0027DD1C 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x0027B5FF 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x0027E7AA 0x28DD66E0 0x00AB4118 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x00286A73 0x00000000 0x4E582FD0 0x21E337F0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792CBF (0x21E337F0 0x00000000 0x4E582FD0 0x21E337F0) Gothic2.exe, zCParser::CallFunc()+719 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1551
    0023:0074C06B (0x01420000 0x00000000 0x5FD063E8 0x00000001) Gothic2.exe, oCNpc::OnMessage()+4171 byte(s), P:\dev\g2addon\release\Gothic\_ulf\oNpc.cpp, line 10770+8 byte(s)
    0023:6C017A51 (0x41140396 0x3F44F9B8 0x0082E6F0 0x41037F3F) SHW32.DLL
    //=====================================================
    Ich hatte mal versucht mir das in IDA anzuschauen, verstehe aber nicht was da passiert.
    Wäre für Hilfe dankbar.

    edit: reproduzieren kann ich die Abstürze nicht

  2. Beiträge anzeigen #2 Zitieren
    Ritter Avatar von Kirides
    Registriert seit
    Jul 2009
    Ort
    Norddeutschland
    Beiträge
    1.781
     
    Kirides ist offline
    Der Crash scheint aus "oCNpc::EV_PlayAni(this,(oCMsgConversation *)param_1)" und scripten (DoStack) zu kommen.

    man müsste mal die Symbole des Kompilats durchchecken und gucken wo genau der Fehler auftritt.

    Hier im Forum ist irgendwo eine Anleitung wie man "DoStack" interpretieren kann, um an die Methoden dran zu kommen

    EDIT: https://forum.worldofplayers.de/foru...1#post25925207
    ^ Da ist die Anleitung
    Geändert von Kirides (08.06.2021 um 08:30 Uhr)

  3. Beiträge anzeigen #3 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Oh ja, danke.
    Das hier
    https://forum.worldofplayers.de/foru...1#post25925207
    ist wahrscheinlich was du meintest, sieht sehr hilfreich aus.

  4. Beiträge anzeigen #4 Zitieren
    Veteran Avatar von N1kX
    Registriert seit
    Aug 2018
    Ort
    Serov
    Beiträge
    643
     
    N1kX ist offline
    It is also important what version is used in the video, whether additional patches are installed. Because if you translate the addresses and try to find the approximate location of the error in the dat file, then nothing will work on version 3.0.14.

    On 3.0.14, the last function has the value 2612459 (func void init_dragonisland() )
    Whereas the error starts its way with 2648691 ?

  5. Beiträge anzeigen #5 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Die Anleitung zum Verstehen von Skript-verwandten Access Violations ist hier sicher eine gute Idee, da du die Access Violation nicht selbst reproduzieren kannst.

    In anderen Fällen, in denen du die Access Violation selbst reproduzieren kannst, kannst du einen Patch verwenden, den ich vor einiger Zeit mal geschrieben hatte. Ich hatte ihn nicht fertig gestellt. Geplant war, das Skript im Workaround-Helper mit aufzunehmen. Vielleicht ergibt sich ja noch einmal irgendwann die Gelegenheit. Auf die Gefahr hin, dass ich nie dazu komme, lohnt es sich nicht das Skript auf meinem Computer vergammeln zu lassen. Deshalb teile ich es mal hier.

    Der Patch soll "Human Readable Access Violations" erstellen, wenn der Fehler seinen Ursprung in Daedalus hat. Besonders ausgereift und wirklich leserlich ist es noch nicht geworden und funktioniert glaube ich noch nicht richtig für Gothic 1. Ich habe jetzt auch nicht mehr reingeschaut und weiß nicht, wie sauber der Patch geschrieben ist. Ich glaube einiges war noch recht unsauber zusammen geworfen und die Byte-offsets innerhalb der Funktionen sind glaube ich falsch.

    Im Grunde tut der Patch einfach nur was in der der oben verlinkten Anleitung steht. Er fügt die Symbolnamen in der AV hinzu - wie gesagt, bisher noch nicht so geschickt formatiert. Dabei ist zu bedenken, dass das eigentlich unsinnig ist, da Ikarus bereits einen "vollständigeren" Daedalus Stacktrace im zSpy ausgibt. Im Endeffekt ist der Patch also eher eine schlechtere Variante des Ikarus Stacktraces. Der Vorteil ist natürlich, dass man (einige der) Informationen direkt in der Access Violation sieht.

    [Bild: hravtest.png]


    HRAV.vdf
    Ich denke der Patch sollte stabil genug sein, um damit spielen zu können (zumindest G2). Das würde erlauben, dass AV-Screenshots von Spielern, dem Modteam auf Anhieb mehr sagen.

  6. Beiträge anzeigen #6 Zitieren
    Ritter Avatar von Kirides
    Registriert seit
    Jul 2009
    Ort
    Norddeutschland
    Beiträge
    1.781
     
    Kirides ist offline
    @mud-freak
    Das Ding ist ja mal grandios für so ziemlich jede Mod!

    Ikarus Stacktraces sind zwar super, aber nur die wenigsten Spieler, wenn überhaupt, schicken einen Ikarus Stacktrace aus dem zSpy ins Forum, sondern eher noch (ein Bild :/) einer AV.

    ich werde den Patch definitiv "pflicht" für meine Tester machen in Zukunft, dann muss ich nicht mehr händisch alles durch parsen (wobei ich dafür inzwischen auch schon ein kleines hilfs-tool habe...), ist einfach netter direkt die Symbole sehen zu können

  7. Beiträge anzeigen #7 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Ich habe mich mal dran gesetzt, werde aber aus dem Ergebnis nicht so recht schlau:

    1. Access Violation
    diese hier
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    //======================UNHANDLED EXCEPTION======================
    Gothic2.exe caused a EXCEPTION_ACCESS_VIOLATION in module Gothic2.exe at 0023:0079249D, zCParser::DoStack()+2877 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1405+40 byte(s)
    EAX=4A6CFFFD  EBX=00000000  ECX=00AB4118  EDX=2A0CF3ED  ESI=00AB4118
    EDI=00AB4108  EBP=00AB40C0  ESP=0135F680  EIP=0079249D  FLG=00010202
    CS=0023   DS=002B  SS=002B  ES=002B   FS=0053  GS=002B
    //=====================  INFOS =========================
    Gothic II - 2.6 (fix), Parser Version: 50
    User:  konst,  CPUType: 586,  Mem: 2048 MB total, 2048 MB free
    Camera: Pos(28951.2852/-4030.55493/11586.0439), At(0.491448969/-0.195411414/0.848700345)
    //====================== CALLSTACK ========================
    0023:0079249D (0x0027AE75 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2877 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1405+40 byte(s)
    0023:00792504 (0x0027AE75 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x0027DD1C 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x0027B5FF 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x0027E7AA 0x28DD66E0 0x00AB4118 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x00286A73 0x00000000 0x4E582FD0 0x21E337F0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792CBF (0x21E337F0 0x00000000 0x4E582FD0 0x21E337F0) Gothic2.exe, zCParser::CallFunc()+719 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1551
    0023:0074C06B (0x01420000 0x00000000 0x5FD063E8 0x00000001) Gothic2.exe, oCNpc::OnMessage()+4171 byte(s), P:\dev\g2addon\release\Gothic\_ulf\oNpc.cpp, line 10770+8 byte(s)
    0023:6C017A51 (0x41140396 0x3F44F9B8 0x0082E6F0 0x41037F3F) SHW32.DLL
    //=====================================================


    Spieler sagt er hat mit Version 304 gespielt (und das macht auch Sinn vom Datum her).
    Wie N1kX schon schreibt,
    Zitat Zitat von N1kX Beitrag anzeigen
    It is also important what version is used in the video, whether additional patches are installed. Because if you translate the addresses and try to find the approximate location of the error in the dat file, then nothing will work on version 3.0.14.

    On 3.0.14, the last function has the value 2612459 (func void init_dragonisland() )
    Whereas the error starts its way with 2648691 ?
    liegen die Zahlen außerhalb der Dirty Swamp Funktionen:
    DirtySwamp_304_GOTHICdat.zip
    Code:
    Letzte Funktion in 304_gothic.dat ist init_dragonisland (2598962)
    
    hex: 27AE75
    2600565
    
    hex: 27AE75
    2600565
    
    hex: 27DD1C
    2612508
    
    hex: 27B5FF
    2602495
    
    hex: 27E7AA
    2615210
    
    hex: 286A73
    2648691
    Alle Zahlen sind höher als init_dragonisland (2598962). Absturz also in patch der Skriptcode hinten an hängt?
    (leider weiß ich nicht mit welchen patches/plugins der Spieler gespielt hat)



    2. Access Violation
    video (https://youtu.be/Aqy4IDEkVk0?t=6666)

    Ich gehe davon aus das der Spieler mit 3010 gespielt hat (macht vom Datum her Sinn, und ist auch das einzige Kompilat wo die hex Zahlen als tokens findbar sind):
    DirtySwamp_3010_GOTHICdat.zip
    Code:
    hex: 1775
    6005
    V3010: mem_readint erste Zeile (pushv    mem_readint.address
    )
    
    hex: 1775
    6005
    V3010: mem_readint erste Zeile (pushv    mem_readint.address
    )
    
    hex: 4617
    17943
    V3010: str_toint erste zeile (pushv    str_toint.str
    )
    
    hex: 15A11
    88593
    V3010: _pm_unarchive erste zeile (pushv    ÿ10469, "=== PermMem::UnArchive ==="
    )
    
    hex: 25048
    151624
    V3010: _br_loadgame erste Zeile (call _br_getselectedslot)
    
    hex: 27087
    159879
    V3010: lego_initalways erste Zeile (pushv lego_initalways.f)
    
    hex: 274B7
    160951
    V3010: lego_init erste Zeile (pushv lego_init.flags)
    Passt zum Absturz Zeitpunkt im Video (laden eines savegames), aber mir ist unklar wie es an der Stelle zu Problemen kommen kann.

  8. Beiträge anzeigen #8 Zitieren
    Ritter Avatar von Kirides
    Registriert seit
    Jul 2009
    Ort
    Norddeutschland
    Beiträge
    1.781
     
    Kirides ist offline
    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Ich habe mich mal dran gesetzt, werde aber aus dem Ergebnis nicht so recht schlau:

    ...
    Es ist praktisch Pflicht die Umgebung des Spielers zu kennen (verwendete Patches, Plugins, Ninja, Union, Systempack Version) damit du dieses ggf. nachstellen kannst.

    zu 1 & 2. Sieht so aus, als würde ein Patch versuchen seine scriptsave zu laden und dabei abzustürzen.

    In beiden Fällen kommen die Fehler von externen Patches die Probleme beim Laden haben. Ggf. ein Patch versucht beim Unarchiven von etwas bestimmte werte zu manipulieren oder anderes.

  9. Beiträge anzeigen #9 Zitieren
    Provinzheld Avatar von TopLayer
    Registriert seit
    Nov 2020
    Beiträge
    286
     
    TopLayer ist offline
    In the first case, I have reason to believe that the stack was like this:
    Code:
    MEM_READINT
    MEM_READINT
    STR_TOINT
    MEM_CALLBYPTR
    MEM_CALLBYID
    _AI_FUNCTION_EVENT
    It looks like MEM_CALLBYPTR doesn't create a stack frame, so I don't know which callback function was executed (one of those passed to AI_Function_*).

  10. Beiträge anzeigen #10 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    The player with access violation 1
    (this one:
    Spoiler:(zum lesen bitte Text markieren)
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    //======================UNHANDLED EXCEPTION======================
    Gothic2.exe caused a EXCEPTION_ACCESS_VIOLATION in module Gothic2.exe at 0023:0079249D, zCParser::DoStack()+2877 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1405+40 byte(s)
    EAX=4A6CFFFD  EBX=00000000  ECX=00AB4118  EDX=2A0CF3ED  ESI=00AB4118
    EDI=00AB4108  EBP=00AB40C0  ESP=0135F680  EIP=0079249D  FLG=00010202
    CS=0023   DS=002B  SS=002B  ES=002B   FS=0053  GS=002B
    //=====================  INFOS =========================
    Gothic II - 2.6 (fix), Parser Version: 50
    User:  konst,  CPUType: 586,  Mem: 2048 MB total, 2048 MB free
    Camera: Pos(28951.2852/-4030.55493/11586.0439), At(0.491448969/-0.195411414/0.848700345)
    //====================== CALLSTACK ========================
    0023:0079249D (0x0027AE75 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2877 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1405+40 byte(s)
    0023:00792504 (0x0027AE75 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x0027DD1C 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x0027B5FF 0x00AB4108 0x00000000 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x0027E7AA 0x28DD66E0 0x00AB4118 0x00AB40C0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792504 (0x00286A73 0x00000000 0x4E582FD0 0x21E337F0) Gothic2.exe, zCParser::DoStack()+2980 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1415
    0023:00792CBF (0x21E337F0 0x00000000 0x4E582FD0 0x21E337F0) Gothic2.exe, zCParser::CallFunc()+719 byte(s), P:\dev\g2addon\release\ZenGin\_ulf\zParser.cpp, line 1551
    0023:0074C06B (0x01420000 0x00000000 0x5FD063E8 0x00000001) Gothic2.exe, oCNpc::OnMessage()+4171 byte(s), P:\dev\g2addon\release\Gothic\_ulf\oNpc.cpp, line 10770+8 byte(s)
    0023:6C017A51 (0x41140396 0x3F44F9B8 0x0082E6F0 0x41037F3F) SHW32.DLL
    //=====================================================
    )
    told me that he used Systempack 1.8.
    Without ninja and any script patches.

    Zitat Zitat von TopLayer Beitrag anzeigen
    In the first case, I have reason to believe that the stack was like this:
    Code:
    MEM_READINT
    MEM_READINT
    STR_TOINT
    MEM_CALLBYPTR
    MEM_CALLBYID
    _AI_FUNCTION_EVENT
    It looks like MEM_CALLBYPTR doesn't create a stack frame, so I don't know which callback function was executed (one of those passed to AI_Function_*).
    Best i can think of, is to create some sort of logging and hope that the crash happens to some other player playing the newer version with logging.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide