[Bug 34847] New: The Swapper 2.0.x (GOG.com) crashes on startup (OpenGL glBindTexture on thread with no active gl context)
wine-bugs at winehq.org
wine-bugs at winehq.org
Sat Nov 2 18:12:24 CDT 2013
http://bugs.winehq.org/show_bug.cgi?id=34847
Bug #: 34847
Summary: The Swapper 2.0.x (GOG.com) crashes on startup (OpenGL
glBindTexture on thread with no active gl context)
Product: Wine
Version: 1.7.5
Platform: x86
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: -unknown
AssignedTo: wine-bugs at winehq.org
ReportedBy: focht at gmx.net
Classification: Unclassified
Hello folks,
as the summary says... it crashes with managed backtrace.
Prerequisite: 'winetricks -q dotnet40'
Additionally 'winetricks -q gdiplus' is needed to work around bug 31293
("Multiple .NET apps need GdipPrivateAddFontFile (MTGO v3 launcher, Harmony
Practice 3")
Console output:
--- snip ---
$ pwd
/home/focht/.wine/drive_c/GOG Games/The Swapper
...
$ wine ./TheSwapper.exe
...
fixme:shell:URL_ParseUrl failed to parse L"Poly2Tri"
fixme:shell:URL_ParseUrl failed to parse L"Antlr3.Runtime"
fixme:shell:URL_ParseUrl failed to parse L"HackFlipcodeDecomposer"
fixme:thread:NtQueryInformationThread info class 16 not supported yet
Unhandled Exception: System.AccessViolationException: Attempted to read or
write protected memory. This is often an indication that other memory is
corrupt.
at OpenTK.Graphics.OpenGL.GL.Core.BindTexture(TextureTarget target, UInt32
texture)
at OpenTK.Graphics.OpenGL.GL.BindTexture(TextureTarget target, Int32
texture)
at
#=qspupw6aAQRvhz2r1wc647d1$NzZyWbb7974SWlkKFpjJ1VeukGn_wvGCMRx7aBSiWh1iuicIyacRGfVqgBm9Rg==.#=qxG1RzIHGHPuJuQ9DtG4yhQ==(Int32
#=qsSRVY4FmFS4iYRT1PxaVNw==)
at FacepalmGames.TrueEngine.Graphics.OpenGL.OpenGL_Texture.Dispose()
at
#=qULyUf5doESIVBNnEWBr9jN$hFDnWSfTNkblxZVPkoCXVICMIlUf3Oz5uUy69udDx.#=qbCGlUo53gCwDv9X$E_5Iipk92Zlu$dzUi0ZnO80onPs=(Delay
#=qVN6KXXzrwp4xa_tgGyT1jQ==)
at FacepalmGames.TrueEngine.Delay.Update(Single realDeltatime, Single
deltatime)
at FacepalmGames.TrueEngine.DelayManager.Update(Single realDeltatime, Single
deltatime)
at
FacepalmGames.TrueEngine.Entities.Scene.#=qcxzqmQNZ7TSahScA1o$Rrw==(Single
#=q6De8gKPg5ESl6NuDXrBRcA==, Single
#=qaucCZLW9S0zUXSlrUo6iYnnvSSi1tmqip0uXE0QXrwA=, Single
#=qqc2gLOtgfcZeiY4LXS3whw==, Single
#=qO9TZ3LUfP6bxhsIfL_rR0Z7xK3bfiaKUx1IIuEZVA0E=)
at
FacepalmGames.TrueEngine.Entities.SceneManager.#=qG1mfX3aU5i$$4RZvkfzUkw==(Single
#=qdFIjUqk3WRECcfuHyBXXZA==, Single
#=q3QDB3JyyarsE0ZUqbDVMZblSntu_9cgwTl_01PI3pZA=, Single
#=qrXUE910DbtLTh2XYLVIrDA==, Single
#=qyNuK7AKKIdZJOCkcLFmmipJZCxMqc8TMaiv9w3U2v7c=)
at FacepalmGames.TrueEngine.GameStateController.OnUpdateFrame()
at FacepalmGames.TrueEngine.UpdateManager.#=qH_xcAJvh9NICLf1lxmJf1g==()
at FacepalmGames.TrueEngine.UpdateManager.#=qYThq6FqzXGbBWu3gjG$5Ug==()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,
ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,
ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
...
--- snip ---
Relevant part of trace log:
--- snip ---
$ WINEDEBUG=+tid,+seh,+loaddll,+process,+opengl,+wgl wine ./TheSwapper.exe
...
002b:trace:wgl:glxdrv_wglMakeCurrent (0x30033,0x185ea0)
002b:trace:wgl:describeContext Context 0x185ea0 have (vis:(nil)):
002b:trace:wgl:describeContext - FBCONFIG_ID 0x107
002b:trace:wgl:describeContext - VISUAL_ID 0x24
002b:trace:wgl:glxdrv_wglMakeCurrent hdc 0x30033 drawable 4e00029 fmt 0x188558
ctx 0x7d9d07b0
002b:trace:wgl:glxdrv_wglMakeCurrent 0x30033,0x185ea0 returning 1
...
002b:trace:opengl:glBindBuffer (34962, 1)
002b:trace:opengl:glBindBuffer (34963, 2)
002b:trace:opengl:glVertexPointer (3, 5126, 24, (nil))
002b:trace:opengl:glNormalPointer (5126, 24, 0xc)
002b:trace:opengl:glPushMatrix ()
002b:trace:opengl:glTranslatef (0.000000, 0.000000, 1000.000000)
002b:trace:opengl:glScalef (10100.000000, 10100.000000, 10100.000000)
002b:trace:opengl:glUseProgram (49)
002b:trace:opengl:glUniform1f (3, 65.000000)
002b:trace:opengl:glUniform1f (2, 64000.000000)
003d:trace:opengl:glBindTexture (3553, 1)
003d:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7e08f55b
ip=7e08f55b tid=003d
003d:trace:seh:raise_exception info[0]=00000000
003d:trace:seh:raise_exception info[1]=0000003c
003d:trace:seh:raise_exception eax=00000000 ebx=7e103000 ecx=00000000
edx=0c2aef88 esi=07db0fa0 edi=0c2add74
003d:trace:seh:raise_exception ebp=0c2add60 esp=0c2add20 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00010206
--- snip ----
Debugger:
--- snip ----
Unhandled exception: page fault on read access to 0x0000003c in 32-bit code
(0x7e09b55b).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
EIP:7e09b55b ESP:07fddd20 EBP:07fddd60 EFLAGS:00010246( R- -- I Z- -P- )
EAX:00000000 EBX:7e10f000 ECX:00000de1 EDX:00000001
ESI:079415e0 EDI:07fddd74
Stack dump:
0x07fddd20: 00090f04 80000000 00000000 07fddd9c
0x07fddd30: 79161f69 00000000 00000000 79161f86
0x07fddd40: 7ffb0000 c02492f8 07fde4dc 00000000
0x07fddd50: 079415e0 00000000 00000000 018bef38
0x07fddd60: 07fdddac 033d4c18 00000de1 00000001
0x07fddd70: c7ecbc88 79145d80 07fde4dc 00000008
000c: sel=0067 base=00000000 limit=00000000 16-bit --x
Backtrace:
=>0 0x7e09b55b glBindTexture+0x8c(target=0xde1, texture=0x1)
[/home/focht/projects/wine/wine-git/dlls/opengl32/opengl_norm.c:65] in opengl32
(0x07fddd60)
1 0x033d4c18 (0x07fdddac)
2 0x033d4b43 (0x07fdddd4)
--- snip ----
Disassembly/debugger tells it's crashing because glTable is NULL.
--- snip ---
glBindTexture+1B mov [esp+20h], eax
glBindTexture+1F mov eax, [esp+20h]
glBindTexture+23 mov eax, [eax+0BE8h] ; NtCurrentTeb()->glTable
glBindTexture+29 mov [esp+2Ch], eax
...
glBindTexture+88 mov eax, [esp+2Ch] ; NtCurrentTeb()->glTable
glBindTexture+8C mov eax, [eax+3Ch] ; *boom* funcs->gl.p_glBindTexture
glBindTexture+8F mov edx, [ebp+texture]
glBindTexture+92 mov [esp+4], edx
glBindTexture+96 mov edx, [ebp+target]
glBindTexture+99 mov [esp], edx
glBindTexture+9C call eax
glBindTexture+9E mov ebx, [ebp+var_4]
glBindTexture+A1 leave
glBindTexture+A2 retn 8
--- snip ---
Source:
http://source.winehq.org/git/wine.git/blob/2480c9395b0b9a14ad1747d2c4621e0cd3a21fca:/dlls/opengl32/opengl_norm.c#l59
--- snip ---
59 /***********************************************************************
60 * glBindTexture (OPENGL32.@)
61 */
62 void WINAPI glBindTexture( GLenum target, GLuint texture ) {
63 const struct opengl_funcs *funcs = NtCurrentTeb()->glTable;
64 TRACE("(%d, %d)\n", target, texture );
65 funcs->gl.p_glBindTexture( target, texture );
66 }
--- snip ---
glBindTexture() is called on a thread (tid 0x3d) with no active OpenGL context.
The current context is on tid 0x2b.
Not sure why this gl call happens on a different thread ... maybe it's some
asynchronous texture loading in worker thread.
Anyway, the log doesn't show wgl "makecurrent" nor creation of a second gl
context for the secondary thread.
$ sha1sum setup_the_swapper_2.0.0.2.exe
174e7db9b1d187eac4fb92e94db2712ce69ba614 setup_the_swapper_2.0.0.2.exe
$ du -sh setup_the_swapper_2.0.0.2.exe
722M setup_the_swapper_2.0.0.2.exe
$ wine --version
wine-1.7.5-251-gbcf4ded
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the wine-bugs
mailing list