Youda008 / DoomRunner

Preset-oriented graphical launcher of various ported Doom engines (an alternative to ZDL)
GNU General Public License v3.0
203 stars 13 forks source link

[BUG] Crash when trying to do almost anything (Linux) #167

Open yum13241 opened 3 weeks ago

yum13241 commented 3 weeks ago

Info

DoomRunner 1.8.2 Qt 6.7.0 (maybe a Qt upgrade broke DR?)

Expected Behavior

Working normally and not crashing.

Actual Behavior

Crashing when deleting or creating presets/separators. Cloning an instance still works.

How to Reproduce (multiple methods)

Click on a separator and press DELETE. Click on the PLUS button. Click on the MINUS button. Right click > Add. Right click > Delete.

Console Output

~]$ DoomRunner
malloc_consolidate(): unaligned fastbin chunk detected
Aborted (core dumped)

Video showing proof

(When it looks like it crashed without me doing anything, that's me pressing DELETE.) Video

summer1090 commented 2 weeks ago

probably you should try to rebuild DoomRunner with new QT

yum13241 commented 2 weeks ago

I didn't build this myself, (chaotic-aur did), so I'll try and if it does work after that, I'll bug the chaotic-aur about it.

EDIT: Rebuilding worked, I'll go bug the chaotic-aur about it. Qt is also 6.7.1 which could have made a difference.

yum13241 commented 2 weeks ago

Turns out there may be a legit bug here. Moving separators is still broken, and the up and down buttons just shift the focus. Dragging them just crashes with a segfault, but it saves???

xiota commented 1 week ago

If it matters, I can confirm this issue with the same input sequence. Rebuilding results in crash on the same dialog, but with different input sequence.

Youda008 commented 1 week ago

Hi. I have finally tested what you describe, but there are no crashes for me. Unfortunatelly, this is a garage project so there is no testing infrastructure, i test everything on my laptop with 250GB disk, so i have only Windows and Kubuntu. Crashes like this can be caused by incorrect linking that breaks ABI, or simply just by a bug in some of the Qt libraries. It doesn't look like there is a bug in the Doom Runner's code at the first glance, but of course everything is possible. ~Is there any chance that you could install a compiler and try to build it yourself in your computer?~ Sorry i missed your later message that you already rebuilt it. Can you perhaps create a debug build with debug symbols, so that we can at least see a stack trace from a crash dump?

Youda008 commented 1 week ago

Ok, i have bad news here. I just upgraded my Linux distro to Qt6 and everything went to hell. Well, this will take some time, there are apparently too many breaking changes in Qt6. Until then, you can try to build this against Qt5 where it should work fine.

xiota commented 1 week ago
If it helps, here's a gdb backtrace. ``` Thread 1 "DoomRunner" received signal SIGSEGV, Segmentation fault. 0x00005555555f0771 in std::_Function_handler::_M_invoke(std::_Any_data const&, Preset const&) [clone .lto_priv.0] () at /usr/include/c++/14.1.1/bits/std_function.h:288 288 _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) (gdb) bt #0 0x00005555555f0771 in std::_Function_handler::_M_invoke(std::_Any_data const&, Preset const&) [clone .lto_priv.0] () at /usr/include/c++/14.1.1/bits/std_function.h:288 #1 0x00005555555f979c in std::function::operator()(IWAD const&) const (this=0x7fffffffd3d8, __args#0=) at /usr/include/c++/14.1.1/bits/std_function.h:591 #2 EditableListModel >::data (this=0x7fffffffd380, index=..., role=0) at ../Sources/Widgets/ListModel.hpp:667 #3 0x00007ffff694d0e1 in QAbstractItemModel::multiData(QModelIndex const&, QModelRoleDataSpan) const () at /usr/lib/libQt6Core.so.6 #4 0x00007ffff7c0d5b1 in QStyledItemDelegate::initStyleOption(QStyleOptionViewItem*, QModelIndex const&) const () at /usr/lib/libQt6Widgets.so.6 #5 0x00007ffff7c0f1b2 in QStyledItemDelegate::sizeHint(QStyleOptionViewItem const&, QModelIndex const&) const () at /usr/lib/libQt6Widgets.so.6 #6 0x00007ffff7c260d6 in ??? () at /usr/lib/libQt6Widgets.so.6 #7 0x00007ffff7c24883 in ??? () at /usr/lib/libQt6Widgets.so.6 #8 0x00007ffff7c1979b in QListView::visualRect(QModelIndex const&) const () at /usr/lib/libQt6Widgets.so.6 #9 0x00007ffff7c1ef8f in QListView::paintEvent(QPaintEvent*) () at /usr/lib/libQt6Widgets.so.6 #10 0x00007ffff794be55 in QWidget::event(QEvent*) () at /usr/lib/libQt6Widgets.so.6 #11 0x00007ffff79e2998 in QFrame::event(QEvent*) () at /usr/lib/libQt6Widgets.so.6 #12 0x00007ffff6744288 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /usr/lib/libQt6Core.so.6 #13 0x00007ffff78fc54c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt6Widgets.so.6 #14 0x00007ffff6744e38 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt6Core.so.6 #15 0x00007ffff793c26e in QWidgetPrivate::sendPaintEvent(QRegion const&) () at /usr/lib/libQt6Widgets.so.6 #16 0x00007ffff793e25b in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #17 0x00007ffff7940db8 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #18 0x00007ffff7940bf6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #19 0x00007ffff7940bf6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #20 0x00007ffff793e7b5 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #21 0x00007ffff7940db8 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #22 0x00007ffff793e7b5 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #23 0x00007ffff7940db8 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #24 0x00007ffff7940bf6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #25 0x00007ffff7940bf6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #26 0x00007ffff7940bf6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #27 0x00007ffff7940bf6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #28 0x00007ffff7940bf6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 --Type for more, q to quit, c to continue without paging--c #29 0x00007ffff7940bf6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #30 0x00007ffff7940bf6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #31 0x00007ffff793e7b5 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #32 0x00007ffff7940db8 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #33 0x00007ffff793e7b5 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #34 0x00007ffff7940db8 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #35 0x00007ffff7940bf6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #36 0x00007ffff793e7b5 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #37 0x00007ffff7940db8 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #38 0x00007ffff793e7b5 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #39 0x00007ffff7940db8 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList const&, int, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #40 0x00007ffff793e7b5 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt6Widgets.so.6 #41 0x00007ffff795be58 in QWidgetRepaintManager::paintAndFlush() () at /usr/lib/libQt6Widgets.so.6 #42 0x00007ffff794b908 in QWidget::event(QEvent*) () at /usr/lib/libQt6Widgets.so.6 #43 0x00007ffff78fc55c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt6Widgets.so.6 #44 0x00007ffff6744e38 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt6Core.so.6 #45 0x00007ffff67451fb in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt6Core.so.6 #46 0x00007ffff69a460c in ??? () at /usr/lib/libQt6Core.so.6 #47 0x00007ffff5f22a89 in ??? () at /usr/lib/libglib-2.0.so.0 #48 0x00007ffff5f849b7 in ??? () at /usr/lib/libglib-2.0.so.0 #49 0x00007ffff5f21f95 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 #50 0x00007ffff69a28dd in QEventDispatcherGlib::processEvents(QFlags) () at /usr/lib/libQt6Core.so.6 #51 0x00007ffff674f10e in QEventLoop::exec(QFlags) () at /usr/lib/libQt6Core.so.6 #52 0x00007ffff674945d in QCoreApplication::exec() () at /usr/lib/libQt6Core.so.6 #53 0x00005555555877af in main (argc=, argv=) at ../Sources/main.cpp:32 ```