Java ImGui Error EXCEPTION_ACCESS_VIOLATION?
Ich habe ein Tutorial von GamesWithGabe geschaut (2d game Engine) und habe beim Imgui part einen Fehler bekommen. Ich musste vom Tutorial schon vieles ändern, wegen neuen Versionen. Jetzt bekomme ich beim Aufstartet folgenden Error:
08:38:22: Executing ':Main.main()'...
> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :Main.main() FAILED
Hello LWJGL 3.3.6+1!
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffbcc295071, pid=7900, tid=15668
#
# JRE version: OpenJDK Runtime Environment Temurin-21.0.6+7 (21.0.6+7) (build 21.0.6+7-LTS)
# Java VM: OpenJDK 64-Bit Server VM Temurin-21.0.6+7 (21.0.6+7-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# C [igxelpicd64.dll+0xd45071]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\dev\Java\SuperMariusImGui\JAVA_Loic_Steiner_SuperMarioProjekt\hs_err_pid7900.log
#
# If you would like to submit a bug report, please visit:
# https://github.com/adoptium/adoptium-support/issues
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
2 actionable tasks: 1 executed, 1 up-to-date
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':Main.main()'.
> Process 'command 'C:\Program Files\Eclipse Adoptium\jdk-21.0.6.7-hotspot\bin\java.exe'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 1s
08:38:24: Execution finished ':Main.main()'.
Wieso bekomme ich diesen Error und wie kann ich den Fixen?? Ich brauche wirklich Hilfe, ich mache ein Projekt und muss Freitag abgeben.
1 Antwort
Ich bkienne mich mit Gradle nicht aus, aber soweit ich das sehe wurde bereits Code ausgeführt, der das LWJGL-API verwendet (die Versionsnummer wurde gedruckt).
Eine EXCEPTION_ACCESS_VIOLATION oder unter Linux ein SEGFAULT sind in LWJGL recht häufige Fehler und entsprechend in etwa einer NullpointerException, nur dass der Fehler auf der C++-Seite stattfand, die hinter dem LWJGL-API steckt.
Im wesentlichen heißt das: Entweder ist ein Pointer, den du an das API übergeben hast, ein Nullpointer oder ein anderer invalider Pointer (uninitialisierte Daten beispielsweise) oder irgendwo steht etwas anderes drinnen, als drinnenstehen sollte.
Das finden des Fehlers ist etwas schwieriger, da der Code teilweise parallel läuft oder es erst später in der Ausführung zu Probleme kommt.
Durch Auskommentieren von Codestellen kannst du dich der Fehlerquelle annähern.
Es sei zudem gesagt: Wenn möglich solltest du, sofern das jeweilige API, das du in LWJGL verwendest das hergibt, einen Debug-Reporter registrieren, der dir mehr Informationen liefert welcher Fehler wo auftrat.
Ich sehe zudem, dass der fehler offenbar in einem intel-Treiber auftrat. Wenn du garkeine Intel-GPU verwenden möchtest solltest du schauen, dass für deine Applikation die richtige GPU zugewiesen ist.
Dann erhälst du womöglich mit einem Debug-Reporter auch noch mehr Infos als für die integrierte GPU.
Zudem solltest du schauen, wie du Java so einstellst, dass es dir den StackTrace in dein Programm liefert, anstatt den StackTrace in Gradle, der dir eher wenig bringen dürfte.