Bug 247991 - Segfault on some applications using qt5
Summary: Segfault on some applications using qt5
Status: New
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: amd64 Any
: --- Affects Only Me
Assignee: freebsd-ports-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-07-15 08:37 UTC by JKB
Modified: 2020-07-15 09:35 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description JKB 2020-07-15 08:37:18 UTC
Hello,

For several months, all applications linked against qt5 abort with segfault (okular, vlc, libreoffice since yesterday...).

I have rebuilt qt5 (5.14.2) and vlc from source with debug symbols. Backtrace is :

(gdb) bt
#0  0x000000080163fa20 in qt_memfillXX_avx2(unsigned char*, long long
__vector(4), long long) () from /root/qt5/lib/libQt5Gui.so.5
#1  0x00000008018bc2d5 in fillRect_normalized(QRect const&, QSpanData*,
QRasterPaintEnginePrivate*) () from /root/qt5/lib/libQt5Gui.so.5
#2  0x00000008018bdcd6 in QRasterPaintEngine::fillRect(QRectF const&,
QSpanData*) () from /root/qt5/lib/libQt5Gui.so.5
#3  0x00000008018e1a9c in QPainter::fillRect(QRect const&, QBrush const&) ()
   from /root/qt5/lib/libQt5Gui.so.5
#4  0x00000008010c04be in fillRegion(QPainter*, QRegion const&, QBrush
const&)
    () from /root/qt5/lib/libQt5Widgets.so.5
#5  0x00000008010c017f in QWidgetPrivate::paintBackground(QPainter*,
QRegion const&, QFlags<QWidgetPrivate::DrawWidgetFlag>) const ()
   from /root/qt5/lib/libQt5Widgets.so.5

I have tried to rebuild qt5 without optimization (avx2) but I obtain a similar segfault :

(gdb) bt
#0  0x0000000801a0c940 in qt_memfillXX_aligned(void*, long long
__vector(2), unsigned long long) () from
/usr/local/Qt-5.14.2/lib/libQt5Gui.so.5
#1  0x00000008018b4835 in fillRect_normalized(QRect const&, QSpanData*,
QRasterPaintEnginePrivate*) () from /usr/local/Qt-5.14.2/lib/libQt5Gui.so.5
#2  0x00000008018b6236 in QRasterPaintEngine::fillRect(QRectF const&,
QSpanData*) () from /usr/local/Qt-5.14.2/lib/libQt5Gui.so.5
#3  0x00000008018d9ffc in QPainter::fillRect(QRect const&, QBrush const&) ()
   from /usr/local/Qt-5.14.2/lib/libQt5Gui.so.5
#4  0x00000008010c04be in fillRegion(QPainter*, QRegion const&, QBrush
const&)
    () from /usr/local/Qt-5.14.2/lib/libQt5Widgets.so.5
#5  0x00000008010c017f in QWidgetPrivate::paintBackground(QPainter*,
QRegion const&, QFlags<QWidgetPrivate::DrawWidgetFlag>) const ()
   from /usr/local/Qt-5.14.2/lib/libQt5Widgets.so.5
#6  0x00000008010be570 in QWidgetPrivate::drawWidget(QPaintDevice*,
QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>,
QPainter*, QWidgetRepaintManager*) () from
/usr/local/Qt-5.14.2/lib/libQt5Widgets.so.5
#7  0x00000008010a110f in QWidgetRepaintManager::paintAndFlush() ()
   from /usr/local/Qt-5.14.2/lib/libQt5Widgets.so.5
#8  0x000000080109f47b in QWidgetRepaintManager::sync(QWidget*, QRegion
const&)
    () from /usr/local/Qt-5.14.2/lib/libQt5Widgets.so.5
#9  0x00000008010ec834 in QWidgetWindow::handleExposeEvent(QExposeEvent*) ()
   from /usr/local/Qt-5.14.2/lib/libQt5Widgets.so.5

gdb) info register
rax            0x805e1b000         34458415104
rbx            0x272               626
rcx            0x805e58220         34458665504
rdx            0x3d220             250400
rsi            0x3d220             250400
rdi            0x805e1b000         34458415104
rbp            0x7fffffffcc20      0x7fffffffcc20
rsp            0x7fffffffcc20      0x7fffffffcc20
r8             0xff000000          4278190080
r9             0xef                239
r10            0x80186af50         34385342288
r11            0x0                 0
r12            0x804031700         34427049728
r13            0x0                 0
r14            0x64                100
r15            0x0                 0
rip            0x801a0c940         0x801a0c940
<qt_memfillXX_aligned(void*, long long __vector(2), unsigned long long)+32>
eflags         0x10202             [ IF RF ]
cs             0x43                67
ss             0x3b                59
ds             <unavailable>
es             <unavailable>
fs             <unavailable>
gs             <unavailable>
fs_base        0x802ff78e0         34410035424
gs_base        0x0                 0

If I remember, qt5 ran without trouble under FreeBSD 11. My system now runs with :
pythagore:[~] > uname -a
FreeBSD pythagore 12.1-RELEASE-p7 FreeBSD 12.1-RELEASE-p7 GENERIC  amd64

drm seems to run :
drmn0: <drmn> on vgapci0
vgapci0: child drmn0 requested pci_enable_io
vgapci0: child drmn0 requested pci_enable_io
[drm] Unable to create a private tmpfs mount, hugepage support will be disabled(-19).
Failed to add WC MTRR for [0xe0000000-0xefffffff]: -22; performance may suffer
[drm] Got stolen memory base rxdb200000, size 0x4000000
[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[drm] Driver supports precise vblank timestamp query.
[drm] Connector VGA-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.VGA-1
[drm]   - kern.vt.fb.default_mode
[drm] Connector HDMI-A-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.HDMI-A-1
[drm]   - kern.vt.fb.default_mode
[drm] Connector HDMI-A-2: get mode from tunables:
[drm]   - kern.vt.fb.modes.HDMI-A-2
[drm]   - kern.vt.fb.default_mode
[drm] Connector DP-1: get mode from tunables:
[drm]   - kern.vt.fb.modes.DP-1
[drm]   - kern.vt.fb.default_mode
[drm] Connector HDMI-A-3: get mode from tunables:
[drm]   - kern.vt.fb.modes.HDMI-A-3
[drm]   - kern.vt.fb.default_mode
[drm] Initialized i915 1.6.0 20171222 for drmn0 on minor 0
VT: Replacing driver "vga" with new "fb".

This workstation is a diskless machine (with NFS root exported from a NetBSD server) and X works as expected (with acceleration).

Help will be welcome.

Best regards,

JKB
Comment 1 VVD 2020-07-15 08:51:00 UTC
Current version of qt in ports is 5.15.0.
Did you tried it?

BTW, vlc, okular and libreoffice work fine for me with 5.14.2 and with 5.15.0 on 12.1 amd64 (using all 3 almost every day).

P.S. Show what exact error show gdb, before the bt command.
Comment 2 JKB 2020-07-15 08:54:50 UTC
Without avx/avx2, gdb returns :

Thread 1 received signal SIGSEGV, Segmentation fault.
0x0000000801a0c940 in qt_memfillXX_aligned(void*, long long __vector(2),
unsigned long long) () from /usr/local/Qt-5.14.2/lib/libQt5Gui.so.5

I haven't tested with 5.15 (but I obtain same result with older releases and FreeBSD 12).

If I launch these applications on the same workstation with ssh -Y localhost, they run as expected. I suppose this bug is related to drm or graphic adapter.
Comment 3 JKB 2020-07-15 09:35:49 UTC
Libreoffice (6.4.5) runs as expected without qt5 and crashes with segfault with qt5 and with gtk3 (I have removed qt5 from configuration). It is not built with debug symbols, but I'm pretty sure it's the same bug.