Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

emu64 stürzt manchmal beim Beenden(?) ab #223

Open
mrdudz opened this issue Mar 20, 2022 · 16 comments
Open

emu64 stürzt manchmal beim Beenden(?) ab #223

mrdudz opened this issue Mar 20, 2022 · 16 comments

Comments

@mrdudz
Copy link

mrdudz commented Mar 20, 2022

Ich habe die Testbench jetzt mal über nacht laufen lassen... dabei sieht man dass der Emu manchmal, in einem zufälligen Muster, abstürzt. Ich rate mal dass das beim Beenden passiert, dann da hatten wir sowohl bei VICE als auch bei anderen Emulatoren schon das gleiche Problem, idr irgendwelche Unsauberkeiten beim Freigeben von Speicher - oder der Synchronisation von Threads. Wenn man den gleichen Test dann nochmal startet funktioniert es in der Regel, es liegt also nicht am Test selber.

Leider der Worst-Case zum Debuggen, ich weiss :)

Hier mal ein Beispiel einer vollständigen Kommandozeile:

emu64 --reset-ini --video-filter-off --double-texture-off --set-palette 7 --warp --debugcart --nosplash --minimized --limitcycles 10000000 --autostart ../VICII/spritecollisions//sprite-sprite-collision-cycle.prg 1> /dev/null 2> /dev/null

(Das war jetzt ohne deine letzten Änderungen - das bastel ich im Laufe des Tages rein und lass dann diese Nacht nochmal laufen :))

@ThKattanek
Copy link
Owner

Kann ich bestätigen, hatte das jetzt ein oder zweimal die Nacht beim testen. "Speicherzugriffsfehler" Da muss ich das loggen Mal erweitern und hoffen das es zumindest immer dann an der selben Stelle ist. Irgendwo läuft bestimmt noch ein Thread und ich lösche schon fleissig Speicher im Hauptthread. Werde das auch noch hinbekommen. Bin gerade wieder im Flow 😁

@ThKattanek
Copy link
Owner

Die ersten 1000 mal lief er durch, na geil wird ja Lustig. Werde aber mal die paramter anpassen. Jetzt werde ich mal --minimized dazu nehmen.

#!/bin/bash

counter=1
while [ $counter -le 1000 ]
do
    echo "Test Nr: " $counter
    ./emu64 --nosplash --limitcycles 5000000 --warp
    ((counter++))
    echo "-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+"
done

@ThKattanek
Copy link
Owner

Evtl. hängt es ja mit dem --exitscreenshot zusammen. Naja, da hilft nur geduldiges testen.

@ThKattanek
Copy link
Owner

mit dem Aufruf waren es bei 1000 Starts 12 Abstürze. Das ganze läuft jetzt mit --nogui. Mal sehen wie sich das verhält.

./emu64 --nosplash --minimized --limitcycles 5000000 --warp >> ./emu64.log # 12 Abstürze

@ThKattanek
Copy link
Owner

Ich sag mal vorsichtig es könnte an --minimized liegen. Mit dem Aufruf waren es bei 1000 Starts 0 Abstürze. Also mit --nogui kein einziger bei 1000. Teste gleich noch mit --minimized als Gegenkontrolle.

./emu64 --nosplash --nogui --limitcycles 5000000 --warp >> ./emu64.log # 0 Abstürze

@ThKattanek
Copy link
Owner

ThKattanek commented Mar 20, 2022

Der zweite Durchlauf mit --minimized waren es lediglich 2 Abstürze auf 1000 Starts. Könnte also auch bei --nogui Zufall gewesen sein das da kein Absturz war.
Werde mal dein Beispiel von oben nehmen aber mit --nogui und --exitscreenshot

@ThKattanek
Copy link
Owner

jetzt läuft dieser Test. Bin mal gespannt.

#!/bin/bash

counter=1
while [ $counter -le 1000 ]
do
    echo "Test Nr: " $counter >> ./emu64.log
    ./emu64 --reset-ini --video-filter-off --double-texture-off --set-palette 7 --warp --debugcart --nosplash --nogui --exitscreenshot ./screenshots/pic_$counter.png --limitcycles 10000000 --autostart ./sprite-sprite-collision-cycle.prg 1> /dev/null 2> /dev/null >> ./emu64.log
    ((counter++))
    echo "-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+" >> ./emu64.log
done

@ThKattanek
Copy link
Owner

ThKattanek commented Mar 20, 2022

Das obige Skript lief jetzt auch ohne Abstürze durch und erzeugte auch 1000 Screenshots. Morgen werde ich das alles noch mal länger testen. Aber mein jetzige Fazit lautet, das wahrscheinlich --minimized für die sporadischen Abstürze verantwortlich ist. Auch weil die Abstürze immer vor dem Aufruf des Destructors der MainWindow statt fand, also doch nicht beim beenden.

@mrdudz
Copy link
Author

mrdudz commented Mar 20, 2022

Ich hab hier einen der zuverlässig abstürzt:

emu64 --reset-ini --debugcart --mount-crt ../C64/carts/supergames//supergames.crt

und: ohne --debugcart geht es

@mrdudz
Copy link
Author

mrdudz commented Mar 20, 2022

Achja, und beim Durchlauf der Testsuite gab es noch immer eine Hand voll Abstürze, bis auf den oben immer sporadisch (also funktionierte dann beim zweiten mal) - diesmal nur mit --nogui und ohne --minimize und --nosplash

@ThKattanek
Copy link
Owner

ThKattanek commented Mar 21, 2022

Ich hab hier einen der zuverlässig abstürzt:

Gut, den schaue ich mir genauer an. Ansonsten muss ich weitersuchen :)

@ThKattanek
Copy link
Owner

Gerade bemerkt das Emu64 nicht richtig beendet wird wenn der WARP Modus aktiviert ist. Jedoch im normalen Modus also nicht mit--nogui. Evtl. gibt es da einen Zusammenhang. Muss ich ab prüfen.

@ThKattanek
Copy link
Owner

Es ist so das Emu64 beim beenden hängen bleibt wenn im C64 Screen per HotKey (Alt+W) der Warp Modus aktiviert wurde. Wird das per Speed Window gemacht, wird Emu64 auch ordentlich beendet. Wird der Warp Modus beim Start mit über die Kommandozeile Übergeben wird Emu64 bei aktivierten Warp auch ordentlich beendet. Denke das hat dann doch nichts mit dem Problem hier zu tun. Werde dieses Problem von hier abkoppeln.

ThKattanek added a commit that referenced this issue Sep 15, 2022
Mutex Behandlung aus EnableWarpMode entfernt, die Situation scheint
etwas besser zu sein. Das Problem mit den sporadischen Abstützen bleibt
aber vorerst bestehen, wobei sich hier ein Muster ergibt.

Diese hier stürtzen besonders gerne und häufig ab ...

./testbench.sh emu64 cpujam

// jamirq + jamnmi
./testbench.sh emu64 irqdma
./testbench.sh emu64 CIA-AcountsB
@ThKattanek
Copy link
Owner

ThKattanek commented Sep 15, 2022

Mutex Behandlung aus EnableWarpMode entfernt, die Situation scheint
etwas besser zu sein. Das Problem mit den sporadischen Abstützen bleibt
aber vorerst bestehen, wobei sich hier bei mir ein Muster ergibt.

Diese hier stürzen besonders gerne und häufig ab ...

./testbench.sh emu64 cpujam // jamirq + jamnmi
./testbench.sh emu64 irqdma
./testbench.sh emu64 CIA-AcountsB

@mrdudz
Copy link
Author

mrdudz commented Sep 16, 2022

/testbench.sh emu64 cpujam // jamirq + jamnmi

vorsicht - DER Test MUSS abstürzen :)

@ThKattanek
Copy link
Owner

Ja DER Test aber doch nicht mit Emu64 zusammen ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants