-
-
Notifications
You must be signed in to change notification settings - Fork 346
Crash on Mudlet exit when closing multiple profiles at once #7478
Copy link
Copy link
Closed
Labels
Description
Brief summary of issue / Description of requested feature:
Mudlet crashes when closing multiple profiles at once.
Steps to reproduce the issue / Reasons for adding feature:
- Open 16 of the default profiles on Linux - you can use this CLI parameter:
--profile "Mudlet Tutorial" --profile "Abandoned Realms" --profile "Avalon.de" --profile "Achaea" --profile "3Kingdoms" --profile "3Scapes" --profile "Lusternia" --profile "BatMUD" --profile "God Wars II" --profile "Slothmud" --profile "Aardwolf" --profile "Materia Magica" --profile "Mudren" --profile "Petria" --profile "Realms of Despair" --profile "ZombieMUD" --profile "Aetolia" --profile "Astaria" --profile "Imperian" --profile "WoTMUD" --profile "Midnight Sun 2" --profile "Luminari" --profile "Clessidra" --profile "Reinos de Leyenda" --profile "Fierymud" --profile "Mudlet self-test" --profile "Accursed Lands" --profile "BlackMUD" --profile "Carrion Fields" --profile "Cleft of Dimensions" --profile "Legends of the Jedi" --profile "Multi-Users in Middle-earth" --profile "MorgenGrauen" --profile "Infinity" --profile "Medievia"
- Hold down Alt+W, observe crash:
The crash still happens, here is a stacktrace:
std::__atomic_base<int>::operator--(std::__atomic_base<int> * const this) (/usr/include/c++/13/bits/atomic_base.h:410)
QAtomicOps<int>::deref<int>(std::atomic<int> & _q_value) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qatomic_cxx11.h:289)
QBasicAtomicInteger<int>::deref(QBasicAtomicInteger<int> * const this) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qbasicatomic.h:119)
QWeakPointer<QObject>::~QWeakPointer(QWeakPointer<QObject> * const this) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qsharedpointer_impl.h:566)
QPointer<TCommandLine>::~QPointer(QPointer<TCommandLine> * const this) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qpointer.h:53)
QVector<QPointer<TCommandLine> >::destruct(QVector<QPointer<TCommandLine> > * const this, QPointer<TCommandLine> * from, QPointer<TCommandLine> * to) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qvector.h:371)
QVector<QPointer<TCommandLine> >::freeData(QVector<QPointer<TCommandLine> > * const this, QVector<QPointer<TCommandLine> >::Data * x) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qvector.h:583)
QVector<QPointer<TCommandLine> >::~QVector(QVector<QPointer<TCommandLine> > * const this) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qvector.h:73)
QStack<QPointer<TCommandLine> >::~QStack(QStack<QPointer<TCommandLine> > * const this) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qstack.h:49)
Host::~Host(Host * const this) (/home/vadi/Programs/Mudlet/src/Host.cpp:485)
Host::~Host(Host * const this) (/home/vadi/Programs/Mudlet/src/Host.cpp:485)
QtSharedPointer::CustomDeleter<Host, QtSharedPointer::NormalDeleter>::execute(QtSharedPointer::CustomDeleter<Host, QtSharedPointer::NormalDeleter> * const this) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qsharedpointer_impl.h:187)
QtSharedPointer::ExternalRefCountWithCustomDeleter<Host, QtSharedPointer::NormalDeleter>::deleter(QtSharedPointer::ExternalRefCountData * self) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qsharedpointer_impl.h:205)
QtSharedPointer::ExternalRefCountData::destroy(QtSharedPointer::ExternalRefCountData * const this) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qsharedpointer_impl.h:149)
QSharedPointer<Host>::deref(QSharedPointer<Host>::Data * dd) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qsharedpointer_impl.h:458)
QSharedPointer<Host>::deref(QSharedPointer<Host> * const this) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qsharedpointer_impl.h:453)
QSharedPointer<Host>::~QSharedPointer(QSharedPointer<Host> * const this) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qsharedpointer_impl.h:310)
HostManager::getHost(HostManager * const this, const QString & hostname) (/home/vadi/Programs/Mudlet/src/HostManager.cpp:152)
mudlet::slot_newDataOnHost(mudlet * const this, const QString & hostName, const bool isLowerPriorityChange) (/home/vadi/Programs/Mudlet/src/mudlet.cpp:4080)
QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<QString const&, bool>, void, void (mudlet::*)(QString const&, bool)>::call(void (mudlet::*)(mudlet * const, const QString &, bool) f, mudlet * o, void ** arg) (/home/vadi/Programs/Qt/5.15.2/gcc_64/include/QtCore/qobjectdefs_impl.h:152)
Error output / Expected result of feature
Mudlet should close without a crash.
Extra information, such as the Mudlet version, operating system and ideas for how to solve / implement:
Screencast in https://discord.com/channels/283581582550237184/427919962561052673/1292161934627569758
Reactions are currently unavailable