Opened 9 years ago

Closed 9 years ago

Last modified 19 months ago

#5545 closed defect (fixed)

OPENGL: Crashing on updateScreen

Reported by: lordhoto Owned by:
Priority: normal Component: Ports
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 dhewg, 9 years ago

should be fixed with f621f6a

comment:2 by dhewg, 9 years ago

Resolution: fixed
Status: newclosed

comment:3 by digitall, 19 months ago

Component: Ports
Game: Beneath a Steel Sky
Note: See TracTickets for help on using tickets.