Bug 21287

Summary: [exa i915 i965]mesa demos/gltestperf gives segfault
Product: Mesa Reporter: liuhaien <haien.liu>
Component: Drivers/DRI/i915Assignee: Default DRI bug account <dri-devel>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: xorg.0.log
xorg conf file

Description liuhaien 2009-04-19 19:21:06 UTC
Created attachment 24954 [details]
xorg.0.log

System Environment:
--------------------------
host:x-915gm
platform: 915gm
Libdrm:         (master)07646002c6835537c6ae44ef9b3f8480762279b8
Mesa:           (mesa_7_4_branch)85396d8ef4f7fc4702578a3d4e89844c7e238acc
Xserver:               (server-1.6-branch)cd321badf0c185854b3e0c038f3851a3ac7864ea
Xf86_video_intel:               (2.7)cff6cf9adc4235af5cc73a47bb272c81635fc8b2
Kernel:           (drm-intel-2.6.29)0aa7e8a61658193f90198d579c5ef8297b45be9b 

Bug detailed description:
--------------------------
startx with exa, then run mesa demos/gltestperf, it will give segmentation fault, the backtrace from gdb is as below:
#0  0xb7a2bc36 in intel_flush (ctx=0x9fc3488, needs_mi_flush=0 '\0')
    at intel_context.c:537
#1  0xb7a1dcda in intelClearWithBlit (ctx=0x9fc3488, mask=1)
    at intel_blit.c:425
#2  0xb7a133de in intelClear (ctx=0x9fc3488, mask=1) at intel_clear.c:360
#3  0xb7a60a69 in _mesa_Clear (mask=0) at main/clear.c:182
#4  0x08049fbc in init_test01 () at gltestperf.c:43
#5  0x0804a456 in display () at gltestperf.c:392
#6  0xb7f2e4b7 in processWindowWorkList (window=0x9fb8580) at glut_event.c:1306
#7  0xb7f2f118 in glutMainLoop () at glut_event.c:1353
#8  0x08049038 in main (ac=1, av=0x9ff7550) at gltestperf.c:578

Reproduce steps:
----------------
1.xinit&
2.run mesa/demos gltestperf
Comment 1 liuhaien 2009-04-19 19:21:31 UTC
Created attachment 24955 [details]
xorg conf file
Comment 2 liuhaien 2009-04-19 19:22:32 UTC
this issues happens on all platforms using exa, but works with uxa.
Comment 3 liuhaien 2009-04-19 19:23:07 UTC
this issue happens on all platforms using exa, but works with uxa.
Comment 4 Brian Paul 2009-04-20 15:17:28 UTC
Fixed in Mesa commit c38397866d514d7776b0f876123be5718802482b

diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index ddcd264..ecaf6b4 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -534,7 +534,8 @@ intel_flush(GLcontext *ctx, GLboolean needs_mi_flush)
    if ((ctx->DrawBuffer->Name == 0) && intel->front_buffer_dirty) {
       __DRIscreen *const screen = intel->intelScreen->driScrnPriv;
 
-      if ((screen->dri2.loader->base.version >= 2)
+      if (screen->dri2.loader
+          && (screen->dri2.loader->base.version >= 2)
          && (screen->dri2.loader->flushFrontBuffer != NULL)) {
         (*screen->dri2.loader->flushFrontBuffer)(intel->driDrawable,
                                                  intel->driDrawable->loaderPrivate);
Comment 5 liuhaien 2009-04-20 18:58:40 UTC
verified with below commits:
Libdrm:		(master)a1e3ab9e55047c08a4006ec389c1a99b72bc672c
Mesa:		(mesa_7_4_branch)e8807a14a61a0b9389aa2f2a113da24ab22a364d
Xserver:	(server-1.6-branch)11db545a86c8933c638a0bc1fcd4f2c65279f617
Xf86_video_intel:		(2.7)296a986e5258e2fd13ec494071b7063bd639cd68

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.