[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#868745: Mesa llvmpipe rendering crashes on mips



On Tue, Jul 18, 2017 at 11:20:06AM +0300, Dmitry Shachnev wrote:
> I was debugging a crash which occurs when running qtwebsockets tests on
> mips [1]. This crash happens in llvmpipe thread which is created by Mesa’s
> software renderer. Shortly before the crash, this warning is printed
> multiple times:
>
>   'generic' is not a recognized processor for this target (ignoring processor)
>
> Unfortunately at the moment of the crash the stack of llvmpipe thread is
> corrupted so there is no useful stacktrace from that thread. Therefore I am
> attaching two files:
>
> - stacktrace_threads.txt: Output of ‘thread apply all bt full’ at the moment
>   of the crash. The crashed thread is thread 3.
> - stacktrace_print.txt: Stack trace of the moment when the warning is printed.

This bug still happens with the latest versions of llvm, mesa and Qt
in Buster.

I have managed to obtain a stacktrace just before the crash on mips64el:

#0  glDepthMask (flag=0 '\000') at ././glapi_mapi_tmp.h:44926
#1  0x000000fff7c76cf8 in QOpenGLFunctions::glDepthMask (this=0xffec001e50, flag=0 '\000')
    at /usr/include/mips64el-linux-gnuabi64/qt5/QtGui/qopenglfunctions.h:744
#2  QSGBatchRenderer::Renderer::renderBatches (this=0xffec001d70) at scenegraph/coreapi/qsgbatchrenderer.cpp:2540
#3  0x000000fff7c7d3e4 in QSGBatchRenderer::Renderer::render (this=<optimized out>) at scenegraph/coreapi/qsgbatchrenderer.cpp:2735
#4  0x000000fff7c6aed0 in QSGRenderer::renderScene (bindable=..., this=0xffec001d70) at scenegraph/coreapi/qsgrenderer.cpp:244
#5  QSGRenderer::renderScene (this=0xffec001d70, bindable=...) at scenegraph/coreapi/qsgrenderer.cpp:204
#6  0x000000fff7c6b46c in QSGRenderer::renderScene (this=<optimized out>, fboId=<optimized out>)
    at scenegraph/coreapi/qsgrenderer.cpp:197
#7  0x000000fff7cb5fa0 in QSGDefaultRenderContext::renderNextFrame (this=0xaaaad8c730, renderer=0xffec001d70, fboId=<optimized out>)
    at scenegraph/qsgdefaultrendercontext.cpp:182
#8  0x000000fff7d373e0 in QQuickWindowPrivate::renderSceneGraph (this=0xaaaab402d0, size=...) at items/qquickwindow.cpp:481
#9  0x000000fff7ca35f4 in QSGGuiThreadRenderLoop::renderWindow (this=0xaaaab36df0, window=<optimized out>)
    at /usr/include/mips64el-linux-gnuabi64/qt5/QtCore/qsize.h:119
#10 0x000000fff7ca49c4 in QSGGuiThreadRenderLoop::exposureChanged (this=0xaaaab36df0, window=<optimized out>)
    at scenegraph/qsgrenderloop.cpp:481
#11 0x000000fff71da220 in QWindow::event (this=0xffffffd500, ev=<optimized out>) at kernel/qwindow.cpp:2257
#12 0x000000fff7d44a80 in QQuickWindow::event (this=0xffffffd500, e=0xffffffd320) at items/qquickwindow.cpp:1634
...

The source code of scenegraph/coreapi/qsgbatchrenderer.cpp is here:

https://code.qt.io/cgit/qt/qtdeclarative.git/tree/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp?h=v5.11.3

Qt does not call glDepthMask on line 2540 if QSG_NO_DEPTH_BUFFER=1 environment
variable is set. And setting it makes the tests pass.

--
Dmitry Shachnev

Attachment: signature.asc
Description: PGP signature


Reply to: