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