Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SOLVED] Qt5 applications segmentation fault in Gentoo VM
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index Desktop Environments
View previous topic :: View next topic  
Author Message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Fri Aug 12, 2022 7:23 pm    Post subject: [SOLVED] Qt5 applications segmentation fault in Gentoo VM Reply with quote

Hello,

I am running KeePassXC 2.7.1-r1 on my main workstation without any problem. However, inside of a Gentoo VirtualBox guest, I get a segfault when trying to open the GUI. Though I haven't tested all functionality, it seems like using keepassxc-cli works. I'm guessing that this could be a problem related to Qt, but I'm not certain. Has anyone else run into a similar problem with the GUI inside a VM?

Thank you.

Cheers,
Nathan Zachary
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---


Last edited by NathanZachary on Mon Aug 22, 2022 7:45 pm; edited 2 times in total
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Fri Aug 12, 2022 10:29 pm    Post subject: Reply with quote

Use
Code:
strace -f -o /tmp/strace.log keepassxc

to find the last system call(s) before the segfault.
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Mon Aug 15, 2022 4:34 pm    Post subject: Reply with quote

Thank you for your reply. I had already run strace on it, but wasn't able to come up with any hints:

Code:

2335  access("/usr/lib64/qt5/plugins/iconengines/.", F_OK) = 0
2335  openat(AT_FDCWD, "/usr/lib64/qt5/plugins/iconengines", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 11
2335  newfstatat(11, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
2335  getdents64(11, 0x560dd4d10a70 /* 3 entries */, 32768) = 88
2335  getdents64(11, 0x560dd4d10a70 /* 0 entries */, 32768) = 0
2335  close(11)                         = 0
2335  readlink("/usr", 0x7ffdcdce4850, 1023) = -1 EINVAL (Invalid argument)
2335  readlink("/usr/lib64", 0x7ffdcdce4850, 1023) = -1 EINVAL (Invalid argument)
2335  readlink("/usr/lib64/qt5", 0x7ffdcdce4850, 1023) = -1 EINVAL (Invalid argument)
2335  readlink("/usr/lib64/qt5/plugins", 0x7ffdcdce4850, 1023) = -1 EINVAL (Invalid argument)
2335  readlink("/usr/lib64/qt5/plugins/iconengines", 0x7ffdcdce4850, 1023) = -1 EINVAL (Invalid argument)
2335  readlink("/usr/lib64/qt5/plugins/iconengines/libqsvgicon.so", 0x7ffdcdce4850, 1023) = -1 EINVAL (Invalid argument)
2335  openat(AT_FDCWD, "/usr/lib64/qt5/plugins/iconengines/libqsvgicon.so", O_RDONLY|O_CLOEXEC) = 11
2335  statx(11, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=39656, ...}) = 0
2335  statx(11, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=39656, ...}) = 0
2335  mmap(NULL, 39656, PROT_READ, MAP_SHARED, 11, 0) = 0x7f28a02f8000
2335  close(11)                         = 0
2335  munmap(0x7f28a02f8000, 39656)     = 0
2335  access("/usr/bin/iconengines/.", F_OK) = -1 ENOENT (No such file or directory)
2335  statx(AT_FDCWD, "/root/.icons", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, STATX_ALL, 0x7ffdcdce5200) = -1 ENOENT (No such file or directory)
2335  statx(AT_FDCWD, "/root/.local/share/icons", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, STATX_ALL, 0x7ffdcdce5160) = -1 ENOENT (No such file or directory)
2335  statx(AT_FDCWD, "/usr/local/share/icons", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, STATX_ALL, 0x7ffdcdce5160) = -1 ENOENT (No such file or directory)
2335  statx(AT_FDCWD, "/usr/share/icons", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, STATX_ALL, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0
2335  write(5, "\1\0\0\0\0\0\0\0", 8)   = 8
2335  --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
2337  <... poll resumed> <unfinished ...>) = ?
2336  <... poll resumed> <unfinished ...>) = ?
2337  +++ killed by SIGSEGV +++
2336  +++ killed by SIGSEGV +++
2335  +++ killed by SIGSEGV +++


The only thing that I thought it might be is qtsvg, but that is installed.

Thanks again for the suggestion!
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Mon Aug 15, 2022 5:32 pm    Post subject: Reply with quote

What does the command below return?
Code:
grep -A 5 "12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS" /tmp/strace.log

On my machine, I get many blocks like the one below:
Code:
27506 mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3ad1eb5000
27506 mlock(0x7f3ad1eb6000, 4096)       = 0
27506 madvise(0x7f3ad1eb6000, 4096, MADV_DONTDUMP) = 0
27506 mprotect(0x7f3ad1eb5000, 4096, PROT_NONE) = 0
27506 mprotect(0x7f3ad1eb7000, 4096, PROT_NONE) = 0

Are there any blocks where mmap returns an error or where one of the other system calls returns an error (!= 0)?
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Mon Aug 15, 2022 5:57 pm    Post subject: Reply with quote

I also get a lot of those blocks, and the only one that has a non-zero is right at the start of the output:

Code:

2335  mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f28a13ff000
2335  arch_prctl(ARCH_SET_FS, 0x7f28a13ff7c0) = 0
2335  set_tid_address(0x7f28a13ffa90)   = 2335
2335  set_robust_list(0x7f28a13ffaa0, 24) = 0
2335  rseq(0x7f28a1400160, 0x20, 0, 0x53053053) = 0
2335  mprotect(0x7f28a4223000, 16384, PROT_READ) = 0


but seeing as the non-zero is for set_tid_address, I would expect that it should be 2355 as that is the thread ID.

Thank you for continuing to help me with troubleshooting.
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 21606

PostPosted: Mon Aug 15, 2022 6:33 pm    Post subject: Reply with quote

Although strace can help, segmentation faults are often more readily diagnosed by inspecting the core file. Is there anything useful in a gdb backtrace of the crashed process?
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Mon Aug 15, 2022 9:07 pm    Post subject: Reply with quote

Looking at the backtrace, I see:

Code:

(gdb) run
Starting program: /usr/bin/keepassxc
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7ffff2d15640 (LWP 28141)]
[New Thread 0x7ffff24f1640 (LWP 28142)]

Thread 1 "keepassxc" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0  0x0000000000000000 in ?? ()
#1  0x0000555555643dcd in AdaptiveIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State) ()
#2  0x00007ffff6cbe424 in QIcon::pixmap(QWindow*, QSize const&, QIcon::Mode, QIcon::State) const () from /usr/lib64/libQt5Gui.so.5
#3  0x00007ffff6cbe52e in QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const () from /usr/lib64/libQt5Gui.so.5
#4  0x000055555571e90e in KMessageWidgetPrivate::init(KMessageWidget*) ()
#5  0x000055555571f16f in KMessageWidget::KMessageWidget(QWidget*) ()
#6  0x00005555556293c0 in MessageWidget::MessageWidget(QWidget*) ()
#7  0x0000555555621d80 in Ui_MainWindow::setupUi(QMainWindow*) ()
#8  0x00005555556161d2 in MainWindow::MainWindow() ()
#9  0x00005555555f0954 in main ()


I don't see any differences between dev-qt/qtgui on my workstation (on which KeePassXC works) and in the VM (in which KeePassXC segfaults).
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Tue Aug 16, 2022 10:05 pm    Post subject: Reply with quote

Okay, so it's not just KeePassXC, but Qt5 applications. As a test, I emerged app-editor/tea, which is just a simple Qt5 text editor, and it segfaults as well:

Code:

Thread 1 "tea" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) backtrace
#0  0x0000000000000000 in ?? ()
#1  0x00007ffff7051d8b in QPainter::fillRect(QRect const&, QBrush const&) () from /usr/lib64/libQt5Gui.so.5
#2  0x00007ffff79854b2 in ?? () from /usr/lib64/libQt5Widgets.so.5
#3  0x00007ffff7985857 in QWidgetPrivate::paintBackground(QPainter*, QRegion const&, QFlags<QWidgetPrivate::DrawWidgetFlag>) const () from /usr/lib64/libQt5Widgets.so.5
#4  0x00007ffff7987f7d in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () from /usr/lib64/libQt5Widgets.so.5
#5  0x00007ffff795e538 in ?? () from /usr/lib64/libQt5Widgets.so.5
#6  0x00007ffff795ed6a in ?? () from /usr/lib64/libQt5Widgets.so.5
#7  0x00007ffff79abaec in ?? () from /usr/lib64/libQt5Widgets.so.5
#8  0x00007ffff794d0de in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#9  0x00007ffff6410238 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#10 0x00007ffff6e23321 in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) () from /usr/lib64/libQt5Gui.so.5
#11 0x00007ffff6e01b0c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Gui.so.5
#12 0x00007ffff23c56fa in ?? () from /usr/lib64/libQt5XcbQpa.so.5
#13 0x00007ffff4b03a99 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#14 0x00007ffff4b03d28 in ?? () from /usr/lib64/libglib-2.0.so.0
#15 0x00007ffff4b03dbc in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#16 0x00007ffff64602f6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#17 0x00007ffff640ed0b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#18 0x00007ffff6416d16 in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5
#19 0x000055555558fda6 in main ()


I'm not really sure where to go from here, as it appears to end with the same libQt5Gui.so.5 shared library.
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Tue Aug 16, 2022 10:27 pm    Post subject: Reply with quote

Thanks for the update. Now we know that it's not related to keypassxc.

The segfaults in both backtraces seem to be related to low-level graphics operations. It could be a bug in the graphics driver.

Which graphics card does your VM emulate? And which graphics driver do you use? Can you try a different version?

Do you know how gdb works? I would try to set a breakpoint at
Code:
QPainter::fillRect(QRect const&, QBrush const&)

or at
Code:
AdaptiveIconEngine::pixmap(QSize const&, QIcon::Mode, QIcon::State)

After that, I would continue in single-step mode until I hit the error. Hopefully, that would reveal the library in which the error occurs.
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Wed Aug 17, 2022 12:03 am    Post subject: Reply with quote

When stepping back after the breakpoint (using `stepi`), I get:

Code:

0x00007ffff6c90e70 in QImage::detach() () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918c3 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918c7 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918ca in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918d0 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918d3 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918d7 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918db in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918df in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918e2 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918e6 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918e9 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918ef in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918f2 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918f8 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c918fb in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91901 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91904 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c9190a in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c9190d in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91913 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91916 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91919 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c9191b in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c9191e in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a80 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a82 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a85 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a8b in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a8e in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a91 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c9192a in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91932 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91935 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a40 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a45 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a4e in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a54 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a5b in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a5e in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a60 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a63 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a67 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a6a in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a6e in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a6f in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a70 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a72 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a74 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a76 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x00007ffff6c91a78 in QImage::fill(unsigned int) () from /usr/lib64/libQt5Gui.so.5
(gdb)
0x0000000000000000 in ?? ()
(gdb)

Thread 1 "keepassxc" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb)
Couldn't get registers: No such process.
(gdb) [Thread 0x7ffff24f1640 (LWP 5098) exited]
[Thread 0x7ffff2d15640 (LWP 5097) exited]

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.


So it still looks like the last known call is to libQt5Gui.so.5. I'm using the 'VMSVGA' driver, but I have tried switching to 'VBoxSVGA' as well.
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 21606

PostPosted: Wed Aug 17, 2022 12:25 am    Post subject: Reply with quote

This might be easier to approach if qt5gui was built with more complete debug information, so that we could see file and line number progress as you step through it. Otherwise, you could try to map the faulting instruction to the corresponding source by hand. Either way, the goal is to understand what variable was unexpectedly null, and then find how that happened. The authors clearly expected it would never be null here; otherwise, they would have handled this gracefully.
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Wed Aug 17, 2022 4:55 am    Post subject: Reply with quote

I enabled debugging with `-Wall -g -ggdb` added to CFLAGS, and USE="debug" for qtgui. By doing a full gdb stepi through after the break, I see the following relevant parts:

Code:

0x00007ffff6c28e4f   1105   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c28e50   1105   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
QImage::fill (pixel=0, this=0x7fffffffd690) at /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp:1734
1734   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c298e7   1734   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c298ea   1734   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
1737   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c298f3   1748   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c298f7   1748   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c298fb   1738   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c298ff   1737   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29902   1748   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29906   1748   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29909   1737   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c2990f   1737   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29912   1737   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
1751   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c2991b   1751   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
1757   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29924   1757   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
1763   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c2992d   1763   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
1769   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29936   1769   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29939   1769   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
1771   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c2993e   1771   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
1777   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29aa2   1777   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29aa5   1778   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29aab   1778   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29aae   1778   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29ab1   1778   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
qt_rectfill<unsigned int> (x=0, y=0, stride=37, height=0, width=7106418, value=<optimized out>, dest=0x0) at /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h:951
951   /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h: No such file or directory.
(gdb)
0x00007ffff6c29952   955   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
0x00007ffff6c29955   955   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
qt_memfill<unsigned int> (count=113702688, color=<optimized out>, dest=0x0) at /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h:932
932   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
0x00007ffff6c29a65   932   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
0x00007ffff6c29a6e   932   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
0x00007ffff6c29a74   932   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
0x00007ffff6c29a7b in qt_rectfill<unsigned int> (x=0, y=0, stride=37, height=0, width=7106418, value=<optimized out>, dest=0x0) at /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h:956
956   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
0x00007ffff6c29a7e in qt_memfill<unsigned int> (count=113702688, color=<optimized out>, dest=0x0) at /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h:932
932   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
0x00007ffff6c29a80   932   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
0x00007ffff6c29a83 in qt_rectfill<unsigned int> (x=0, y=0, stride=37, height=0, width=7106418, value=<optimized out>, dest=0x0) at /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h:956
956   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
0x00007ffff6c29a87 in qt_memfill<unsigned int> (count=113702688, color=<optimized out>, dest=0x0) at /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h:932
932   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h
(gdb)
0x00007ffff6c29a8a in QImage::fill (this=this@entry=0x7fffffffd690, pixel=pixel@entry=0) at /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp:1782
1782   /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp: No such file or directory.
(gdb)
0x00007ffff6c29a8e   1782   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29a8f   1782   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29a90   1782   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29a92   1782   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29a94   1782   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29a96   1782   in /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/src/gui/image/qimage.cpp
(gdb)
0x00007ffff6c29a98 in qt_memfill<unsigned int> (count=256, color=<optimized out>, dest=0x555555bc2c30) at /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h:932
932   /var/tmp/portage/dev-qt/qtgui-5.15.5-r2/work/qtbase-everywhere-src-5.15.5/include/QtGui/5.15.5/QtGui/private/../../../../../src/gui/painting/qdrawhelper_p.h: No such file or directory.
(gdb)
0x0000000000000000 in ?? ()
(gdb)

Thread 1 "keepassxc" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb)
Couldn't get registers: No such process.
(gdb) [Thread 0x7ffff244e640 (LWP 12928) exited]
[Thread 0x7ffff32c17c0 (LWP 12924) exited]
[Thread 0x7ffff2c72640 (LWP 12927) exited]
[New process 12924]

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.

The program is not being run.
(gdb)


Full output: https://pastebin.com/zcDYycqU
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Thu Aug 18, 2022 3:09 am    Post subject: Reply with quote

As this problem does seem to reside within the qtgui library, I have filed the following bug for the Qt developers:

https://bugreports.qt.io/browse/QTBUG-105740
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Thu Aug 18, 2022 10:14 pm    Post subject: Reply with quote

Sorry for not responding earlier.

The error seems to occur here (qdrawhelper_p.h:932):
Code:
template<> inline void qt_memfill(quint32 *dest, quint32 color, qsizetype count)
{
    qt_memfill32(dest, color, count);
}

Parameters look good:
Code:
qt_memfill<unsigned int> (count=256, color=<optimized out>, dest=0x555555bc2c30)

qt_memfill32 is a bit special, because multiple versions of it can be installed (qdrawhelper.cpp:6719):
Code:
#if !defined(__SSE2__) && !defined(__ARM_NEON__) && !defined(__MIPS_DSP__)
void qt_memfill32(quint32 *dest, quint32 color, qsizetype count)
{
    qt_memfill_template<quint32>(dest, color, count);
}
#endif
#ifdef __SSE2__
decltype(qt_memfill32_sse2) *qt_memfill32 = nullptr;
decltype(qt_memfill64_sse2) *qt_memfill64 = nullptr;
#endif

Currently, I don't understand what's going on here - and how the final version of the function is chosen. But it seems that something goes wrong during the function call. 0x00000000 is loaded to the instruction pointer instead of the address of a real function:
Code:
0x0000000000000000 in ?? ()

And that leads to a segmentation fault during the next step, of course.

A wild guess: it could be that qtgui - or parts of it - or a plugin - were compiled for a wrong instruction set. But that's just a wild guess!

If you run keepassxc from a terminal window: are there any warnings or error messages that could help us?
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Fri Aug 19, 2022 12:09 am    Post subject: Reply with quote

Thank you for your response, mike155, and no worries about the delay. I wonder if it has anything to do with the problem I ran into regarding march=alderlake?:

https://forums.gentoo.org/viewtopic-t-1155713-highlight-.html
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 21606

PostPosted: Fri Aug 19, 2022 12:34 am    Post subject: Reply with quote

Based on mike155's observation, my guess then would be that:
  • This function pointer is meant to be used to point to the "best" version of the function for your CPU architecture.
  • The function pointer is assumed to be always initialized to a valid value by the time it is read.
  • You have found a configuration that violates that assumption, so the pointer is still nullptr (0) at the time that it is called. For reasons not yet understood, the function pointer is never written before it is used.
If you lack SSE2, this function pointer is never defined or used. If you have SSE2:
  • If you lack AVX, the pointer will be set to qt_memfill32_sse2.
  • If defined QT_COMPILER_SUPPORTS_AVX2 and qCpuHasFeature(ArchHaswell) succeeds, then the pointer will be set to qt_memfill32_avx2.
  • Otherwise, the pointer is not written, at least by qdrawhelper.cpp. As a non-static global, it could be written from anywhere. However, I don't see any other places it is written.
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Fri Aug 19, 2022 1:00 am    Post subject: Reply with quote

@NathanZachary: based on Hu's analysis, please compile and run the C program "test_sse2.c" below:
Code:
#include <stdio.h>

int main() {

#if defined(__SSE2__)
    printf( "__SSE2__ is defined\n" );
#else
    printf( "__SSE2__ is NOT defined\n" );
#endif
}

Code:
gcc -o test_sse2 test_sse2.c
./test_sse2

What does it print?
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Fri Aug 19, 2022 2:50 pm    Post subject: Reply with quote

Thank you, Hu and mike155, for the suggestions. The processor definitely should have SSE2 support, but I checked just to make sure:

Code:

$ cat /proc/cpuinfo | grep sse2 | tail -n 1
flags      : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase avx2 invpcid rdseed clflushopt md_clear flush_l1d arch_capabilities


Code:

$ gcc -Q --help=target -march=native | grep sse2
  -msse2                            [enabled]
  -msse2avx                         [disabled]


Code:

$ ./test_sse2
__SSE2__ is defined


So, based on the output of the `gcc -Q` command above, the pointer should be set to 'qt_memfill32_sse2'.

Cheers,
Nathan Zachary
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 21606

PostPosted: Fri Aug 19, 2022 3:31 pm    Post subject: Reply with quote

NathanZachary wrote:
The processor definitely should have SSE2 support, but I checked just to make sure:
For this purpose, we care whether Qt was compiled to believe you have that support, not whether you actually have it. Believing it falsely would lead to problems later, but of a different type than we are currently chasing.
NathanZachary wrote:
Code:
$ cat /proc/cpuinfo | grep sse2 | tail -n 1
Useless Use Of Cat.
NathanZachary wrote:
Code:
$ gcc -Q --help=target -march=native | grep sse2
Good - but was Qt built with that option? To answer that, you need to know not just how Portage was configured, but also what Qt's build system did with the inputs from Portage.
NathanZachary wrote:
So, based on the output of the `gcc -Q` command above, the pointer should be set to 'qt_memfill32_sse2'.
To be picky, it will be set to that by qInitDrawhelperFunctions. Have you established that this function must have been called before the crash? It seems to be registered as some weird custom global constructor.

As a related point, consider disassembling the faulting qt library and examining the generated implementation of qInitDrawhelperFunctions to confirm it tries to set this function pointer. Fortunately, this assignment is near the top of the function, so you will not need to read very far to confirm it.
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Fri Aug 19, 2022 3:41 pm    Post subject: Reply with quote

But... but... but cats are generally useless, right? </sarcasm). Yes, it should have just been `grep sse2 /proc/cpuinfo`. 8)

I will keep delving into the problem, and I'm also awaiting a response on the bug that I filed with the QtGUI Team. The only system on which I see this problem is a VM. All of my other systems (workstations, laptops, et cetera) do just fine with the Qt-based applications. So, it's feasible that this is a red herring and somehow tied more to a low-level graphics driver or something similar, no?

Cheers,
Nathan Zachary
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 21606

PostPosted: Fri Aug 19, 2022 5:02 pm    Post subject: Reply with quote

Based on the code I looked at before, my guess is that all of the following are true:
  • Your Qt was built with __SSE2__ defined as a C preprocessor symbol, so the function pointer is used.
  • Your Qt was built with __AVX2__ defined as a C preprocessor symbol, so the function pointer is not trivially set to qt_memfill32_sse2 (this is a +SSE2 -AVX2 function).
  • One of:
    • Your Qt was built with QT_COMPILER_SUPPORTS_AVX2 not defined.
    • Your virtual CPU returns false for the test qCpuHasFeature(ArchHaswell).
I believe that if all those statements hold, then there will be no statements which set the function pointer to a non-nullptr value.

What is the full output of cat -n /proc/cpuinfo, as run in the guest where this library crashes?
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Fri Aug 19, 2022 5:29 pm    Post subject: Reply with quote

You absolutely may be onto something here, Hu. For this VM, I have to disable AVX2 for building Firefox (done by setting up a package.env for it). I could try building the relevant Qt packages without the AVX2 flag (just like I do for Firefox). I would imagine that is just qtcore and qtgui for this particular case, but it may also include qtsvg and qtwidgets. If you think that is worth a try, I'll give it a go as time allows.

Thanks for continuing to delve into the problem!

Cheers,
Nathan Zachary
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
Hu
Moderator
Moderator


Joined: 06 Mar 2007
Posts: 21606

PostPosted: Fri Aug 19, 2022 6:05 pm    Post subject: Reply with quote

I think at this point that is your fastest option. You probably only need to rebuild the package that owns the library that is crashing.

Your other choices are to check that qCpuHasFeature(ArchHaswell) logic or wait for someone who knows this package to look at the problem. That logic appears to be in src/corelib/tools/qsimd_p.h, but you will need to chase down several layers of logic to see how it really works. That idea is also why I asked for the cpuinfo, in the hope that we could spot something that would clearly support or refute my idea about the virtual CPU failing that test.
Back to top
View user's profile Send private message
NathanZachary
Moderator
Moderator


Joined: 30 Jan 2007
Posts: 2605

PostPosted: Mon Aug 22, 2022 7:44 pm    Post subject: Reply with quote

Okay, so I did some experimenting, and building dev-qt/qtgui without AVX2 (-mno-avx2) is what stopped the segmentation faults. Thank you very much for your help in troubleshooting.
_________________
“Truth, like infinity, is to be forever approached but never reached.” --Jean Ayres (1972)
---avatar cropped from =AimanStudio---
Back to top
View user's profile Send private message
NerdIII
n00b
n00b


Joined: 10 Oct 2010
Posts: 12

PostPosted: Fri Jul 21, 2023 2:19 pm    Post subject: Reply with quote

Thank you! This was driving me nuts trying to get a UI up and running in VirtualBox. -mno-avx2 was the solution and I can totally live with that.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Desktop Environments All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum