[Bug 105438] Indexing by ivec causes crash

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Mar 29 12:51:37 UTC 2018


https://bugs.freedesktop.org/show_bug.cgi?id=105438

--- Comment #1 from Andriy Khulap <andriy.khulap at globallogic.com> ---
I can reproduce this issue on Skylake with most mesa versions: 11.0.0-rc1 ..
17.3.6 .. latest git master in firefox, chrome and chromium browsers.

The crash is caused by the unreachable("not reached"); trap in the end of void
nir_visitor::visit(ir_expression *ir) (src/compiler/glsl/glsl_to_nir.cpp, line
1963).


Issue can be fixed by adding empty case for ir_binop_vector_extract:

diff --git a/src/compiler/glsl/glsl_to_nir.cpp
b/src/compiler/glsl/glsl_to_nir.cpp
index c4a6d52a5b..24acfa1f8d 100644
--- a/src/compiler/glsl/glsl_to_nir.cpp
+++ b/src/compiler/glsl/glsl_to_nir.cpp
@@ -1952,6 +1952,9 @@ nir_visitor::visit(ir_expression *ir)
    case ir_quadop_vector:
       result = nir_vec(&b, srcs, ir->type->vector_elements);
       break;
+   case ir_binop_vector_extract:
+      /* Prevent the unreachable trap */
+      break;

    default:
       unreachable("not reached");


or by adding its handler to special cases:

diff --git a/src/compiler/glsl/glsl_to_nir.cpp
b/src/compiler/glsl/glsl_to_nir.cpp
index c4a6d52a5b..d9efdd7170 100644
--- a/src/compiler/glsl/glsl_to_nir.cpp
+++ b/src/compiler/glsl/glsl_to_nir.cpp
@@ -1493,6 +1493,12 @@ nir_visitor::visit(ir_expression *ir)
       return;
    }

+   case ir_binop_vector_extract:
+      assert(ir->num_operands == 2);
+      ir->operands[0]->accept(this);
+      ir->operands[1]->accept(this);
+      return;
+
    default:
       break;
    }

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-3d-bugs/attachments/20180329/6426047f/attachment.html>


More information about the intel-3d-bugs mailing list