On Sat, Apr 02, 2011 at 11:15:21PM -1000, Eric Anholt wrote:
> -   /*progress = do_copy_propagation_elements(ir) || progress;*/
> +   progress = do_copy_propagation_elements(ir) || progress

mesa git 6caac3ecb... plus some other unrelated stuff (Marek's float
patches) and your three patches, r600g on RV630. SEGV disappears when
popping the 3 copy_propagation related patches off the top.

reproducable SEGV on wine here, after login screen on EVE Online:


wine: Unhandled page fault on write access to 0x00000004 at address 0xf6c55615 
(thread 003e), starting debugger...
[...snip...]
  14 0xdeadbabe (0x0033a3fc)
  15 0xf6c55dbd 
ir_copy_propagation_elements_visitor::visit_leave(ir_assignment*)+0xfc() in 
r600_dri.so (0x0033a45c)
  16 0xf6c55dbd 
ir_copy_propagation_elements_visitor::visit_leave(ir_assignment*)+0xfc() in 
r600_dri.so (0x0033a49c)
  17 0xf6d2bcd9 ir_assignment::accept(ir_hierarchical_visitor*)+0xd8() in 
r600_dri.so (0x0033a4dc)
  18 0xf6d2b4b7 visit_list_elements+0x46(v=0x33a718, l=0x7d002ae4) 
[/root/gl/mesa/src/glsl/ir_hv_accept.cpp:48] in r600_dri.so (0x0033a53c)
  19 0xf6c55739 
ir_copy_propagation_elements_visitor::visit_enter(ir_loop*)+0xa8() in 
r600_dri.so (0x0033a57c)
  20 0xf6d2b55c ir_loop::accept(ir_hierarchical_visitor*)+0x2b() in r600_dri.so 
(0x0033a5bc)
  21 0xf6d2b4b7 visit_list_elements+0x46(v=0x33a718, l=0x7d00db10) 
[/root/gl/mesa/src/glsl/ir_hv_accept.cpp:48] in r600_dri.so (0x0033a60c)
  22 0xf6c55291 
ir_copy_propagation_elements_visitor::visit_enter(ir_function_signature*)+0xa0()
 in r600_dri.so (0x0033a63c)
  23 0xf6d2b695 ir_function_signature::accept(ir_hierarchical_visitor*)+0x24() 
in r600_dri.so (0x0033a67c)
  24 0xf6d2b4b7 visit_list_elements+0x46(v=0x33a718, l=0x7d00b8f8) 
[/root/gl/mesa/src/glsl/ir_hv_accept.cpp:48] in r600_dri.so (0x0033a6ac)
  25 0xf6d2b757 ir_function::accept(ir_hierarchical_visitor*)+0x56() in 
r600_dri.so (0x0033a6ec)
  26 0xf6d2b4b7 visit_list_elements+0x46(v=0x33a718, l=0x7c52e740) 
[/root/gl/mesa/src/glsl/ir_hv_accept.cpp:48] in r600_dri.so (0x0033a75c)
  27 0xf6c55f02 do_copy_propagation_elements+0xb1(instructions=0x7c52e740) 
[/root/gl/mesa/src/glsl/opt_copy_propagation_elements.cpp:462] in r600_dri.so 
(0x0033a7cc)
  28 0xf6c4a2cb do_common_optimization+0x9a(ir=0x7c52e740, linked=true, 
max_unroll_iterations=0x20) [/root/gl/mesa/src/glsl/glsl_parser_extras.cpp:772] 
in r600_dri.so (0x0033a83c)
  29 0xf6d3674f link_shaders+0x28e(ctx=0x7c6c8fd0, prog=0x7c49c090) 
[/root/gl/mesa/src/glsl/linker.cpp:1639] in r600_dri.so (0x0033a88c)
  30 0xf6d06537 _mesa_glsl_link_shader+0x216(ctx=0x7c6c8fd0, prog=0x7c49c090) 
[/root/gl/mesa/src/mesa/program/ir_to_mesa.cpp:3286] in r600_dri.so (0x0033a8dc)
  31 0xf6cb2d6c link_program+0x6b(ctx=0x7c6c8fd0, program=<is not available>) 
[/root/gl/mesa/src/mesa/main/shaderapi.c:885] in r600_dri.so (0x0033a8ec)
  32 0xf7019ff7 glLinkProgramARB+0x26() in libgl.so.1 (0x0033aafc)
  33 0xf70ed706 in wined3d (+0xd705) (0x0033accc)

fault location (f6c55615) is
exec_node::remove()():
/root/gl/mesa/src/glsl/list.h:125
     next->prev = prev;
   62610:       8b 78 04                mov    0x4(%eax),%edi
   62613:       8b 30                   mov    (%eax),%esi
-> 62615:       89 7e 04                mov    %edi,0x4(%esi)

which is inlined for
00062590 <ir_copy_propagation_elements_visitor::kill(kill_entry*)>:
         if (entry->write_mask == 0)
            entry->remove();
      }
      if (entry->rhs == k->var) {
->       entry->remove();
      }
   }

the call to ::kill comes from src/glsl/opt_copy_propagation_elements.cpp:174
being ir_copy_propagation_elements_visitor::visit_leave(ir_assignment*)


Will try to get some more debug output, but that box is a grsecurity'd
32bit chroot on 64bit host - never got gdb to work on this...


-David

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to