http://bugs.winehq.org/show_bug.cgi?id=11914
Summary: DestroyContext in dlls/wined3d/device.c causes regression in Everquest2 Product: Wine Version: CVS/GIT Platform: PC-x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: quark9@gmx.net
Created an attachment (id=11215) --> (http://bugs.winehq.org/attachment.cgi?id=11215) Crash back trace
Hi, by changing the "lightning quality" within the game erroneous reflections went away, until wine 0.9.55. I hunted the cause down to git commit dcf08f01ed064732ada4ee618a16772b88cd4e82
Reason seems to be the call DestroyContext around line 6938 in dlls/wine3d3/device.c.
Also see attached back trace.
Disabling this part of the code prevents EQ2 from crashing! Tested with 0.9.57.
http://bugs.winehq.org/show_bug.cgi?id=11914
Roderick Colenbrander thunderbird2k@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |directx-d3d
--- Comment #1 from Roderick Colenbrander thunderbird2k@gmx.net 2008-03-08 07:29:24 --- Hmm, this is either a wined3d pbuffer bug or a bug in the opengl32 pbuffer implementation.
http://bugs.winehq.org/show_bug.cgi?id=11914
Stefan Dösinger stefandoesinger@gmx.at changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stefandoesinger@gmx.at
--- Comment #2 from Stefan Dösinger stefandoesinger@gmx.at 2008-03-08 07:33:38 --- Please attach a patch illustrating your changes instead of mentioning line numbers. The files change constantly, thus the line numbers shift. In the current git code 6938 is an empty line.
From the backtrace I guess that you're using pbuffer offscreen rendering. Maybe
I missed something concerning that when implementing the gl context recreation in Reset.
http://bugs.winehq.org/show_bug.cgi?id=11914
--- Comment #3 from Quarky quark9@gmx.net 2008-03-08 08:03:22 --- (In reply to comment #2)
Please attach a patch illustrating your changes instead of mentioning line numbers. The files change constantly, thus the line numbers shift. In the current git code 6938 is an empty line.
I just commented those lines from your patch to prevent EQ2 from crashing:
/* while(This->numContexts) { DestroyContext(This, This->contexts[0]); } This->activeContext = NULL; HeapFree(GetProcessHeap(), 0, swapchain->context); swapchain->context = NULL; swapchain->num_contexts = 0;
*/
From the backtrace I guess that you're using pbuffer offscreen rendering. Maybe I missed something concerning that when implementing the gl context recreation in Reset.
Yes, I use pbuffer offscreen rendering.
http://bugs.winehq.org/show_bug.cgi?id=11914
Quarky quark9@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #4 from Quarky quark9@gmx.net 2008-03-26 02:07:32 --- *** This bug has been confirmed by popular vote. ***
http://bugs.winehq.org/show_bug.cgi?id=11914
--- Comment #5 from Roderick Colenbrander thunderbird2k@gmx.net 2008-05-05 15:11:25 --- A patch related to this is in GIT now (it fixed RemoveContextFromArray which is called by DestroyContext). Perhaps this bug is over now too.
http://bugs.winehq.org/show_bug.cgi?id=11914
--- Comment #6 from Quarky quark9@gmx.net 2008-05-06 15:55:25 --- Hi, the patch fixing RemoveContextFromArray seems to prevent Everquest2 from dying using pbuffer, but now it stalls throwing
fixme:d3d_draw:drawStridedFast >>>>>>>>>>>>>>>>> GL_OUT_OF_MEMORY (0x505) from glDrawElements @ drawprim.c / 265 fixme:d3d_shader:shader_glsl_load_constants >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUniform4fvARB @ glsl_shader.c / 410 fixme:d3d_shader:shader_glsl_load_constantsF >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUniform4fvARB() @ glsl_shader.c / 231 fixme:d3d_shader:shader_glsl_load_constants >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUniform4fvARB @ glsl_shader.c / 410 fixme:d3d_shader:shader_glsl_load_constantsF >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUniform4fvARB() @ glsl_shader.c / 231 fixme:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 3288 fixme:d3d_shader:shader_glsl_load_constants >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUniform4fvARB @ glsl_shader.c / 410 fixme:d3d_shader:shader_glsl_load_constants >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUniform4fvARB @ glsl_shader.c / 410 fixme:d3d_texture:IWineD3DBaseTextureImpl_BindTexture >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glBindTexture @ basetexture.c / 302 fixme:d3d_texture:IWineD3DBaseTextureImpl_BindTexture >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glBindTexture @ basetexture.c / 302 fixme:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 3288 fixme:d3d_surface:fb_copy_to_texture_hwstretch >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glCopyTexSubImage2D @ surface.c / 2804 fixme:d3d_surface:fb_copy_to_texture_hwstretch >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glDisable(texture_target) @ surface.c / 2955 fixme:d3d_texture:IWineD3DBaseTextureImpl_BindTexture >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glBindTexture @ basetexture.c / 302 fixme:d3d_texture:IWineD3DBaseTextureImpl_BindTexture >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glBindTexture @ basetexture.c / 302 fixme:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 3288 fixme:d3d_shader:shader_glsl_load_constantsF >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUniform4fvARB() @ glsl_shader.c / 231 fixme:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 3288 fixme:d3d_shader:shader_glsl_load_constantsF >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUniform4fvARB() @ glsl_shader.c / 231 fixme:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 3288 fixme:d3d_shader:shader_glsl_load_constantsF >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUniform4fvARB() @ glsl_shader.c / 231 fixme:d3d_draw:drawStridedFast >>>>>>>>>>>>>>>>> GL_OUT_OF_MEMORY (0x505) from glDrawElements @ drawprim.c / 265
all over the place, until it is killed .(
If you need additional infos or logfiles plz let me know!
http://bugs.winehq.org/show_bug.cgi?id=11914
Quarky quark9@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #7 from Quarky quark9@gmx.net 2008-05-24 07:21:00 --- Hi, I made some additional tests...
I applied the patch for this bug to wine-0.9.56, which works best with EQ2 at the moment btw.
I can confirm that this patch fixes this issue.
But sadly it opens up new problems within the game, as it seems that EQ2 recreates the whole directx render stuff if you change certain graphic options within the game.
During the recreation wine and/or opengl seem to loose lots of stuff. Thats why i have to restart the app afterwards, due to massively broken rendering and performance.
http://bugs.winehq.org/show_bug.cgi?id=11914
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #8 from Alexandre Julliard julliard@winehq.org 2008-05-31 04:18:33 --- Closing bugs fixed in 1.0-rc3.
http://bugs.winehq.org/show_bug.cgi?id=11914
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|CVS/GIT |unspecified