Bug 436808 - Okular crashes when closing it.
Summary: Okular crashes when closing it.
Status: RESOLVED FIXED
Alias: None
Product: okular
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Okular developers
URL:
Keywords: drkonqi
: 436840 436983 (view as bug list)
Depends on:
Blocks:
 
Reported: 2021-05-09 03:18 UTC by Tony
Modified: 2021-05-12 15:41 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tony 2021-05-09 03:18:48 UTC
Application: okular (21.07.70)

Qt Version: 5.15.2
Frameworks Version: 5.83.0
Operating System: Linux 5.12.0-1-default x86_64
Windowing System: Wayland
Drkonqi Version: 5.21.80
Distribution: "openSUSE Tumbleweed"

-- Information about the crash:
- What I was doing when the application crashed:

Had a pdf file open in Okular, close it.

No need to have a file open to trigger the crash though, just open and close okular to trigger the crash.

The crash can be reproduced every time.

-- Backtrace:
Application: Okular (okular), signal: Segmentation fault

[KCrash Handler]
#4  0x00007efc114fd5e0 in QList<QComboBox*>::removeAll (this=0x55f435c18ea0, _t=@0x7ffdaa75cae0: 0x55f435f9acf0) at /usr/include/qt5/QtCore/qlist.h:948
#5  0x00007efc114fd6d8 in KSelectActionPrivate::comboBoxDeleted (object=<optimized out>, this=<optimized out>) at /usr/src/debug/kwidgetsaddons-5.82.0git.20210508T124256~5c768976-ku.11.1.x86_64/src/kselectaction.cpp:471
#6  operator() (obj=<optimized out>, __closure=<optimized out>) at /usr/src/debug/kwidgetsaddons-5.82.0git.20210508T124256~5c768976-ku.11.1.x86_64/src/kselectaction.cpp:583
#7  QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<QObject*>, void, KSelectAction::createWidget(QWidget*)::<lambda(QObject*)> >::call (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146
#8  QtPrivate::Functor<KSelectAction::createWidget(QWidget*)::<lambda(QObject*)>, 1>::call<QtPrivate::List<QObject*>, void> (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256
#9  QtPrivate::QFunctorSlotObject<KSelectAction::createWidget(QWidget*)::<lambda(QObject*)>, 1, QtPrivate::List<QObject*>, void>::impl (which=<optimized out>, r=<optimized out>, ret=<optimized out>, a=<optimized out>, this_=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443
#10 QtPrivate::QFunctorSlotObject<KSelectAction::createWidget(QWidget*)::<lambda(QObject*)>, 1, QtPrivate::List<QObject*>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:436
#11 0x00007efc101ccc17 in QtPrivate::QSlotObjectBase::call (a=0x7ffdaa75cbf0, r=0x55f435c097a0, this=0x55f435fc6a30) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#12 doActivate<false> (sender=0x55f435f9acf0, signal_index=0, argv=argv@entry=0x7ffdaa75cbf0) at kernel/qobject.cpp:3886
#13 0x00007efc101c5f60 in QMetaObject::activate (sender=sender@entry=0x55f435f9acf0, m=m@entry=0x7efc10472a00 <QObject::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffdaa75cbf0) at kernel/qobject.cpp:3946
#14 0x00007efc101c600f in QObject::destroyed (this=this@entry=0x55f435f9acf0, _t1=<optimized out>, _t1@entry=0x55f435f9acf0) at .moc/moc_qobject.cpp:219
#15 0x00007efc10e2a533 in QWidget::~QWidget (this=0x55f435f9acf0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1497
#16 0x00007efc10ef1da9 in QComboBox::~QComboBox (this=0x55f435f9acf0, __in_chrg=<optimized out>) at widgets/qcombobox.cpp:1512
#17 0x00007efc10e31ad7 in qDeleteAll<QList<QWidget*>::const_iterator> (end=..., begin=...) at ../../include/QtCore/../../src/corelib/tools/qalgorithms.h:320
#18 qDeleteAll<QList<QWidget*> > (c=...) at ../../include/QtCore/../../src/corelib/tools/qalgorithms.h:328
#19 QWidgetAction::~QWidgetAction (this=0x55f435c097a0, __in_chrg=<optimized out>) at kernel/qwidgetaction.cpp:126
#20 0x00007efc114fec19 in KSelectAction::~KSelectAction (this=<optimized out>, this=<optimized out>) at /usr/src/debug/kwidgetsaddons-5.82.0git.20210508T124256~5c768976-ku.11.1.x86_64/src/kselectaction.cpp:81
#21 0x00007efc101c00ae in QObjectPrivate::deleteChildren (this=this@entry=0x55f435b48560) at kernel/qobject.cpp:2104
#22 0x00007efc10e2a276 in QWidget::~QWidget (this=0x55f435b48500, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522
#23 0x00007efc09992169 in PageView::~PageView (this=<optimized out>, this=<optimized out>) at /usr/src/debug/okular-21.07.70git.20210507T234046~34b8c1e72-ku.13.1.x86_64/part/pageview.cpp:530
#24 0x00007efc101c00ae in QObjectPrivate::deleteChildren (this=this@entry=0x55f435b0e990) at kernel/qobject.cpp:2104
#25 0x00007efc10e2a276 in QWidget::~QWidget (this=0x55f435b0e100, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522
#26 0x00007efc10e2a5c9 in QWidget::~QWidget (this=0x55f435b0e100, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1546
#27 0x00007efc101c00ae in QObjectPrivate::deleteChildren (this=this@entry=0x55f435953850) at kernel/qobject.cpp:2104
#28 0x00007efc10e2a276 in QWidget::~QWidget (this=0x55f43591e7e0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522
#29 0x00007efc10f9ecb9 in QSplitter::~QSplitter (this=0x55f43591e7e0, __in_chrg=<optimized out>) at widgets/qsplitter.cpp:979
#30 0x00007efc101c00ae in QObjectPrivate::deleteChildren (this=this@entry=0x55f4359504b0) at kernel/qobject.cpp:2104
#31 0x00007efc10e2a276 in QWidget::~QWidget (this=0x55f43591c8e0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522
#32 0x00007efc099c7ea9 in Sidebar::~Sidebar (this=<optimized out>, this=<optimized out>) at /usr/src/debug/okular-21.07.70git.20210507T234046~34b8c1e72-ku.13.1.x86_64/part/sidebar.cpp:88
#33 0x00007efc101c00ae in QObjectPrivate::deleteChildren (this=this@entry=0x55f435d1ac10) at kernel/qobject.cpp:2104
#34 0x00007efc10e2a276 in QWidget::~QWidget (this=0x55f435e94e20, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522
#35 0x00007efc10fa3c39 in QStackedWidget::~QStackedWidget (this=0x55f435e94e20, __in_chrg=<optimized out>) at widgets/qstackedwidget.cpp:147
#36 0x00007efc101c00ae in QObjectPrivate::deleteChildren (this=this@entry=0x55f435c75920) at kernel/qobject.cpp:2104
#37 0x00007efc10e2a276 in QWidget::~QWidget (this=0x55f435e89bc0, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1522
#38 0x00007efc10fc74b9 in QTabWidget::~QTabWidget (this=0x55f435e89bc0, __in_chrg=<optimized out>) at widgets/qtabwidget.cpp:374
#39 0x000055f434231fa7 in Shell::~Shell (this=<optimized out>, this=<optimized out>) at /usr/src/debug/okular-21.07.70git.20210507T234046~34b8c1e72-ku.13.1.x86_64/shell/shell.cpp:223
#40 0x000055f434232579 in Shell::~Shell (this=<optimized out>, this=<optimized out>) at /usr/src/debug/okular-21.07.70git.20210507T234046~34b8c1e72-ku.13.1.x86_64/shell/shell.cpp:224
#41 0x00007efc101c27cf in QObject::event (this=0x55f435911410, e=0x55f435fcefd0) at kernel/qobject.cpp:1301
#42 0x00007efc116e6ff9 in KXmlGuiWindow::event (this=0x55f435911410, ev=0x55f435fcefd0) at /usr/src/debug/kxmlgui-5.82.0git.20210508T172553~2554dfa7-ku.13.1.x86_64/src/kxmlguiwindow.cpp:110
#43 0x00007efc10decaff in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x55f435911410, e=0x55f435fcefd0) at kernel/qapplication.cpp:3632
#44 0x00007efc1019613a in QCoreApplication::notifyInternal2 (receiver=0x55f435911410, event=0x55f435fcefd0) at kernel/qcoreapplication.cpp:1063
#45 0x00007efc101990b1 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x55f4358603b0) at kernel/qcoreapplication.cpp:1817
#46 0x00007efc101ee6b3 in postEventSourceDispatch (s=s@entry=0x55f435890130) at kernel/qeventdispatcher_glib.cpp:277
#47 0x00007efc0e7ab8b7 in g_main_dispatch (context=0x55f4358bcf70) at ../glib/gmain.c:3337
#48 g_main_context_dispatch (context=0x55f4358bcf70) at ../glib/gmain.c:4055
#49 0x00007efc0e7abc38 in g_main_context_iterate (context=context@entry=0x55f4358bcf70, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4131
#50 0x00007efc0e7abcef in g_main_context_iteration (context=0x55f4358bcf70, may_block=may_block@entry=1) at ../glib/gmain.c:4196
#51 0x00007efc101edd30 in QEventDispatcherGlib::processEvents (this=0x55f4358e3e30, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#52 0x00007efc10194b7b in QEventLoop::exec (this=this@entry=0x7ffdaa75d540, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#53 0x00007efc1019cdb0 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#54 0x00007efc1068ba9c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1867
#55 0x00007efc10deca75 in QApplication::exec () at kernel/qapplication.cpp:2824
#56 0x000055f43422c916 in main (argc=<optimized out>, argv=0x7ffdaa75d6d0) at /usr/src/debug/okular-21.07.70git.20210507T234046~34b8c1e72-ku.13.1.x86_64/shell/main.cpp:107
[Inferior 1 (process 31971) detached]

Possible duplicates by query: bug 435992, bug 434974, bug 434725, bug 434205, bug 433252.

Reported using DrKonqi
Comment 1 Albert Astals Cid 2021-05-09 10:24:51 UTC
Does the crash happen also on non wayland?

Are you running development versions on purpose? Did you compile it by hand or is it some packaged suse stuff?
Comment 2 Albert Astals Cid 2021-05-09 22:04:31 UTC
*** Bug 436840 has been marked as a duplicate of this bug. ***
Comment 4 Tony 2021-05-10 12:33:32 UTC
(In reply to Albert Astals Cid from comment #1)
> Does the crash happen also on non wayland?
> 
> Are you running development versions on purpose? Did you compile it by hand
> or is it some packaged suse stuff?

Yes, it happens in x11 session as well.
Packages from from the Unstable KDE repositories.
Comment 5 Ahmad Samir 2021-05-10 15:56:10 UTC
Git commit 2c4e4bdab18e1d590403c96c82efe6ca30b55638 by Ahmad Samir.
Committed on 10/05/2021 at 11:51.
Pushed by dfaure into branch 'master'.

Fix crash in KSelectAction

If the destroyed() signal from QComboBox, which is connected to the
comboBoxDeleted() slot, is emitted while the KSelectAction object is being
taken down, there is a crash is QList::removeAll(). Fix the issue by
disconnecting the signal in the KSelectActionPrivate() destructor.

This fixes a crash when closing a window that contains some KSelectAction
objects (e.g. KMail composer window, and OKular).

Add a comment explaining why the KSelectActionPrivate() destructor is virtual,
the comment is taken from an old commit by pino in kdelibs circa 2007 :)

Add unit test.

M  +32   -0    autotests/kselectaction_unittest.cpp
M  +2    -0    autotests/kselectaction_unittest.h
M  +4    -0    src/kselectaction_p.h
M  +2    -1    tests/kselectactiontest.cpp

https://invent.kde.org/frameworks/kwidgetsaddons/commit/2c4e4bdab18e1d590403c96c82efe6ca30b55638
Comment 6 Yuri Chornoivan 2021-05-12 15:41:30 UTC
*** Bug 436983 has been marked as a duplicate of this bug. ***