Bug 41630

Summary: r600g nexuiz segfault on quit since recent LinkedShaders changes
Product: Mesa Reporter: Andy Furniss <adf.lists>
Component: Mesa coreAssignee: mesa-dev
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium    
Version: git   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Andy Furniss 2011-10-09 13:06:49 UTC
Couldn't bisect properly as too many build fails see log below.

The game nexuiz is segfaulting on quit with current master.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb746f9b0 (LWP 13291)]
destroy_shader_program_variants_cb (key=1, data=0xc0195a0, userData=0xc008fe8) at state_tracker/st_program.c:1157
1157                destroy_program_variants(st, shProg->_LinkedShaders[i]->Program);
(gdb) bt
#0  destroy_shader_program_variants_cb (key=1, data=0xc0195a0, userData=0xc008fe8) at state_tracker/st_program.c:1157
#1  0xb5cf4299 in _mesa_HashWalk (table=0xbfe9698, callback=0xb5d5dd40 <destroy_shader_program_variants_cb>, userData=0xc008fe8) at main/hash.c:334
#2  0xb5d5da49 in st_destroy_program_variants (st=0xc008fe8) at state_tracker/st_program.c:1200
#3  0xb5d58277 in st_destroy_context (st=0xc008fe8) at state_tracker/st_context.c:256
#4  0xb5cb085d in st_context_destroy (stctxi=0xc008fe8) at state_tracker/st_manager.c:651
#5  0xb5c9ba2c in dri_destroy_context (cPriv=0xbe9ad40) at dri_context.c:130
#6  0xb5c6ec17 in driDestroyContext (pcp=0xbe9ad40) at ../common/dri_util.c:589
#7  0xb6277c40 in dri2_destroy_context (context=0xbea4e50) at dri2_glx.c:128
#8  0xb62509b4 in glXDestroyContext (dpy=0xbdba9e0, ctx=0xbea4e50) at glxcmds.c:426
#9  0xb76ea256 in X11_GL_Shutdown (this=0xbdaf018) at ./src/video/x11/SDL_x11gl.c:322
#10 0xb76eead7 in X11_DestroyWindow (this=0xbdaf018, screen=0x0) at ./src/video/x11/SDL_x11video.c:709
#11 0xb76eed09 in X11_VideoQuit (this=0xbdaf018) at ./src/video/x11/SDL_x11video.c:1488
#12 0xb76db630 in SDL_VideoQuit () at ./src/video/SDL_video.c:1352
#13 0xb76b02f4 in SDL_QuitSubSystem (flags=32) at ./src/SDL.c:202

There are only 'skip'ped commits left to test.
The first bad commit could be any of:
de772c402215b956ab3aa0875330fc1bf7cdf95b
39348bf79fb247eec895c93e52f23afe138be46a
5a4279f80d80fd30452ee6cc7cdfaffb12b1d605
010cc547ca8c1fb2107106b0ad0de560780ce9aa
77d67a44cc9788072090e3f1000cfe1cec0a6807
e2bdef53807d0f23c2a1ff326ea8190cb57aa90a
We cannot bisect more!

bash-3.2$ git bisect log 
git bisect start
# bad: [0f55f133f1e5b72e463441d2d388a1ec4deac1da] u_blitter: query vertex shader caps instead of geometry for int vertices
git bisect bad 0f55f133f1e5b72e463441d2d388a1ec4deac1da
# good: [53f858637319f0efa47dd9acdb547e7913f3f86b] i915,i830: Remove dead HiZ assertions in *update_draw_buffer()
git bisect good 53f858637319f0efa47dd9acdb547e7913f3f86b
# bad: [a441feb757b1be4845ba378f0207dcdc5cc1a407] gallium: add initial pure integer support (v2)
git bisect bad a441feb757b1be4845ba378f0207dcdc5cc1a407
# skip: [77d67a44cc9788072090e3f1000cfe1cec0a6807] mesa: Simplify destroy_shader_program_variants_cb after previous refactors
git bisect skip 77d67a44cc9788072090e3f1000cfe1cec0a6807
# bad: [61285c6cfa9ce6086d62fa08bc9e3813f0b30d3d] u_format: add inline helper to find first non void channel
git bisect bad 61285c6cfa9ce6086d62fa08bc9e3813f0b30d3d
# skip: [5a4279f80d80fd30452ee6cc7cdfaffb12b1d605] mesa: Simplify validate_shader_program after previous refactors
git bisect skip 5a4279f80d80fd30452ee6cc7cdfaffb12b1d605
# bad: [93c26d8baf5294b77e019b90d9995b5da565ea3c] glsl: Remove unused method ir_variable::component_slots
git bisect bad 93c26d8baf5294b77e019b90d9995b5da565ea3c
# skip: [39348bf79fb247eec895c93e52f23afe138be46a] mesa: Use gl_shader_program::_LinkedShaders instead of GeometryProgram
git bisect skip 39348bf79fb247eec895c93e52f23afe138be46a
# bad: [e2bdef53807d0f23c2a1ff326ea8190cb57aa90a] mesa: Simplify calling Driver.ProgramStringNotify after previous refactors
git bisect bad e2bdef53807d0f23c2a1ff326ea8190cb57aa90a
# skip: [010cc547ca8c1fb2107106b0ad0de560780ce9aa] mesa: Use gl_shader_program::_LinkedShaders instead of VertexProgram
git bisect skip 010cc547ca8c1fb2107106b0ad0de560780ce9aa
# skip: [de772c402215b956ab3aa0875330fc1bf7cdf95b] mesa: Use gl_shader_program::_LinkedShaders instead of FragmentProgram
git bisect skip de772c402215b956ab3aa0875330fc1bf7cdf95b
# good: [2fae55666e298525fe3b5550aa2a2ebeea437710] mesa: Close Doxygen group
git bisect good 2fae55666e298525fe3b5550aa2a2ebeea437710
Comment 1 Andy Furniss 2011-10-10 02:44:08 UTC
Fixed now I assume by

ddba509c16c4cb0630a4f4841b31953f02be6b3f
mesa/st: Check for a NULL _LinkedShader[i] before using it.

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.