[bisected] Mesa 20.0.7 regression. glLink crash in glsl_to_nir.cpp, nir_visitor on specific WebGL shader
Debian, Linux, amd64.
Mesa 20.0.7 from Debian unstable.
It did work fine on Mesa 19.3.3 from Debian testing.
Here is a shader captured using Firefox 68esr and Mesa 19.3.3 using MESA_SHADER_CAPTURE_PATH, from https://www.shadertoy.com/view/4tG3Dh
04189b95a0fa441eab1bc4fb303e9e608f96118d12a783b5bfb9658af68f0b83.shader_test
Running under shader-db/run in gdb shows this
(gdb) r
Starting program: /home/user/shader-db/run -j 1 /home/user/dexter/dextank2/Movies/MyFossilizeDumpsFromSteam/firefox-shaders-parts/4tG3Dh/04189b95a0fa441eab1bc4fb303e9e608f96118d12a783b5bfb9658af68f0b83.shader_test
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
ATTENTION: default value of option allow_glsl_extension_directive_midshader overridden by environment.
ATTENTION: default value of option allow_glsl_builtin_variable_redeclaration overridden by environment.
[New Thread 0x7fffefb81700 (LWP 3338768)]
...
[New Thread 0x7fff84ff9700 (LWP 3338802)]
./4tG3Dh/04189b95a0fa441eab1bc4fb303e9e608f96118d12a783b5bfb9658af68f0b83.shader_test - Shader 1/2: Compile time: 0.004 s real time, 0.004 s cpu time
./4tG3Dh/04189b95a0fa441eab1bc4fb303e9e608f96118d12a783b5bfb9658af68f0b83.shader_test - Shader 2/2: Compile time: 0.001 s real time, 0.001 s cpu time
Thread 1 "run" received signal SIGSEGV, Segmentation fault.
(anonymous namespace)::nir_visitor::visit (this=0x7fffffffcaf0, ir=0x555555e35420) at ../src/compiler/glsl/glsl_to_nir.cpp:1224
1224 ../src/compiler/glsl/glsl_to_nir.cpp: No such file or directory.
(gdb) bt full
#0 (anonymous namespace)::nir_visitor::visit (this=0x7fffffffcaf0, ir=0x555555e35420) at ../src/compiler/glsl/glsl_to_nir.cpp:1224
param_count = 1431687184
param = <optimized out>
inst = <optimized out>
rvalue = 0x555555e86e68
deref = 0x0
swizzle = 0x555555e86e68
nir_deref = <optimized out>
op = <optimized out>
instr = 0x1
ret = 0x555555e43450
entry = <optimized out>
callee = <optimized out>
call = <optimized out>
i = <optimized out>
ret_deref = <optimized out>
#1 0x00007ffff602c0c1 in visit_exec_list (list=list@entry=0x555555e49ef0, visitor=visitor@entry=0x7fffffffcaf0) at ../src/compiler/glsl/ir.cpp:1990
node = <optimized out>
__next = 0x555555e354c0
#2 0x00007ffff6016e7a in (anonymous namespace)::nir_visitor::visit (ir=<optimized out>, this=<optimized out>) at ../src/compiler/glsl/glsl_to_nir.cpp:745
impl = 0x555555e8d7a0
i = <optimized out>
entry = <optimized out>
func = <optimized out>
entry = <optimized out>
func = <optimized out>
impl = <optimized out>
i = <optimized out>
param = <optimized out>
var = <optimized out>
#3 (anonymous namespace)::nir_visitor::visit (this=0x7fffffffcaf0, ir=<optimized out>) at ../src/compiler/glsl/glsl_to_nir.cpp:709
entry = <optimized out>
func = <optimized out>
impl = <optimized out>
i = <optimized out>
param = <optimized out>
var = <optimized out>
#4 0x00007ffff601713f in ir_function_signature::accept (v=0x7fffffffcaf0, this=0x555555e49ea0) at ../src/compiler/glsl/ir.h:1175
No locals.
#5 (anonymous namespace)::nir_visitor::visit (this=0x7fffffffcaf0, ir=<optimized out>) at ../src/compiler/glsl/glsl_to_nir.cpp:705
sig = 0x555555e49ea0
#6 0x00007ffff602c0c1 in visit_exec_list (list=<optimized out>, visitor=visitor@entry=0x7fffffffcaf0) at ../src/compiler/glsl/ir.cpp:1990
node = <optimized out>
__next = 0x555555e96378
#7 0x00007ffff6021fe6 in glsl_to_nir (ctx=<optimized out>, shader_prog=shader_prog@entry=0x5555558f73f0, stage=MESA_SHADER_FRAGMENT, options=options@entry=0x7ffff6b861c0 <nir_options>) at ../src/compiler/glsl/glsl_to_nir.cpp:214
sh = 0x555555e87250
gl_options = <optimized out>
shader = 0x555555e7b4d0
v1 = {<ir_visitor> = {_vptr.ir_visitor = 0x7ffff6e8f980 <vtable for (anonymous namespace)::nir_visitor+16>}, supports_std430 = true, shader = 0x555555e7b4d0, impl = 0x555555e8d7a0, b = {cursor = {option = nir_cursor_after_instr, {block = 0x555555e43450, instr = 0x555555e43450}}, exact = false, shader = 0x555555e7b4d0, impl = 0x555555e8d7a0}, result = 0x55555555d6b8, deref = 0x555555e6d6e0, is_global = false, sig = 0x555555e49ea0, var_table = 0x555555e8d910,
overload_table = 0x555555e8b760}
v2 = {<ir_hierarchical_visitor> = {_vptr.ir_hierarchical_visitor = 0x7ffff6f46d70 <vtable for (anonymous namespace)::nir_function_visitor+16>, base_ir = 0x0, callback_enter = 0x0, callback_leave = 0x0, data_enter = 0x0, data_leave = 0x0, in_assignee = false}, visitor = 0x7fffffffcaf0}
#8 0x00007ffff5d8f249 in st_link_nir (ctx=0x5555558569d0, shader_program=0x5555558f73f0) at ../src/mesa/state_tracker/st_glsl_to_nir.cpp:688
prog = 0x555555e7a690
stp = 0x555555e7a690
clone = <optimized out>
shader = 0x555555e87250
options = 0x7ffff6b861c0 <nir_options>
i = <optimized out>
st = 0x555555879770
linked_shader = {0x555555e98b40, 0x555555e87250, 0x5555558f74e8, 0x100000001, 0x5555558f74e8, 0x40001600000001}
num_shaders = 2
prev_info = <optimized out>
#9 0x00007ffff5dd2ff1 in _mesa_glsl_link_shader (ctx=ctx@entry=0x5555558569d0, prog=prog@entry=0x5555558f73f0) at ../src/mesa/program/ir_to_mesa.cpp:3119
i = <optimized out>
spirv = <optimized out>
#10 0x00007ffff5eb319b in link_program (no_error=<optimized out>, shProg=<optimized out>, ctx=<optimized out>) at ../src/mesa/main/shaderapi.c:1287
programs_in_use = 0
capture_path = <optimized out>
programs_in_use = <optimized out>
__func__ = <optimized out>
capture_path = <optimized out>
stage = <optimized out>
stage = <optimized out>
prog = <optimized out>
file = <optimized out>
filename = <optimized out>
i = <optimized out>
i = <optimized out>
i = <optimized out>
#11 link_program_error (shProg=0x5555558f73f0, ctx=0x5555558569d0) at ../src/mesa/main/shaderapi.c:1386
No locals.
#12 link_program_error (ctx=0x5555558569d0, shProg=0x5555558f73f0) at ../src/mesa/main/shaderapi.c:1384
No locals.
#13 0x0000555555557ff9 in main._omp_fn.0 () at run.c:883
prog = 1
param = 1
gl_version = 46
link_end_real = {tv_sec = 290382, tv_nsec = 978284476}
link_start_cpu = {tv_sec = 0, tv_nsec = 38299169}
link_start_real = {tv_sec = 290382, tv_nsec = 978292076}
link_end_cpu = {tv_sec = 0, tv_nsec = 38290989}
prev = <optimized out>
fd = <optimized out>
type = <optimized out>
num_shaders = 2
binding = 0x0
i = 0
text = 0x7ffff7fb2000 "[require]\nGLSL >= 4.50\n\n[vertex shader]\n#version 450\nlayout(location = 0) in vec2 webgl_b3d175d1a4203aee;\nvoid main(){\n(gl_Position = vec4(0.0, 0.0, 0.0, 0.0));\n(gl_Position = vec4(webgl_b3d175d1a4203"...
use_separate_shader_objects = <optimized out>
shader = <optimized out>
i = <optimized out>
shaders_compiled = 0
start_real = {tv_sec = 290382, tv_nsec = 967947692}
end_real = {tv_sec = 140737353818353, tv_nsec = 140737323114349}
core_ctx = 0x55555580f040
start_cpu = {tv_sec = 0, tv_nsec = 29148668}
compat_ctx = 0x555555880390
current_shader_name = 0x55555579e970 "4tG3Dh/04189b95a0fa441eab1bc4fb303e9e608f96118d12a783b5bfb9658af68f0b83.shader_test"
ctx_switches = 1
end_cpu = {tv_sec = 290382, tv_nsec = 978284476}
es_ctx = 0x55555579dfa0
current_type = <optimized out>
generate_prog_bin = false
egl_dpy = 0x55555562d560
cfg = <optimized out>
#14 0x00007ffff7e2f4c2 in GOMP_parallel () from /lib/x86_64-linux-gnu/libgomp.so.1
No symbol table info available.
#15 0x00005555555569ca in main (argc=<optimized out>, argv=<optimized out>) at run.c:683
device_path = "/dev/dri/renderD128\000\000\000\000\000\260\340\377\377\377\177\000\000\000\000\000\000\000\000\000\000L\203\342\367\377\177\000\000\000\000\000\000\000\000\000\000\005\212UUUU\000"
device_id = <optimized out>
opt = <optimized out>
generate_prog_bin = <optimized out>
ret = 0
fd = <optimized out>
gbm = 0x555555565840
egl_dpy = <optimized out>
egl_extension = {0x555555559ad6 "EGL_KHR_create_context", 0x555555559aed "EGL_KHR_surfaceless_context"}
config_attribs = {12352, 8, 12344}
cfg = 0x5555556338f0
count = 1
core = {extension_string = 0x555555723290 "GL_AMD_conservative_depth GL_AMD_depth_clamp_separate GL_AMD_draw_buffers_blend GL_AMD_framebuffer_multisample_advanced GL_AMD_gpu_shader_int64 GL_AMD_multi_draw_indirect GL_AMD_performance_monitor GL"..., extension_string_len = 5865, max_glsl_version = 460}
compat = {extension_string = 0x55555579bb50 "GL_ARB_multisample GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_copy_texture GL_EXT_subtexture GL_EXT_texture_object GL_EXT_vertex_array GL_EXT_compiled_"..., extension_string_len = 7676, max_glsl_version = 460}
es = {extension_string = 0x5555556b6230 "GL_EXT_blend_minmax GL_EXT_multi_draw_arrays GL_EXT_texture_filter_anisotropic GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_format_BGR"..., extension_string_len = 3422, max_glsl_version = 320}
es_ctx = <optimized out>
core_ctx = <optimized out>
compat_ctx = <optimized out>
(gdb)