View previous topic :: View next topic |
Author |
Message |
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Fri Aug 12, 2022 7:23 pm Post subject: [SOLVED] Qt5 applications segmentation fault in Gentoo VM |
|
|
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 |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Fri Aug 12, 2022 10:29 pm Post subject: |
|
|
Use
Code: | strace -f -o /tmp/strace.log keepassxc |
to find the last system call(s) before the segfault. |
|
Back to top |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Mon Aug 15, 2022 4:34 pm Post subject: |
|
|
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 |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Mon Aug 15, 2022 5:32 pm Post subject: |
|
|
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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Mon Aug 15, 2022 5:57 pm Post subject: |
|
|
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 |
|
|
Hu Moderator
Joined: 06 Mar 2007 Posts: 21606
|
Posted: Mon Aug 15, 2022 6:33 pm Post subject: |
|
|
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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Mon Aug 15, 2022 9:07 pm Post subject: |
|
|
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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Tue Aug 16, 2022 10:05 pm Post subject: |
|
|
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 |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Tue Aug 16, 2022 10:27 pm Post subject: |
|
|
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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Wed Aug 17, 2022 12:03 am Post subject: |
|
|
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 |
|
|
Hu Moderator
Joined: 06 Mar 2007 Posts: 21606
|
Posted: Wed Aug 17, 2022 12:25 am Post subject: |
|
|
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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Wed Aug 17, 2022 4:55 am Post subject: |
|
|
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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Thu Aug 18, 2022 3:09 am Post subject: |
|
|
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 |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Thu Aug 18, 2022 10:14 pm Post subject: |
|
|
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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Fri Aug 19, 2022 12:09 am Post subject: |
|
|
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 |
|
|
Hu Moderator
Joined: 06 Mar 2007 Posts: 21606
|
Posted: Fri Aug 19, 2022 12:34 am Post subject: |
|
|
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 |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Fri Aug 19, 2022 1:00 am Post subject: |
|
|
@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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Fri Aug 19, 2022 2:50 pm Post subject: |
|
|
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 |
|
|
Hu Moderator
Joined: 06 Mar 2007 Posts: 21606
|
Posted: Fri Aug 19, 2022 3:31 pm Post subject: |
|
|
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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Fri Aug 19, 2022 3:41 pm Post subject: |
|
|
But... but... but cats are generally useless, right? </sarcasm). Yes, it should have just been `grep sse2 /proc/cpuinfo`.
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 |
|
|
Hu Moderator
Joined: 06 Mar 2007 Posts: 21606
|
Posted: Fri Aug 19, 2022 5:02 pm Post subject: |
|
|
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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Fri Aug 19, 2022 5:29 pm Post subject: |
|
|
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 |
|
|
Hu Moderator
Joined: 06 Mar 2007 Posts: 21606
|
Posted: Fri Aug 19, 2022 6:05 pm Post subject: |
|
|
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 |
|
|
NathanZachary Moderator
Joined: 30 Jan 2007 Posts: 2605
|
Posted: Mon Aug 22, 2022 7:44 pm Post subject: |
|
|
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 |
|
|
NerdIII n00b
Joined: 10 Oct 2010 Posts: 12
|
Posted: Fri Jul 21, 2023 2:19 pm Post subject: |
|
|
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 |
|
|
|
|
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
|
|