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