#5545 closed defect (fixed)
OPENGL: Crashing on updateScreen
Reported by: | lordhoto | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | Ports |
Version: | Keywords: | ||
Cc: | Game: | Beneath a Steel Sky |
Description
ScummVM trunk r54830 Arch Linux/amd64 g++ 4.5.1 SDL/OpenGL backend
When OSystem::updateScreen is called from a different thread (like a timer callback or the like) the OpenGL graphics code will crash. This is because the OpenGL context is not shared between threads, thus all OpenGL functions relying on a context or resources will cause crashes.
A good candidate of testing is the SKY engine. Just start up BASS (CD) and watch the Intro. When the old man will start talking ScummVM will crash.
Here is a backtrace:
#0 0x00007ffff69d7ee9 in glClear () from /usr/lib/libGL.so.1 #1 0x000000000101dd77 in OpenGLGraphicsManager::internUpdateScreen (this=0x1b5f290) at ../git/backends/graphics/opengl/opengl-graphics.cpp:942 #2 0x000000000102084a in OpenGLSdlGraphicsManager::internUpdateScreen (this=0x1b5f290) at ../git/backends/graphics/openglsdl/openglsdl-graphics.cpp:420 #3 0x000000000101b9d3 in OpenGLGraphicsManager::updateScreen (this=0x1b5f290) at ../git/backends/graphics/opengl/opengl-graphics.cpp:401 #4 0x0000000001020055 in OpenGLSdlGraphicsManager::updateScreen (this=0x1b5f290) at ../git/backends/graphics/openglsdl/openglsdl-graphics.cpp:234 #5 0x0000000001016719 in ModularBackend::updateScreen (this=0x1a78600) at ../git/backends/modular-backend.cpp:160 #6 0x0000000000de5b64 in Sky::Screen::processSequence (this=0x1f4c270) at ../git/engines/sky/screen.cpp:497 #7 0x0000000000de556a in Sky::Screen::handleTimer (this=0x1f4c270) at ../git/engines/sky/screen.cpp:403 #8 0x0000000000dcac5d in Sky::SkyEngine::gotTimerTick (this=0x1ae3cb0) at ../git/engines/sky/sky.cpp:394 #9 0x0000000000dcac3c in Sky::SkyEngine::timerHandler (refCon=0x1ae3cb0) at ../git/engines/sky/sky.cpp:390 #10 0x000000000102d76a in DefaultTimerManager::handler (this=0x1a7f580) at ../git/backends/timer/default/default-timer.cpp:108 #11 0x000000000102bb57 in timer_handler (interval=10, param=0x1a7f580) at ../git/backends/timer/sdl/sdl-timer.cpp:34 #12 0x00007ffff646b238 in ?? () from /usr/lib/libSDL-1.2.so.0 #13 0x00007ffff64b1807 in ?? () from /usr/lib/libSDL-1.2.so.0 #14 0x00007ffff646ae15 in ?? () from /usr/lib/libSDL-1.2.so.0 #15 0x00007ffff64af4c9 in ?? () from /usr/lib/libSDL-1.2.so.0 #16 0x00007ffff6243cb0 in start_thread () from /lib/libpthread.so.0
Ticket imported from: #3131952. Ticket imported from: bugs/5545.
Change History (3)
comment:1 by , 14 years ago
comment:2 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:3 by , 6 years ago
Component: | → Ports |
---|---|
Game: | → Beneath a Steel Sky |
should be fixed with f621f6a