Bug 40194 - [bisected i965]oglc glsl-arrayobject(operator.equal.structure.function) causes segfault
Summary: [bisected i965]oglc glsl-arrayobject(operator.equal.structure.function) cause...
Status: VERIFIED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: git
Hardware: All Linux (All)
: high major
Assignee: Ian Romanick
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-08-18 01:49 UTC by fangxun
Modified: 2011-08-24 22:24 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description fangxun 2011-08-18 01:49:44 UTC
System Environment:
--------------------------
Arch:           i386
Platform:       huronriver 
Libdrm:         (master)2.4.26-3-g2acaf160df584a5ef7b5c5b84819389948cd97ad
Mesa:           (master)9cd64ec35acd54cbe0be4d03236d2c5a9d4be6fe
Xserver:        (master)xorg-server-1.10.99.902-2-g4020cab88f5cf3164fc83cf912f94f288aa5a45d
Xf86_video_intel: (master)2.16.0-3-gccddff087df0c567c28416941b175be81190a1d3
Kernel_unstable:(drm-intel-next)4e6343898fe7eed6b3c0c3c809347bc88d5b4a1e


Bug detailed description:
------------------------- 
It happens on ironlake and sandybridge.
Bisect find 2b224d66a01f3ce867fb05558b25749705bbfe7a is the first bad commit.
commit 2b224d66a01f3ce867fb05558b25749705bbfe7a
Author:     Eric Anholt <eric@anholt.net>
AuthorDate: Sun Aug 7 10:44:15 2011 -0700
Commit:     Eric Anholt <eric@anholt.net>
CommitDate: Tue Aug 16 13:04:42 2011 -0700

    i965: Set up allocation of a VS scratch space if required.

Backtrace:
#0  0xb7a778f3 in do_bo_emit_reloc () from /opt/X11R7/lib/libdrm_intel.so.1
#1  0xb7a77bb1 in drm_intel_gem_bo_emit_reloc () from /opt/X11R7/lib/libdrm_intel.so.1
#2  0xb7a72844 in drm_intel_bo_emit_reloc () from /opt/X11R7/lib/libdrm_intel.so.1
#3  0xb7abb328 in intel_batchbuffer_emit_reloc (intel=0x98f4360, buffer=0x0, read_domains=2, write_domain=2, delta=0) at intel_batchbuffer.c:206
#4  0xb7b14c91 in upload_wm_state (brw=0x98f4360) at gen6_wm_state.c:191
#5  0xb7af9cd4 in brw_upload_state (brw=0x98f4360) at brw_state_upload.c:553
#6  0xb7ae74bd in brw_try_draw_prims (ctx=0x98f4360, arrays=0x9942494, prim=0x9940de8, nr_prims=1, ib=0x0, index_bounds_valid=1 '\001', min_index=0, max_index=2)
    at brw_draw.c:370
#7  brw_draw_prims (ctx=0x98f4360, arrays=0x9942494, prim=0x9940de8, nr_prims=1, ib=0x0, index_bounds_valid=1 '\001', min_index=0, max_index=2) at brw_draw.c:431
#8  0xb7bf1607 in vbo_exec_vtx_flush (exec=0x9940c70, keepUnmapped=1 '\001') at vbo/vbo_exec_draw.c:390
#9  0xb7bee7a7 in vbo_exec_FlushVertices_internal (exec=0x9940c70, unmap=<value optimized out>) at vbo/vbo_exec_api.c:545
#10 0xb7bee7df in vbo_exec_FlushVertices (ctx=0x98f4360, flags=1) at vbo/vbo_exec_api.c:996
#11 0xb7b53dc9 in _mesa_DepthFunc (func=513) at main/depth.c:96
#12 0x083bf21a in GLSLRenderAndVerify(float*, unsigned char) ()
#13 0x083c2769 in GLSLBasicTest(GLSLSimpleTestContext*) ()
#14 0x08208ce8 in GLSLArrayObjectExec(testParameters*) ()
#15 0x08bab088 in callFunctionHandleExceptionsInner(long (*)(testParameters*), testParameters*, char*) ()
#16 0x08bab1d7 in callFunctionHandleExceptions(long (*)(testParameters*), testParameters*) ()
#17 0x08ba9c89 in DriverExec(long (*)(testParameters*), testParameters*) ()
#18 0x08b91225 in (anonymous namespace)::MyMessagePump::idle() ()
#19 0x08b686f9 in MessagePump::process_messages() ()
#20 0x08b92046 in ExecutionManager::execute_schedules() ()
#21 0x08b262e9 in tkShellExecute(std::vector<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::vector<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) ()
#22 0x08b2e96c in main ()


Reproduce steps:
----------------
1. start X
2. ./oglconform -z -s -suite all -v 2 -D 115 -test glsl-arrayobject operator.equal.structure.function
Comment 1 Eric Anholt 2011-08-23 11:25:11 UTC
commit abbb8fc3a7d49066ecca10cb9db0b4756a1bbef0
Author: Eric Anholt <eric@anholt.net>
Date:   Tue Aug 23 10:51:16 2011 -0700

    i965: Fix typo in 2b224d66a01f3ce867fb05558b25749705bbfe7a
    
    Unfortunately, since a previous efficiency improvement, we no longer
    have any open-source testcases producing register spilling, so this
    code was untested in the fragment shader path.  That should change
    when we get proper temporary array support in the fragment shader.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40194
Comment 2 fangxun 2011-08-24 22:24:39 UTC
Verified with mesa master commit 1284d5b25507a56634519ac385cbc00a00b94417.


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.