<div dir="ltr"><div>Can you test this?<br><br>diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c<br>index b95a2522b2e..73f936bb4a9 100644<br>--- a/src/mesa/state_tracker/st_draw.c<br>+++ b/src/mesa/state_tracker/st_draw.c<br>@@ -173,6 +173,13 @@ st_draw_vbo(struct gl_context *ctx,<br>          /* indices are in a real VBO */<br>          info.has_user_indices = false;<br>          info.index.resource = st_buffer_object(bufobj)->buffer;<br>+<br>+         /* Return if the bound element array buffer doesn't have any backing<br>+          * storage. (nothing to do)<br>+          */<br>+         if (!info.index.resource)<br>+            return;<br>+<br>          start = pointer_to_offset(ib->ptr) / info.index_size;<br>       } else {<br>          /* indices are in user space memory */<br><br><br></div>Marek<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 19, 2018 at 4:22 PM, Clemens Eisserer <span dir="ltr"><<a href="mailto:linuxhippy@gmail.com" target="_blank">linuxhippy@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Marek and Roman,<br>
<span class=""><br>
> Set this environment variable to disable multithreading:<br>
> GALLIUM_THREAD=0<br>
<br>
</span>Thanks, so at least I get now a proper stacktrace (at the bottom).<br>
<br>
I am no OpenGL expert, the only thing I find suspicious is that the<br>
last function before entering mesa code actually has a parameter<br>
indexbuf set to 0x555558b32b18, while in si_draw_vbo indexbuf=0.<br>
However, those two might be completly unrelated indexbuf variables of course.<br>
<br>
Best regards, Clemens<br>
<br>
<br>
Thread 1 "kwin" received signal SIGSEGV, Segmentation fault.<br>
si_draw_vbo (ctx=0x5555590ed3e0, info=0x7fffffffd020) at si_state_draw.c:1372<br>
1372            } else if (sctx->b.chip_class <= CIK &&<br>
#0  0x00007fffc37fa890 in si_draw_vbo (ctx=0x5555590ed3e0,<br>
info=0x7fffffffd020) at si_state_draw.c:1372<br>
        sctx = 0x5555590ed3e0<br>
        rs = <optimized out><br>
        indexbuf = 0x0<br>
        dirty_tex_counter = <optimized out><br>
        rast_prim = <optimized out><br>
        index_size = 2<br>
        index_offset = 0<br>
#1  0x00007fffc352180c in u_vbuf_draw_vbo (mgr=0x5555584c57a0,<br>
info=<optimized out>) at util/u_vbuf.c:1142<br>
        pipe = 0x5555590ed3e0<br>
        start_vertex = <optimized out><br>
        min_index = <optimized out><br>
        num_vertices = <optimized out><br>
        unroll_indices = 0 '\000'<br>
        used_vb_mask = <optimized out><br>
        user_vb_mask = <optimized out><br>
        incompatible_vb_mask = 0<br>
        new_info =<br>
          {index_size = 10 '\n', mode = PIPE_PRIM_POINTS,<br>
primitive_restart = 0, has_user_indices = 0, vertices_per_patch = 0<br>
'\000', start = 0, count = 16, start_instance = 0, instance_count =<br>
16, drawid = 0, index_bias = 1486497808, min_index = 21845, max_index<br>
= 1494143968, restart_index = 21845, index = {resource =<br>
0x7fffc37cf21c <si_set_constant_buffer+572>, user = 0x7fffc37cf21c<br>
<si_set_constant_buffer+572>}, indirect = 0x100000001,<br>
count_from_stream_output = 0x10}<br>
#2  0x00007fffc32aeb9f in st_draw_vbo (ctx=<optimized out>,<br>
prims=0x7fffffffd100, nr_prims=<optimized out>, ib=0x7fffffffd0e0,<br>
index_bounds_valid=<optimized out>, min_index=<optimized out>,<br>
max_index=<optimized out>, tfb_vertcount=0x0, stream=0, indirect=0x0)<br>
at state_tracker/st_draw.c:227<br>
        st = 0x555558be7170<br>
        info =<br>
          {index_size = 2 '\002', mode = PIPE_PRIM_TRIANGLE_STRIP,<br>
primitive_restart = 0, has_user_indices = 0, vertices_per_patch = 3<br>
'\003', start = 1, count = 4, start_instance = 0, instance_count = 1,<br>
drawid = 0, index_bias = 0, min_index = 0, max_index = 4294967295,<br>
restart_index = 21845, index = {resource = 0x0, user = 0x0}, indirect<br>
= 0x0, count_from_stream_output = 0x0}<br>
        i = <optimized out><br>
        start = 1<br>
#3  0x00007fffc3271d58 in vbo_validated_<wbr>drawrangeelements<br>
(ctx=ctx@entry=0x5555589e1280, mode=mode@entry=5,<br>
index_bounds_valid=index_<wbr>bounds_valid@entry=0 '\000',<br>
start=start@entry=0, end=end@entry=4294967295, count=count@entry=4,<br>
type=5123, indices=0x2, basevertex=0, numInstances=1, baseInstance=0)<br>
at vbo/vbo_exec_array.c:925<br>
        vbo = <optimized out><br>
        ib = {count = 4, index_size = 2, obj = 0x555558fab6e0, ptr = 0x2}<br>
        prim = {mode = 5, indexed = 1, begin = 1, end = 1, weak = 0,<br>
no_current_update = 0, is_indirect = 0, pad = 0, start = 0, count = 4,<br>
basevertex = 0, num_instances = 1, base_instance = 0, draw_id = 0,<br>
indirect_offset = 1}<br>
#4  0x00007fffc32724cf in vbo_exec_DrawElements (mode=5, count=4,<br>
type=5123, indices=0x2) at vbo/vbo_exec_array.c:1075<br>
        ctx = 0x5555589e1280<br>
#5  0x00007ffff5ec9d5f in QOpenGLFunctions::<wbr>glDrawElements(unsigned<br>
int, int, unsigned int, void const*) (indices=<optimized out>,<br>
type=5123, count=<optimized out>, mode=<optimized out>,<br>
this=0x5555591f09b8)<br>
    at /usr/include/qt5/QtGui/<wbr>qopenglfunctions.h:752<br>
        offset = <optimized out><br>
        i = 0<br>
        gn = <optimized out><br>
        sms = 0x55555932aed0<br>
        attrNames = 0x7ffff6382e10<br>
<<wbr>QSGOpaqueTextureMaterialShader<wbr>::attributeNames() const::attr><br>
        e = <optimized out><br>
        dirty = <optimized out><br>
        indexBase = 0x0<br>
        indexBuf = 0x555558b32b18<br>
        material = <optimized out><br>
        program = <optimized out><br>
        batch = 0x555558b32ae0<br>
        this = 0x5555591f08e0<br>
#6  0x00007ffff5ec9d5f in<br>
QSGBatchRenderer::Renderer::<wbr>renderMergedBatch(<wbr>QSGBatchRenderer::Batch<br>
const*) (this=0x5555591f08e0, batch=0x555558b32ae0) at<br>
scenegraph/coreapi/<wbr>qsgbatchrenderer.cpp:2360<br>
        offset = <optimized out><br>
        i = 0<br>
        gn = <optimized out><br>
        sms = 0x55555932aed0<br>
        attrNames = 0x7ffff6382e10<br>
<<wbr>QSGOpaqueTextureMaterialShader<wbr>::attributeNames() const::attr><br>
        e = <optimized out><br>
        dirty = <optimized out><br>
        indexBase = 0x0<br>
        indexBuf = 0x555558b32b18<br>
        material = <optimized out><br>
        program = <optimized out><br>
        batch = 0x555558b32ae0<br>
        this = 0x5555591f08e0<br>
#7  0x00007ffff5ecafa5 in QSGBatchRenderer::Renderer::<wbr>renderBatches()<br>
(this=this@entry=<wbr>0x5555591f08e0) at<br>
scenegraph/coreapi/<wbr>qsgbatchrenderer.cpp:2569<br>
        b = <optimized out><br>
        i = 2<br>
        r = {x1 = <optimized out>, y1 = <optimized out>, x2 =<br>
<optimized out>, y2 = 2159}<br>
        renderOpaque = <optimized out><br>
        renderAlpha = 255<br>
#8  0x00007ffff5ed06f4 in QSGBatchRenderer::Renderer::<wbr>render()<br>
(this=<optimized out>) at scenegraph/coreapi/<wbr>qsgbatchrenderer.cpp:2763<br>
        timer = {t1 = -9223372036854775808, t2 = -9223372036854775808}<br>
        timeRenderLists = 0<br>
        timePrepareOpaque = 0<br>
        timePrepareAlpha = 0<br>
        timeSorting = 0<br>
        timeUploadOpaque = 0<br>
        timeUploadAlpha = 0<br>
        largestVBO = <optimized out><br>
        largestIBO = 1512<br>
#9  0x00007ffff5ec1070 in QSGRenderer::renderScene(<wbr>QSGBindable const&)<br>
(this=0x5555591f08e0, bindable=...) at<br>
scenegraph/coreapi/<wbr>qsgrenderer.cpp:243<br>
        bindTime = 0<br>
        renderTime = 0<br>
        this = 0x5555591f08e0<br>
        bindable = <optimized out><br>
#10 0x00007ffff5ec152b in QSGRenderer::renderScene(<wbr>unsigned int)<br>
(this=<optimized out>, fboId=<optimized out>) at<br>
scenegraph/coreapi/<wbr>qsgrenderer.cpp:196<br>
        bindable = warning: RTTI symbol not found for class<br>
'QSGRenderer::renderScene(<wbr>unsigned int)::B'<br>
{<QSGBindable> = {_vptr.QSGBindable = 0x7ffff638b418 <vtable for<br>
QSGRenderer::renderScene(<wbr>unsigned int)::B+16>}, <No data fields>}<br>
#11 0x00007ffff5efb870 in<br>
QSGDefaultRenderContext::<wbr>renderNextFrame(QSGRenderer*, unsigned int)<br>
(this=0x5555586f3ba0, renderer=0x5555591f08e0, fboId=<optimized out>)<br>
at scenegraph/<wbr>qsgdefaultrendercontext.cpp:<wbr>181<br>
#12 0x00007ffff5f59468 in QQuickWindowPrivate::<wbr>renderSceneGraph(QSize<br>
const&) (this=this@entry=<wbr>0x5555592c4bc0, size=...) at<br>
items/qquickwindow.cpp:474<br>
        fboId = <optimized out><br>
        devicePixelRatio = 1<br>
        _qml_memory_scope = {static state = QQmlMemoryScope::Failed,<br>
pushed = false}<br>
#13 0x00007ffff5eeddc9 in<br>
QSGGuiThreadRenderLoop::<wbr>renderWindow(QQuickWindow*)<br>
(this=0x55555840a640, window=<optimized out>) at<br>
scenegraph/qsgrenderloop.cpp:<wbr>429<br>
        current = <optimized out><br>
        alsoSwap = true<br>
        lastDirtyWindow = <optimized out><br>
        i = <optimized out><br>
        renderTimer = {t1 = -9223372036854775808, t2 = -9223372036854775808}<br>
        renderTime = 0<br>
        syncTime = 0<br>
        polishTime = 0<br>
        swapTime = <optimized out><br>
#14 0x00007ffff5f63036 in QQuickWindow::event(QEvent*)<br>
(this=this@entry=<wbr>0x555556211b70, e=e@entry=0x7fffffffdb10) at<br>
items/qquickwindow.cpp:1588<br>
#15 0x00007ffef81941c3 in PlasmaQuick::Dialog::event(<wbr>QEvent*)<br>
(this=0x555556211b70, event=0x7fffffffdb10) at<br>
/usr/src/debug/kf5-plasma-5.<wbr>44.0-1.fc27.x86_64/src/<wbr>plasmaquick/dialog.cpp:1305<br>
#16 0x00007fffee71292c in QApplicationPrivate::notify_<wbr>helper(QObject*,<br>
QEvent*) (this=this@entry=<wbr>0x55555578bd20,<br>
receiver=receiver@entry=<wbr>0x555556211b70, e=e@entry=0x7fffffffdb10) at<br>
kernel/qapplication.cpp:3722<br>
        consumed = <optimized out><br>
#17 0x00007fffee71a174 in QApplication::notify(QObject*, QEvent*)<br>
(this=0x7fffffffe1d0, receiver=0x555556211b70, e=0x7fffffffdb10) at<br>
kernel/qapplication.cpp:3481<br>
        w = 0x555556211b70<br>
        extra = <optimized out><br>
        isProxyWidget = <optimized out><br>
        res = false<br>
#18 0x00007fffed8a1be7 in QCoreApplication::<wbr>notifyInternal2(QObject*,<br>
QEvent*) (receiver=receiver@entry=<wbr>0x555556211b70,<br>
event=event@entry=<wbr>0x7fffffffdb10) at kernel/qcoreapplication.cpp:<wbr>1016<br>
        selfRequired = true<br>
        result = false<br>
        cbdata = {0x555556211b70, 0x7fffffffdb10, 0x7fffffffdabf}<br>
        d = <optimized out><br>
        threadData = 0x555555761330<br>
        scopeLevelCounter = {threadData = 0x555555761330}<br>
#19 0x00007fffeddffe91 in QCoreApplication::sendEvent(<wbr>QObject*,<br>
QEvent*) (event=0x7fffffffdb10, receiver=<optimized out>) at<br>
../../include/QtCore/../../<wbr>src/corelib/kernel/<wbr>qcoreapplication.h:233<br>
        request =<br>
          {_vptr.QEvent = 0x7fffedcede10 <vtable for QEvent+16>,<br>
static staticMetaObject = {d = {superdata = 0x0, stringdata =<br>
0x7fffed9f91a0 <qt_meta_stringdata_QEvent>, data = 0x7fffed9f8be0<br>
<qt_meta_data_QEvent>, static_metacall = 0x0, relatedMetaObjects =<br>
0x0, extradata = 0x0}}, d = 0x0, t = 77, posted = 0, spont = 0,<br>
m_accept = 1, reserved = 2756}<br>
#20 0x00007fffeddffe91 in QWindowPrivate::<wbr>deliverUpdateRequest()<br>
(this=this@entry=<wbr>0x5555592c4bc0) at kernel/qwindow.cpp:2305<br>
        request =<br>
          {_vptr.QEvent = 0x7fffedcede10 <vtable for QEvent+16>,<br>
static staticMetaObject = {d = {superdata = 0x0, stringdata =<br>
0x7fffed9f91a0 <qt_meta_stringdata_QEvent>, data = 0x7fffed9f8be0<br>
<qt_meta_data_QEvent>, static_metacall = 0x0, relatedMetaObjects =<br>
0x0, extradata = 0x0}}, d = 0x0, t = 77, posted = 0, spont = 0,<br>
m_accept = 1, reserved = 2756}<br>
#21 0x00007fffede003a9 in QWindow::event(QEvent*)<br>
(this=this@entry=<wbr>0x555556211b70, ev=ev@entry=0x7fffffffdf40) at<br>
kernel/qwindow.cpp:2276<br>
#22 0x00007ffff5f62fd5 in QQuickWindow::event(QEvent*)<br>
(this=this@entry=<wbr>0x555556211b70, e=e@entry=0x7fffffffdf40) at<br>
items/qquickwindow.cpp:1607<br>
#23 0x00007ffef81941c3 in PlasmaQuick::Dialog::event(<wbr>QEvent*)<br>
(this=0x555556211b70, event=0x7fffffffdf40) at<br>
/usr/src/debug/kf5-plasma-5.<wbr>44.0-1.fc27.x86_64/src/<wbr>plasmaquick/dialog.cpp:1305<br>
#24 0x00007fffee71292c in QApplicationPrivate::notify_<wbr>helper(QObject*,<br>
QEvent*) (this=this@entry=<wbr>0x55555578bd20,<br>
receiver=receiver@entry=<wbr>0x555556211b70, e=e@entry=0x7fffffffdf40) at<br>
kernel/qapplication.cpp:3722<br>
        consumed = <optimized out><br>
#25 0x00007fffee71a174 in QApplication::notify(QObject*, QEvent*)<br>
(this=0x7fffffffe1d0, receiver=0x555556211b70, e=0x7fffffffdf40) at<br>
kernel/qapplication.cpp:3481<br>
        w = 0x555556211b70<br>
        extra = <optimized out><br>
        isProxyWidget = <optimized out><br>
        res = false<br>
#26 0x00007fffed8a1be7 in QCoreApplication::<wbr>notifyInternal2(QObject*,<br>
QEvent*) (receiver=0x555556211b70, event=event@entry=<wbr>0x7fffffffdf40)<br>
at kernel/qcoreapplication.cpp:<wbr>1016<br>
        selfRequired = true<br>
        result = false<br>
        cbdata = {0x555556211b70, 0x7fffffffdf40, 0x7fffffffdecf}<br>
        d = <optimized out><br>
        threadData = 0x555555761330<br>
        scopeLevelCounter = {threadData = 0x555555761330}<br>
#27 0x00007fffed8f1f5b in QCoreApplication::sendEvent(<wbr>QObject*,<br>
QEvent*) (event=0x7fffffffdf40, receiver=<optimized out>) at<br>
../../include/QtCore/../../<wbr>src/corelib/kernel/<wbr>qcoreapplication.h:233<br>
        e =<br>
          {<QEvent> = {_vptr.QEvent = 0x7fffedcede30 <vtable for<br>
QTimerEvent+16>, static staticMetaObject = {d = {superdata = 0x0,<br>
stringdata = 0x7fffed9f91a0 <qt_meta_stringdata_QEvent>, data =<br>
0x7fffed9f8be0 <qt_meta_data_QEvent>, static_metacall = 0x0,<br>
relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x0, t = 1, posted =<br>
0, spont = 0, m_accept = 1, reserved = 0}, id = 14}<br>
        currentTimerInfo = 0x0<br>
        n_act = 2<br>
        maxCount = <optimized out><br>
        currentTime = {tv_sec = 506, tv_nsec = 958280107}<br>
#28 0x00007fffed8f1f5b in QTimerInfoList::<wbr>activateTimers()<br>
(this=this@entry=<wbr>0x5555557e1f80) at kernel/qtimerinfo_unix.cpp:643<br>
        e =<br>
          {<QEvent> = {_vptr.QEvent = 0x7fffedcede30 <vtable for<br>
QTimerEvent+16>, static staticMetaObject = {d = {superdata = 0x0,<br>
stringdata = 0x7fffed9f91a0 <qt_meta_stringdata_QEvent>, data =<br>
0x7fffed9f8be0 <qt_meta_data_QEvent>, static_metacall = 0x0,<br>
relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x0, t = 1, posted =<br>
0, spont = 0, m_accept = 1, reserved = 0}, id = 14}<br>
        currentTimerInfo = 0x0<br>
        n_act = 2<br>
        maxCount = <optimized out><br>
        currentTime = {tv_sec = 506, tv_nsec = 958280107}<br>
#29 0x00007fffed8ef31c in<br>
QEventDispatcherUNIXPrivate::<wbr>activateTimers()<br>
(this=this@entry=<wbr>0x5555557e1ee0) at<br>
kernel/qeventdispatcher_unix.<wbr>cpp:249<br>
#30 0x00007fffed8f02d8 in<br>
QEventDispatcherUNIX::<wbr>processEvents(QFlags<<wbr>QEventLoop::ProcessEventsFlag><wbr>)<br>
(this=<optimized out>, flags=...) at<br>
kernel/qeventdispatcher_unix.<wbr>cpp:514<br>
        d = 0x5555557e1ee0<br>
        include_timers = true<br>
        canWait = <optimized out><br>
        tm = <optimized out><br>
        wait_tm = {tv_sec = 0, tv_nsec = 0}<br>
        nevents = 1<br>
#31 0x00007fffd6b16f6d in<br>
QUnixEventDispatcherQPA::<wbr>processEvents(QFlags<<wbr>QEventLoop::ProcessEventsFlag><wbr>)<br>
(this=<optimized out>, flags=...) at qunixeventdispatcher.cpp:68<br>
        didSendEvents = <optimized out><br>
#32 0x00007fffed8a096a in<br>
QEventLoop::exec(QFlags<<wbr>QEventLoop::ProcessEventsFlag><wbr>)<br>
(this=this@entry=<wbr>0x7fffffffe0e0, flags=..., flags@entry=...) at<br>
kernel/qeventloop.cpp:212<br>
        d = 0x5555557edc30<br>
        locker = {val = 93824994387632}<br>
        ref = {d = 0x5555557edc30, locker = @0x7fffffffe068,<br>
exceptionCaught = true}<br>
#33 0x00007fffed8a9094 in QCoreApplication::exec() () at<br>
kernel/qcoreapplication.cpp:<wbr>1289<br>
        threadData = 0x555555761330<br>
        eventLoop =<br>
              {<QObject> = {_vptr.QObject = 0x7fffedcedbc8 <vtable for<br>
QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0,<br>
stringdata = 0x7fffed9fd6c0 <qt_meta_stringdata_QObject>, data =<br>
0x7fffed9fd5a0 <qt_meta_data_QObject>, static_metacall =<br>
0x7fffed8d20d0 <QObject::qt_static_metacall(<wbr>QObject*,<br>
QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata<br>
= 0x0}}, d_ptr = {d = 0x5555557edc30}, static staticQtMetaObject = {d<br>
= {superdata = 0x0, stringdata = 0x7fffeda00360<br>
<qt_meta_stringdata_Qt>, data = 0x7fffed9fd7e0 <qt_meta_data_Qt>,<br>
static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}},<br>
static staticMetaObject = {d = {superdata = 0x7fffedce6280<br>
<QObject::staticMetaObject>, stringdata = 0x7fffed9f82c0<br>
<qt_meta_stringdata_<wbr>QEventLoop>, data = 0x7fffed9f8260<br>
<qt_meta_data_QEventLoop>, static_metacall = 0x7fffed8a0660<br>
<QEventLoop::qt_static_<wbr>metacall(QObject*, QMetaObject::Call, int,<br>
void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}<br>
        returnCode = <optimized out><br>
#34 0x00007ffff7bd317b in kdemain(int, char**) (argc=<optimized out>,<br>
argv=0x7fffffffe368) at<br>
/usr/src/debug/kwin-5.12.2-1.<wbr>fc27.x86_64/main_x11.cpp:468<br>
        primaryScreen = 0<br>
        c = 0x0<br>
        number_of_screens = <optimized out><br>
        a =<br>
          {<KWin::Application> = {<No data fields>}, static<br>
staticMetaObject = {d = {superdata = 0x7ffff7bbfb40<br>
<KWin::Application::<wbr>staticMetaObject>, stringdata = 0x7ffff7bd5020<br>
<qt_meta_stringdata_KWin__<wbr>ApplicationX11>, data = 0x7ffff7bd4fc0<br>
<qt_meta_data_KWin__<wbr>ApplicationX11>, static_metacall = 0x7ffff7bd45f0<br>
<KWin::ApplicationX11::qt_<wbr>static_metacall(QObject*, QMetaObject::Call,<br>
int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, owner = {d<br>
= 0x5555557ec1e0}, m_replace = false}<br>
        replaceOption = {d = {d = 0x5555557e5f60}}<br>
        parser = {d = 0x5555557c7cc0}<br>
        noActivitiesOption = {d = {d = 0x5555557f3970}}<br>
        plugins = {d = 0x5555557f2f20}<br>
        helper = <incomplete type><br>
#35 0x00007fffec9d2f2a in __libc_start_main () at /lib64/libc.so.6<br>
#36 0x0000555555554c1a in _start ()<br>
<div class="HOEnZb"><div class="h5">______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</div></div></blockquote></div><br></div>