https://bugs.kde.org/show_bug.cgi?id=373633
--- Comment #1 from Antonio Larrosa ---
Just in case it helps, I'll add here the source lines around each frame in the
backtrace:
(gdb) frame 7
#7 0x7fb7075f2b84 in QObjectPrivate::Connection::~Connection
(this=0x4578030, __in_chrg=) at kernel/qobject.cpp:1056
1056delete [] v;
(gdb) l
1051QObjectPrivate::Connection::~Connection()
1052{
1053if (ownArgumentTypes) {
1054const int *v = argumentTypes.load();
1055if (v != _CONNECTION_ONLY)
1056delete [] v;
1057}
1058if (isSlotObject)
1059slotObj->destroyIfLastRef();
1060}
(gdb) frame 8
#8 0x7fb7075fc71c in QObjectPrivate::Connection::deref (this=) at kernel/qobject_p.h:156
156 delete this;
(gdb) l
151 int method() const { Q_ASSERT(!isSlotObject); return
method_offset + method_relative; }
152 void ref() { ref_.ref(); }
153 void deref() {
154 if (!ref_.deref()) {
155 Q_ASSERT(!receiver);
156 delete this;
157 }
158 }
159 };
160 // ConnectionList is a singly-linked list
(gdb) frame 9
#9 QObject::~QObject (this=, __in_chrg=) at
kernel/qobject.cpp:977
977 c->deref();
(gdb) l
972 c->isSlotObject = false;
973 locker.unlock();
974 c->slotObj->destroyIfLastRef();
975 locker.relock();
976 }
977 c->deref();
978 }
979 }
980
981 if (!--d->connectionLists->inUse) {
(gdb) frame 10
#10 0x7fb70854bea9 in QAction::~QAction (this=0x10dccf40,
__in_chrg=) at kernel/qaction.cpp:570
570 QAction::~QAction()
(gdb) l
565
566
567 /*!
568 Destroys the object and frees allocated resources.
569 */
570 QAction::~QAction()
571 {
572 Q_D(QAction);
573 for (int i = d->widgets.size()-1; i >= 0; --i) {
574 QWidget *w = d->widgets.at(i);
(gdb) frame 11
#11 0x7fb70854bed9 in QAction::~QAction (this=0x10dccf40,
__in_chrg=) at kernel/qaction.cpp:594
594 }
(gdb) l
589 const int id = d->alternateShortcutIds.at(i);
590 qApp->d_func()->shortcutMap.removeShortcut(id, this);
591 }
592 }
593 #endif
594 }
595
596 /*!
597 Sets this action group to \a group. The action will be automatically
598 added to the group's list of actions.
(gdb) frame 12
#12 0x7fb7075f36d1 in QObjectPrivate::deleteChildren
(this=this@entry=0x248f230) at kernel/qobject.cpp:1970
1970delete currentChildBeingDeleted;
(gdb) l
1965// don't use qDeleteAll as the destructor of the child might
1966// delete siblings
1967for (int i = 0; i < children.count(); ++i) {
1968currentChildBeingDeleted = children.at(i);
1969children[i] = 0;
1970delete currentChildBeingDeleted;
1971}
1972children.clear();
1973currentChildBeingDeleted = 0;
1974isDeletingChildren = false;
(gdb) frame 13
#13 0x7fb7075fca4f in QObject::~QObject (this=,
__in_chrg=) at kernel/qobject.cpp:1041
1041d->deleteChildren();
(gdb) l
1036}
1037}
1038}
1039
1040if (!d->children.isEmpty())
1041d->deleteChildren();
1042
1043qt_removeObject(this);
1044if (Q_UNLIKELY(qtHookData[QHooks::RemoveQObject]))
1045
reinterpret_cast(qtHookData[QHooks::RemoveQObject])(this);
(gdb) frame 14
#14 0x7fb70854bea9 in QAction::~QAction (this=0x78a53a0,
__in_chrg=) at kernel/qaction.cpp:570
570 QAction::~QAction()
(gdb) l
565
566
567 /*!
568 Destroys the object and frees allocated resources.
569 */
570 QAction::~QAction()
571 {
572 Q_D(QAction);
573 for (int i = d->widgets.size()-1; i >= 0; --i) {
574 QWidget *w = d->widgets.at(i);
(gdb) frame 15
#15 0x7fb70859ca8d in QWidgetAction::~QWidgetAction (this=0x78a53a0,
__in_chrg=) at kernel/qwidgetaction.cpp:118
118 QWidgetAction::~QWidgetAction()
(gdb) l
113 }
114
115 /*!
116 Destroys the object and frees allocated resources.
117 */
118 QWidgetAction::~QWidgetAction()
119 {
120 Q_D(QWidgetAction);
121 for (int i = 0; i < d->createdWidgets.count(); ++i)
122 disconnect(d->createdWidgets.at(i),
SIGNAL(destroyed(QObject*)),
(gdb) frame 16
#16 0x7fb7093cf6c1 in KSelectAction::~KSelectAction (this=0x78a53a0,
__in_chrg=) at
/usr/src/debug/kwidgetsaddons-5.28.0/src/kselectaction.cpp:98
98 KSelectAction::~KSelectAction()
(gdb) l
93 {
94 Q_D(KSelectAction);
95 d->init(this);
96 }
97
98