Bug 104342

Summary: Segfaults in _mesa_Clear when resizing QtWebEngine window
Product: Mesa Reporter: Florian Bruhin <freedesktop.org>
Component: Drivers/DRI/i965Assignee: Intel 3D Bugs Mailing List <intel-3d-bugs>
Status: RESOLVED DUPLICATE QA Contact: Intel 3D Bugs Mailing List <intel-3d-bugs>
Severity: normal    
Priority: medium CC: evangelos, freedesktop.org
Version: 17.3   
Hardware: Other   
OS: All   
See Also: https://bugs.freedesktop.org/show_bug.cgi?id=104301
https://bugs.freedesktop.org/show_bug.cgi?id=104376
https://bugs.freedesktop.org/show_bug.cgi?id=104392
https://bugs.freedesktop.org/show_bug.cgi?id=104443
Whiteboard:
i915 platform: i915 features:

Description Florian Bruhin 2017-12-19 20:10:33 UTC
When using a QtWebEngine-based browser (such as a 2.x release of QupZilla, or the simplebrowser coming with QtWebEngine's source) and resizing the window a couple of times, I get various crashes.
IIRC, QtWebEngine uses multithreaded OpenGL, which might be related? What I've seen so far:

==========

    #0  0x00007fffd2bd0141 in brw_bo_unreference (bo=0x555500000005) at brw_bufmgr.c:650
    #1  0x00007fffd2c04f4d in intel_destroy_image (image=0x555559857230) at intel_screen.c:582
    #2  0x00007fffd868fedb in dri3_free_render_buffer (draw=draw@entry=0x5555567ccc68, buffer=buffer@entry=0x5555566233f0) at loader_dri3_helper.c:224
    #3  0x00007fffd8691d72 in dri3_get_buffer (driDrawable=driDrawable@entry=0x5555566718e0, format=format@entry=4098, buffer_type=buffer_type@entry=loader_dri3_buffer_back, draw=draw@entry=0x5555567ccc68) at loader_dri3_helper.c:1438
    #4  0x00007fffd8691f61 in loader_dri3_get_buffers (driDrawable=driDrawable@entry=0x5555566718e0, format=4098, stamp=stamp@entry=0x555556671910, loaderPrivate=loaderPrivate@entry=0x5555567ccc68, buffer_mask=buffer_mask@entry=1, buffers=buffers@entry=0x7fffffffc040) at loader_dri3_helper.c:1591
    #5  0x00007fffd2bd4491 in intel_update_image_buffers (brw=brw@entry=0x555557d70460, drawable=drawable@entry=0x5555566718e0) at brw_context.c:1678
    #6  0x00007fffd2bd6991 in intel_update_renderbuffers (context=context@entry=0x555556750ff0, drawable=drawable@entry=0x5555566718e0) at brw_context.c:1358
    #7  0x00007fffd2bd6a62 in intel_prepare_render (brw=brw@entry=0x555557d70460) at brw_context.c:1379
    #8  0x00007fffd2bd2094 in brw_clear (ctx=0x555557d70460, mask=2) at brw_clear.c:278
    #9  0x00007fffd2817136 in clear (no_error=false, mask=16384, ctx=0x555557d70460) at main/clear.c:221
    #10 0x00007fffd2817136 in _mesa_Clear (mask=<optimized out>) at main/clear.c:242
    #11 0x00007fffe96f7dac in QPlatformBackingStore::composeAndFlush(QWindow*, QRegion const&, QPoint const&, QPlatformTextureList*, QOpenGLContext*, bool) () at /home/florian/proj/qutebrowser/git/.tox/py36-pyqt59/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Gui.so.5
    #12 0x00007fffd9a515e7 in  () at /home/florian/proj/qutebrowser/git/.tox/py36-pyqt59/lib/python3.6/site-packages/PyQt5/Qt/plugins/platforms/../../lib/libQt5XcbQpa.so.5
    #13 0x00007fffe73efb87 in  () at /home/florian/proj/qutebrowser/git/.tox/py36-pyqt59/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
    #14 0x00007fffe73f102e in  () at /home/florian/proj/qutebrowser/git/.tox/py36-pyqt59/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
    #15 0x00007fffe73f2cef in  () at /home/florian/proj/qutebrowser/git/.tox/py36-pyqt59/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
    #16 0x00007fffe73f2f1a in  () at /home/florian/proj/qutebrowser/git/.tox/py36-pyqt59/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
    #17 0x00007fffe740945f in QWidgetPrivate::syncBackingStore() () at /home/florian/proj/qutebrowser/git/.tox/py36-pyqt59/lib/python3.6/site-packages/PyQt5/Qt/lib/libQt5Widgets.so.5
    
==========

    #0  0x00007fffd2bd1482 in brw_bo_get_tiling (bo=bo@entry=0x51, tiling_mode=tiling_mode@entry=0x7fffffffbf38, swizzle_mode=swizzle_mode@entry=0x7fffffffbf3c) at brw_bufmgr.c:1104
    #1  0x00007fffd2c01c9e in intel_miptree_create_for_bo (brw=brw@entry=0x555557d6fbc0, bo=0x51, format=format@entry=MESA_FORMAT_B8G8R8X8_UNORM, offset=3746450432, width=4294967295, height=4294967295, depth=1, pitch=1501472960, flags=MIPTREE_CREATE_DEFAULT) at intel_mipmap_tree.c:850
    #2  0x00007fffd2c01f9f in intel_miptree_create_for_dri_image (brw=brw@entry=0x555557d6fbc0, image=image@entry=0x555557ae89a0, target=target@entry=3553, format=MESA_FORMAT_B8G8R8X8_UNORM, is_winsys_image=is_winsys_image@entry=true) at intel_mipmap_tree.c:1039
    #3  0x00007fffd2bd42e6 in intel_update_image_buffer (intel=intel@entry=0x555557d6fbc0, drawable=drawable@entry=0x555556671180, rb=rb@entry=0x5555567e2680, buffer=0x555557ae89a0, buffer_type=buffer_type@entry=__DRI_IMAGE_BUFFER_BACK) at brw_context.c:1629
    #4  0x00007fffd2bd4521 in intel_update_image_buffers (brw=brw@entry=0x555557d6fbc0, drawable=drawable@entry=0x555556671180) at brw_context.c:1700
    #5  0x00007fffd2bd6991 in intel_update_renderbuffers (context=context@entry=0x555556750510, drawable=drawable@entry=0x555556671180) at brw_context.c:1358
    #6  0x00007fffd2bd6a62 in intel_prepare_render (brw=brw@entry=0x555557d6fbc0) at brw_context.c:1379
    #7  0x00007fffd2bd2094 in brw_clear (ctx=0x555557d6fbc0, mask=2) at brw_clear.c:278
    #8  0x00007fffd2817136 in clear (no_error=false, mask=16384, ctx=0x555557d6fbc0) at main/clear.c:221
    #9  0x00007fffd2817136 in _mesa_Clear (mask=<optimized out>) at main/clear.c:242
    (rest like above)

==========
    
    #0  0x00007fffcf858f23 in intel_miptree_create_for_dri_image (brw=brw@entry=0x55555731d880, image=image@entry=0x555558de4340, target=target@entry=3553, format=MESA_FORMAT_B8G8R8X8_UNORM, is_winsys_image=is_winsys_image@entry=true) at intel_mipmap_tree.c:991
    #1  0x00007fffcf82b2e6 in intel_update_image_buffer (intel=intel@entry=0x55555731d880, drawable=drawable@entry=0x5555572f0c30, rb=rb@entry=0x5555584243a0, buffer=0x555558de4340, buffer_type=buffer_type@entry=__DRI_IMAGE_BUFFER_BACK) at brw_context.c:1629
    #2  0x00007fffcf82b521 in intel_update_image_buffers (brw=brw@entry=0x55555731d880, drawable=drawable@entry=0x5555572f0c30) at brw_context.c:1700
    #3  0x00007fffcf82d991 in intel_update_renderbuffers (context=context@entry=0x5555572fa460, drawable=drawable@entry=0x5555572f0c30) at brw_context.c:1358
    #4  0x00007fffcf82da62 in intel_prepare_render (brw=brw@entry=0x55555731d880) at brw_context.c:1379
    #5  0x00007fffcf829094 in brw_clear (ctx=0x55555731d880, mask=2) at brw_clear.c:278
    #6  0x00007fffcf46e136 in clear (no_error=false, mask=16384, ctx=0x55555731d880) at main/clear.c:221
    #7  _mesa_Clear (mask=<optimized out>) at main/clear.c:242
    #8  0x00007fffe5b8e8c1 in QOpenGLFunctions::glClear (mask=16384, this=0x555558422440) at ../../include/QtGui/../../src/gui/opengl/qopenglfunctions.h:643
    #9  QPlatformBackingStore::composeAndFlush (this=this@entry=0x555555aa8660, window=window@entry=0x555555abb120, region=..., offset=..., textures=textures@entry=0x555558db7ea0, translucentBackground=translucentBackground@entry=false) at painting/qplatformbackingstore.cpp:349
    #10 0x00007fffd85de383 in QXcbBackingStore::composeAndFlush (this=this@entry=0x555555aa8660, window=0x555555abb120, region=..., offset=..., textures=textures@entry=0x555558db7ea0, translucentBackground=translucentBackground@entry=false) at qxcbbackingstore.cpp:711
    #11 0x00007fffe5eeb7a2 in QWidgetBackingStore::qt_flush (widget=widget@entry=0x5555559e6000, region=..., backingStore=backingStore@entry=0x7fffd0007c60, tlw=tlw@entry=0x5555559e6000, widgetTextures=widgetTextures@entry=0x555558db7ea0, widgetBackingStore=widgetBackingStore@entry=0x555555acbc50)
        at kernel/qwidgetbackingstore.cpp:146
    #12 0x00007fffe5eef479 in QWidgetBackingStore::sync (this=0x555555acbc50, exposedWidget=0x5555559e6000, exposedRegion=...) at kernel/qwidgetbackingstore.cpp:1120
    #13 0x00007fffe5f0ec1c in QWidgetPrivate::syncBackingStore (this=this@entry=0x5555555e7610, region=...) at kernel/qwidget.cpp:1968
    #14 0x00007fffe5f48a49 in QWidgetWindow::handleExposeEvent (this=this@entry=0x555555abb120, event=event@entry=0x7fffffffda10) at kernel/qwidgetwindow.cpp:954

==========

I'm running Archlinux on a Thinkpad X1 Yoga with an i7-6600U. `glxinfo -B` output:

    name of display: :0
    display: :0  screen: 0
    direct rendering: Yes
    Extended renderer info (GLX_MESA_query_renderer):
        Vendor: Intel Open Source Technology Center (0x8086)
        Device: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2)  (0x1916)
        Version: 17.3.0
        Accelerated: yes
        Video memory: 3072MB
        Unified memory: yes
        Preferred profile: core (0x1)
        Max core profile version: 4.5
        Max compat profile version: 3.0
        Max GLES1 profile version: 1.1
        Max GLES[23] profile version: 3.2
    OpenGL vendor string: Intel Open Source Technology Center
    OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2) 
    OpenGL core profile version string: 4.5 (Core Profile) Mesa 17.3.0
    OpenGL core profile shading language version string: 4.50
    OpenGL core profile context flags: (none)
    OpenGL core profile profile mask: core profile
    
    OpenGL version string: 3.0 Mesa 17.3.0
    OpenGL shading language version string: 1.30
    OpenGL context flags: (none)
    
    OpenGL ES profile version string: OpenGL ES 3.2 Mesa 17.3.0
    OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20


lspci: 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 520 (rev 07) (prog-if 00 [VGA controller])
uname -a: Linux hooch 4.14.6-1-ARCH #1 SMP PREEMPT Thu Dec 14 21:26:16 UTC 2017 x86_64 GNU/Linux

Let me know if you need more information!
Comment 1 Evangelos Foutras 2018-01-11 05:35:35 UTC
Based on your backtraces, the patch being worked on in bug 104214 should fix this as well. Since you're on Arch, you can also try the mesa package linked from [1].

[1] https://bugs.freedesktop.org/show_bug.cgi?id=104214#c34

*** This bug has been marked as a duplicate of bug 104214 ***
Comment 2 Florian Bruhin 2018-01-11 08:09:31 UTC
I can confirm that's the case - thanks!

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.