[Mesa-dev] [RFC] radeonsi: guard against indexbuf not being set

Clemens Eisserer linuxhippy at gmail.com
Mon Mar 19 20:22:11 UTC 2018


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 at entry=0x5555589e1280, mode=mode at entry=5,
index_bounds_valid=index_bounds_valid at entry=0 '\000',
start=start at entry=0, end=end at entry=4294967295, count=count at 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 at 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 at 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 at entry=0x555556211b70, e=e at 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 at entry=0x55555578bd20,
receiver=receiver at entry=0x555556211b70, e=e at 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 at entry=0x555556211b70,
event=event at 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 at 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 at entry=0x555556211b70, ev=ev at entry=0x7fffffffdf40) at
kernel/qwindow.cpp:2276
#22 0x00007ffff5f62fd5 in QQuickWindow::event(QEvent*)
(this=this at entry=0x555556211b70, e=e at 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 at entry=0x55555578bd20,
receiver=receiver at entry=0x555556211b70, e=e at 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 at 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 at 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 at 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 at entry=0x7fffffffe0e0, flags=..., flags at 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 ()


More information about the mesa-dev mailing list