2016-05-13 12 views
0

Ich habe eine sehr einfache SDL-Anwendung erstellt, die einige Iterationen der Hauptschleife durchlaufen hat, aber dann abgestürzt ist. Ich habe den Fehler gefunden, um in SDL_GL_SwapWindow zu liegen, was die ersten beiden Male funktioniert, dann stürzt ab. Dies ist eine sehr vereinfachte Version, die ich tatsächlich ausprobiert habe und die dasselbe gemacht hat.SDL_GL_SwapWindow stürzt beim dritten Aufruf ab

SDL_Init(SDL_INIT_EVERYTHING); 
SDL_Window* SDLWindow = SDL_CreateWindow("Balls", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN); 
SDL_GLContext SDLGLContext = SDL_GL_CreateContext(SDLWindow); 
glewInit(); 

glViewport(0, 0, 800, 600); 

SDL_GL_SwapWindow(SDLWindow); 
SDL_GL_SwapWindow(SDLWindow); 
SDL_GL_SwapWindow(SDLWindow); //crashes here 

return 0; 

ersten beiden Anrufe gut funktionieren, stürzt das dritte das Programm. Seltsamerweise trat der Absturz in igd10umd32.dll auf und der Debugger erlaubte mir nicht, diese Datei zu lesen. Ich habe das im Internet untersucht, aber keine Versuche, die Bibliothek zu reparieren, haben funktioniert. Wenn das Problem in dieser Bibliothek auftrat, würde es wahrscheinlich unter solchen seltsamen Bedingungen nicht erscheinen.

Und was noch seltsamer ist, ist, dass das Programm auf meinem zweiten Laptop gut funktioniert. Und als ich es dort kompiliert habe und auf diesem Laptop lief, hat es auch gut funktioniert.

Ich benutze Windows 10. Ich habe viele Male mit SDL/OpenGL gearbeitet und noch nie so etwas erlebt. Irgendwelche Ideen, was dieses sehr chaotische Verhalten verursachen könnte?

+0

* igd10umd32.dll * ist Teil des Grafiktreibers. Es ist sehr wahrscheinlich, dass Ihre Version von SDL etwas falsch macht und den Absturz verursacht. Hast du diese ausführbare Datei auf einem anderen Grafikadapter/-gerät ausprobiert? Welche Version von SDL verwenden Sie? Mit welchen Bibliotheken verlinken Sie? – Ani

+0

@ananthonline: Unwahrscheinlich. SDL_GL_SwapWindow ist ein extrem einfacher Codepath. Auch ein schnelles Google für diese DLL zeigt an, dass es bei Abstürzen sehr häufig ist (auch bei hochkarätigen Programmen wie MS Office). Ich würde sagen, das ist ein Treiberfehler. – datenwolf

+0

Ich beginne damit, meinen Code zuerst zu verdächtigen und fahre dann fort, um den Treiber zu verdächtigen. Ich bin kein Carmack :) In jedem Fall sollte das OP versuchen, andere OpenGL-Testanwendungen auszuführen. Wenn sie funktionieren, dann ist das ein Problem mit dem Codepfad, den die Anwendung nimmt (Treiber- und/oder Benutzercode) – Ani

Antwort

0

Gelöst. Es war nichts anderes als ein NVIDIA-Bug. Die Aktualisierung des Treibers löste alle Probleme.

+1

Es ist ziemlich unwahrscheinlich, dass ein Absturz in den _intel_ Treiber NVIDIA Schuld ist. Es könnte sein, dass Sie zuvor Ihre integrierte GPU verwendet haben, und jetzt verwenden Sie eine diskrete, aber das ist dann eigentlich keine Lösung für das ursprüngliche Problem. – derhass

Verwandte Themen