Bug 435555 - Crashing in QAccessible after playing the ‘Counties by Flag’ activity
Summary: Crashing in QAccessible after playing the ‘Counties by Flag’ activity
Status: RESOLVED FIXED
Alias: None
Product: kgeography
Classification: Applications
Component: general (show other bugs)
Version: 20.12.3
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Albert Astals Cid
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2021-04-09 18:59 UTC by Karl Ove Hufthammer
Modified: 2021-04-13 21:17 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 Karl Ove Hufthammer 2021-04-09 18:59:34 UTC
Application: kgeography (20.12.3)

Qt Version: 5.15.2
Frameworks Version: 5.80.0
Operating System: Linux 5.11.11-1-default x86_64
Windowing System: X11
Drkonqi Version: 5.21.3
Distribution: "openSUSE Tumbleweed"

-- Information about the crash:
- What I was doing when the application crashed:
Playing the ‘Counties by Flag’ activity (for Norway).

- Steps to reproduce:
1. Start KGeography.
2. Click ‘Open Map’ and open the map for Norway.
3. Select ‘Counties by Flag’.
4. Accept the default options and answer all question (correctly or incorrectly).
5. Click ‘OK’ in the resulting dialog.

- Custom settings of the application:
This happens both in my local language (Norwegian Nynorsk) and when running KGeography in English (LC_ALL=C).

The crash can be reproduced every time.

-- Backtrace:
Application: KGeografi (kgeography), signal: Segmentation fault
Content of s_kcrashErrorMessage: [Current thread is 1 (Thread 0x7f6efa884880 (LWP 23307))]
[KCrash Handler]
#6  0x0000006e00000000 in ?? ()
#7  0x00007f6efd1548c7 in QAccessible::queryAccessibleInterface (object=0x55d1457b3a90) at accessible/qaccessible.cpp:683
#8  0x00007f6efd1553cf in QAccessibleEvent::accessibleInterface (this=0x7ffd179467a0) at accessible/qaccessible.cpp:1764
#9  0x00007f6efd1558fd in QAccessible::updateAccessibility (event=0x7ffd179467a0) at accessible/qaccessible.cpp:862
#10 0x00007f6efd9bddaa in QAbstractButton::setChecked (this=0x7ffd179467a0, checked=<optimized out>) at widgets/qabstractbutton.cpp:689
#11 0x00007f6efd9be736 in QAbstractButton::nextCheckState (this=0x55d1457b3a90) at widgets/qabstractbutton.cpp:941
#12 QAbstractButton::nextCheckState (this=0x55d1457b3a90) at widgets/qabstractbutton.cpp:938
#13 QAbstractButtonPrivate::click (this=this@entry=0x55d14577e910) at widgets/qabstractbutton.cpp:398
#14 0x00007f6efd9be861 in QAbstractButton::mouseReleaseEvent (this=0x55d1457b3a90, e=0x7ffd17946d50) at widgets/qabstractbutton.cpp:1044
#15 0x00007f6efd90f34e in QWidget::event (this=0x55d1457b3a90, event=0x7ffd17946d50) at kernel/qwidget.cpp:9019
#16 0x00007f6efd8cf4ff in QApplicationPrivate::notify_helper (this=this@entry=0x55d14532cd00, receiver=receiver@entry=0x55d1457b3a90, e=e@entry=0x7ffd17946d50) at kernel/qapplication.cpp:3632
#17 0x00007f6efd8d63eb in QApplication::notify (this=0x7ffd17946a50, receiver=0x55d1457b3a90, e=0x7ffd17946d50) at kernel/qapplication.cpp:3076
#18 0x00007f6efcc2a32a in QCoreApplication::notifyInternal2 (receiver=0x55d1457b3a90, event=0x7ffd17946d50) at kernel/qcoreapplication.cpp:1063
#19 0x00007f6efd8d5416 in QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0x55d1457b3a90, event=event@entry=0x7ffd17946d50, alienWidget=alienWidget@entry=0x55d1457b3a90, nativeWidget=0x55d145472fd0, buttonDown=buttonDown@entry=0x7f6efddfd670 <qt_button_down>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2614
#20 0x00007f6efd9273b1 in QWidgetWindow::handleMouseEvent (this=0x55d14552b9c0, event=0x7ffd17947010) at kernel/qwidgetwindow.cpp:683
#21 0x00007f6efd92a8be in QWidgetWindow::event (this=0x55d14552b9c0, event=0x7ffd17947010) at kernel/qwidgetwindow.cpp:300
#22 0x00007f6efd8cf4ff in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x55d14552b9c0, e=0x7ffd17947010) at kernel/qapplication.cpp:3632
#23 0x00007f6efcc2a32a in QCoreApplication::notifyInternal2 (receiver=0x55d14552b9c0, event=0x7ffd17947010) at kernel/qcoreapplication.cpp:1063
#24 0x00007f6efd18ad03 in QGuiApplicationPrivate::processMouseEvent (e=0x55d145736cf0) at kernel/qguiapplication.cpp:2282
#25 0x00007f6efd160c5c in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169
#26 0x00007f6ef8968faa in xcbSourceDispatch (source=source@entry=0x55d145405520) at qxcbeventdispatcher.cpp:105
#27 0x00007f6efb45df57 in g_main_dispatch (context=0x7f6ef4005000) at ../glib/gmain.c:3325
#28 g_main_context_dispatch (context=0x7f6ef4005000) at ../glib/gmain.c:4043
#29 0x00007f6efb45e2d8 in g_main_context_iterate (context=context@entry=0x7f6ef4005000, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4119
#30 0x00007f6efb45e38f in g_main_context_iteration (context=0x7f6ef4005000, may_block=may_block@entry=1) at ../glib/gmain.c:4184
#31 0x00007f6efcc818bf in QEventDispatcherGlib::processEvents (this=0x55d145419110, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#32 0x00007f6efcc28ceb in QEventLoop::exec (this=this@entry=0x7ffd17947340, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#33 0x00007f6efcc30f60 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#34 0x00007f6efd17e35c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1867
#35 0x00007f6efd8cf475 in QApplication::exec () at kernel/qapplication.cpp:2824
#36 0x000055d144ca798b in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kgeography-20.12.3-1.2.x86_64/src/main.cpp:47
[Inferior 1 (process 23307) detached]

Possible duplicates by query: bug 305931, bug 292779, bug 291308, bug 289838, bug 287528.

Reported using DrKonqi
Comment 1 Albert Astals Cid 2021-04-09 22:06:32 UTC
Can not reproduce it.

Do you run some kind of accessibility app like a screen reader or similar?
Comment 2 Karl Ove Hufthammer 2021-04-09 22:07:36 UTC
(In reply to Albert Astals Cid from comment #1)
> Can not reproduce it.
> 
> Do you run some kind of accessibility app like a screen reader or similar?

No, I don’t.
Comment 3 Karl Ove Hufthammer 2021-04-09 22:15:40 UTC
It looks the crash happens with the following four activities:

Counties by Capital
Capital of Counties
Counties by Flag
Flags of Counties

But it does *not* happen for

Location of Counties
Place Counties in the Map

(And I don’t have to select all 11 questions for the crash to happen.)
Comment 4 Albert Astals Cid 2021-04-09 23:00:07 UTC
It's crashing in qaccessible, that is the thing that makes Qt apps work with screen readers etc. but i can't reproduce it here even with orca running :/

Can you run valgrind kgeography and attach the log of when you make it crash?
Comment 5 Karl Ove Hufthammer 2021-04-10 09:50:05 UTC
(In reply to Albert Astals Cid from comment #4)
> It's crashing in qaccessible, that is the thing that makes Qt apps work with
> screen readers etc. but i can't reproduce it here even with orca running :/
> 
> Can you run valgrind kgeography and attach the log of when you make it crash?

Hmm, when I use valgrind to start kgeography, it doesn’t crash anymore. :(
Comment 6 Karl Ove Hufthammer 2021-04-10 10:04:11 UTC
It does crash when I run gdb, though. Here is the result of the bt command. I don’t know if it is useful (it looks similar to the one from drkonqi).

(gdb) bt
#0  0x00007ffff7be5020 in vtable for QWidgetItemV2 () from /usr/lib64/libQt5Widgets.so.5
#1  0x00007ffff6f728c7 in QAccessible::queryAccessibleInterface (object=0x555555a185c0)
    at accessible/qaccessible.cpp:683
#2  0x00007ffff6f733cf in QAccessibleEvent::accessibleInterface (this=0x7ffffffee8b0)
    at accessible/qaccessible.cpp:1764
#3  0x00007ffff6f738fd in QAccessible::updateAccessibility (event=0x7ffffffee8b0)
    at accessible/qaccessible.cpp:862
#4  0x00007ffff77dbdaa in QAbstractButton::setChecked (this=0x7ffffffee8b0, checked=<optimized out>)
    at widgets/qabstractbutton.cpp:689
#5  0x00007ffff77dc736 in QAbstractButton::nextCheckState (this=0x555555a185c0)
    at widgets/qabstractbutton.cpp:941
#6  QAbstractButton::nextCheckState (this=0x555555a185c0) at widgets/qabstractbutton.cpp:938
#7  QAbstractButtonPrivate::click (this=this@entry=0x555555a16cc0) at widgets/qabstractbutton.cpp:398
#8  0x00007ffff77dc861 in QAbstractButton::mouseReleaseEvent (this=0x555555a185c0, e=0x7ffffffeee60)
    at widgets/qabstractbutton.cpp:1044
#9  0x00007ffff772d34e in QWidget::event (this=0x555555a185c0, event=0x7ffffffeee60) at kernel/qwidget.cpp:9019
#10 0x00007ffff76ed4ff in QApplicationPrivate::notify_helper (this=this@entry=0x5555555c9d00, 
    receiver=receiver@entry=0x555555a185c0, e=e@entry=0x7ffffffeee60) at kernel/qapplication.cpp:3632
#11 0x00007ffff76f43eb in QApplication::notify (this=0x7ffffffeeb60, receiver=0x555555a185c0, e=0x7ffffffeee60)
    at kernel/qapplication.cpp:3076
#12 0x00007ffff6a4832a in QCoreApplication::notifyInternal2 (receiver=0x555555a185c0, event=0x7ffffffeee60)
    at kernel/qcoreapplication.cpp:1063
#13 0x00007ffff76f3416 in QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0x555555a185c0, 
    event=event@entry=0x7ffffffeee60, alienWidget=alienWidget@entry=0x555555a185c0, 
--Type <RET> for more, q to quit, c to continue without paging--
    nativeWidget=0x55555570fa00, buttonDown=buttonDown@entry=0x7ffff7c1b670 <qt_button_down>, 
    lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2614
#14 0x00007ffff77453b1 in QWidgetWindow::handleMouseEvent (this=0x5555557c9250, event=0x7ffffffef120)
    at kernel/qwidgetwindow.cpp:683
#15 0x00007ffff77488be in QWidgetWindow::event (this=0x5555557c9250, event=0x7ffffffef120)
    at kernel/qwidgetwindow.cpp:300
#16 0x00007ffff76ed4ff in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5555557c9250, 
    e=0x7ffffffef120) at kernel/qapplication.cpp:3632
#17 0x00007ffff6a4832a in QCoreApplication::notifyInternal2 (receiver=0x5555557c9250, event=0x7ffffffef120)
    at kernel/qcoreapplication.cpp:1063
#18 0x00007ffff6fa8d03 in QGuiApplicationPrivate::processMouseEvent (e=0x555555a407e0)
    at kernel/qguiapplication.cpp:2282
#19 0x00007ffff6f7ec5c in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...)
    at kernel/qwindowsysteminterface.cpp:1169
#20 0x00007ffff2786faa in xcbSourceDispatch (source=source@entry=0x5555556a2d70) at qxcbeventdispatcher.cpp:105
#21 0x00007ffff527bf57 in g_main_dispatch (context=0x7fffec005000) at ../glib/gmain.c:3325
#22 g_main_context_dispatch (context=0x7fffec005000) at ../glib/gmain.c:4043
#23 0x00007ffff527c2d8 in g_main_context_iterate (context=context@entry=0x7fffec005000, block=block@entry=1, 
    dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4119
#24 0x00007ffff527c38f in g_main_context_iteration (context=0x7fffec005000, may_block=may_block@entry=1)
    at ../glib/gmain.c:4184
#25 0x00007ffff6a9f8bf in QEventDispatcherGlib::processEvents (this=0x5555556b6910, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#26 0x00007ffff6a46ceb in QEventLoop::exec (this=this@entry=0x7ffffffef450, flags=..., flags@entry=...)
--Type <RET> for more, q to quit, c to continue without paging--
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#27 0x00007ffff6a4ef60 in QCoreApplication::exec ()
    at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#28 0x000055555556c98b in main (argc=<optimized out>, argv=<optimized out>)
    at /usr/src/debug/kgeography-20.12.3-1.2.x86_64/src/main.cpp:47
Comment 7 Albert Astals Cid 2021-04-10 10:15:36 UTC
with valgrind doesn't crash, but does it output something to the command line?

Long shot guess, Is it possible that you have two different Qt in your system? One self compiled and one from the distribution?
Comment 8 Karl Ove Hufthammer 2021-04-10 10:20:33 UTC
(In reply to Albert Astals Cid from comment #7)
> with valgrind doesn't crash, but does it output something to the command
> line?
> 
> Long shot guess, Is it possible that you have two different Qt in your
> system? One self compiled and one from the distribution?

No, I don’t have two different Qt versions installed.

Yes, Valgrind does output something at the point where KGeography would normally crash:

==11779== Invalid read of size 8
==11779==    at 0x54118BE: QAccessible::queryAccessibleInterface(QObject*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54123CE: QAccessibleEvent::accessibleInterface() const (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54128FC: QAccessible::updateAccessibility(QAccessibleEvent*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x4E8CDA9: QAbstractButton::setChecked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D735: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DB2329: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DA4415: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DF63B0: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==  Address 0xb00b4b0 is 0 bytes inside a block of size 48 free'd
==11779==    at 0x484291B: operator delete(void*, unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4ECE018: QGroupBox::~QGroupBox() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x137CDC: ??? (in /usr/bin/kgeography)
==11779==    by 0x1226CC: ??? (in /usr/bin/kgeography)
==11779==    by 0x12983A: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x12EBF7: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==  Block was alloc'd at
==11779==    at 0x483FF2F: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x133105: ??? (in /usr/bin/kgeography)
==11779==    by 0x12A40B: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4E8B3D1: QAbstractButton::clicked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8BD39: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D68E: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DB2329: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.2)
==11779== 
==11779== Invalid read of size 8
==11779==    at 0x5DDAED0: QObject::metaObject() const (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x54118C6: QAccessible::queryAccessibleInterface(QObject*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54123CE: QAccessibleEvent::accessibleInterface() const (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54128FC: QAccessible::updateAccessibility(QAccessibleEvent*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x4E8CDA9: QAbstractButton::setChecked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D735: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DB2329: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DA4415: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==  Address 0xb00b4b8 is 8 bytes inside a block of size 48 free'd
==11779==    at 0x484291B: operator delete(void*, unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4ECE018: QGroupBox::~QGroupBox() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x137CDC: ??? (in /usr/bin/kgeography)
==11779==    by 0x1226CC: ??? (in /usr/bin/kgeography)
==11779==    by 0x12983A: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x12EBF7: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==  Block was alloc'd at
==11779==    at 0x483FF2F: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x133105: ??? (in /usr/bin/kgeography)
==11779==    by 0x12A40B: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4E8B3D1: QAbstractButton::clicked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8BD39: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D68E: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DB2329: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.2)
==11779== 
==11779== Invalid read of size 8
==11779==    at 0x5DDAED4: QObject::metaObject() const (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x54118C6: QAccessible::queryAccessibleInterface(QObject*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54123CE: QAccessibleEvent::accessibleInterface() const (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54128FC: QAccessible::updateAccessibility(QAccessibleEvent*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x4E8CDA9: QAbstractButton::setChecked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D735: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DB2329: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DA4415: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==  Address 0xb00b548 is 40 bytes inside a block of size 520 free'd
==11779==    at 0x484291B: operator delete(void*, unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x4F2BA78: QRadioButton::~QRadioButton() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4ECE018: QGroupBox::~QGroupBox() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x137CDC: ??? (in /usr/bin/kgeography)
==11779==    by 0x1226CC: ??? (in /usr/bin/kgeography)
==11779==    by 0x12983A: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x12EBF7: ??? (in /usr/bin/kgeography)
==11779==  Block was alloc'd at
==11779==    at 0x483FF2F: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x4F2BB83: QRadioButton::QRadioButton(QWidget*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x133117: ??? (in /usr/bin/kgeography)
==11779==    by 0x12A40B: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4E8B3D1: QAbstractButton::clicked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8BD39: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D68E: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779== 
==11779== Invalid read of size 8
==11779==    at 0x4FDAA82: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x541197F: QAccessible::queryAccessibleInterface(QObject*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54123CE: QAccessibleEvent::accessibleInterface() const (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54128FC: QAccessible::updateAccessibility(QAccessibleEvent*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x4E8CDA9: QAbstractButton::setChecked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D735: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DB2329: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DA4415: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==  Address 0xb00b4b8 is 8 bytes inside a block of size 48 free'd
==11779==    at 0x484291B: operator delete(void*, unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4ECE018: QGroupBox::~QGroupBox() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x137CDC: ??? (in /usr/bin/kgeography)
==11779==    by 0x1226CC: ??? (in /usr/bin/kgeography)
==11779==    by 0x12983A: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x12EBF7: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==  Block was alloc'd at
==11779==    at 0x483FF2F: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x133105: ??? (in /usr/bin/kgeography)
==11779==    by 0x12A40B: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4E8B3D1: QAbstractButton::clicked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8BD39: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D68E: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DB2329: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.2)
==11779== 
==11779== Invalid read of size 1
==11779==    at 0x4FDAA89: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x541197F: QAccessible::queryAccessibleInterface(QObject*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54123CE: QAccessibleEvent::accessibleInterface() const (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54128FC: QAccessible::updateAccessibility(QAccessibleEvent*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x4E8CDA9: QAbstractButton::setChecked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D735: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DB2329: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DA4415: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==  Address 0xb00b540 is 32 bytes inside a block of size 520 free'd
==11779==    at 0x484291B: operator delete(void*, unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x4F2BA78: QRadioButton::~QRadioButton() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4ECE018: QGroupBox::~QGroupBox() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x137CDC: ??? (in /usr/bin/kgeography)
==11779==    by 0x1226CC: ??? (in /usr/bin/kgeography)
==11779==    by 0x12983A: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x12EBF7: ??? (in /usr/bin/kgeography)
==11779==  Block was alloc'd at
==11779==    at 0x483FF2F: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x4F2BB83: QRadioButton::QRadioButton(QWidget*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x133117: ??? (in /usr/bin/kgeography)
==11779==    by 0x12A40B: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4E8B3D1: QAbstractButton::clicked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8BD39: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D68E: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779== 
==11779== Invalid read of size 1
==11779==    at 0x4FDAA93: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x541197F: QAccessible::queryAccessibleInterface(QObject*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54123CE: QAccessibleEvent::accessibleInterface() const (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x54128FC: QAccessible::updateAccessibility(QAccessibleEvent*) (in /usr/lib64/libQt5Gui.so.5.15.2)
==11779==    by 0x4E8CDA9: QAbstractButton::setChecked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D735: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DB2329: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DA4415: QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==  Address 0xb00b652 is 306 bytes inside a block of size 520 free'd
==11779==    at 0x484291B: operator delete(void*, unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x4F2BA78: QRadioButton::~QRadioButton() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4ECE018: QGroupBox::~QGroupBox() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x5DDBF3D: QObjectPrivate::deleteChildren() (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4DD9AD5: QWidget::~QWidget() (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x137CDC: ??? (in /usr/bin/kgeography)
==11779==    by 0x1226CC: ??? (in /usr/bin/kgeography)
==11779==    by 0x12983A: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x12EBF7: ??? (in /usr/bin/kgeography)
==11779==  Block was alloc'd at
==11779==    at 0x483FF2F: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==11779==    by 0x4F2BB83: QRadioButton::QRadioButton(QWidget*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x133117: ??? (in /usr/bin/kgeography)
==11779==    by 0x12A40B: ??? (in /usr/bin/kgeography)
==11779==    by 0x5DE8945: ??? (in /usr/lib64/libQt5Core.so.5.15.2)
==11779==    by 0x4E8B3D1: QAbstractButton::clicked(bool) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8BD39: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D68E: ??? (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4E8D860: QAbstractButton::mouseReleaseEvent(QMouseEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DDE34D: QWidget::event(QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4D9E4FE: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==    by 0x4DA53EA: QApplication::notify(QObject*, QEvent*) (in /usr/lib64/libQt5Widgets.so.5.15.2)
==11779==
Comment 9 Albert Astals Cid 2021-04-10 10:31:46 UTC
Yeah, same issue inside Qt/QAccessible

Frederik, any idea why i can't reproduce this? How do i force/test QAccessible properly?
Comment 10 Antonio Larrosa 2021-04-12 09:16:59 UTC
I've tried to reproduce this on Tumbleweed 20210401 and also on another system with 20210408 (the latest version at this time). In both cases following the "steps to reproduce" worked fine and kgeography didn't crash.

I also tried using kgeography with LANGUAGE=nn just in case it's related to translations but couldn't reproduce the problem either.

I also tried running kgeography on wayland just in case there was a mistake in the bug report which mentions it happened in X11.

Karl, can you give us the full output of running `rpm -qi libQt5Gui5 kgeography` to check if I'm using exactly the same versions that fail for you?
Comment 11 Karl Ove Hufthammer 2021-04-12 16:18:16 UTC
(In reply to Antonio Larrosa from comment #10)
> Karl, can you give us the full output of running `rpm -qi libQt5Gui5
> kgeography` to check if I'm using exactly the same versions that fail for
> you?

Here’s the output:

Name        : libQt5Gui5
Version     : 5.15.2
Release     : 4.3
Architecture: x86_64
Install Date: la. 13. mars 2021 kl. 11.17 +0100
Group       : Development/Libraries/C and C++
Size        : 12441530
License     : LGPL-3.0-only or GPL-3.0-with-Qt-Company-Qt-exception-1.1
Signature   : RSA/SHA256, ty. 09. mars 2021 kl. 08.28 +0100, Key ID b88b2fd43dbdc284
Source RPM  : libqt5-qtbase-5.15.2-4.3.src.rpm
Build Date  : ty. 09. mars 2021 kl. 08.09 +0100
Build Host  : sheep83
Packager    : https://bugs.opensuse.org
Vendor      : openSUSE
URL         : https://www.qt.io
Summary     : Qt 5 GUI related libraries
Description :
The Qt GUI module provides classes for windowing system integration,
event handling, OpenGL and OpenGL ES integration, 2D graphics, basic
imaging, fonts and text. These classes are used internally by Qt's
user interface code and can also be used directly, for instance, to
write applications using low-level OpenGL ES graphics APIs.

For application developers writing user interfaces, Qt provides
higher level APIs, like Qt Quick, which are much more suitable than
the enablers found in the Qt GUI module.
Distribution: openSUSE Tumbleweed
Name        : kgeography
Version     : 20.12.3
Release     : 1.2
Architecture: x86_64
Install Date: la. 10. april 2021 kl. 11.56 +0200
Group       : Amusements/Teaching/Other
Size        : 7119286
License     : GPL-2.0-or-later
Signature   : RSA/SHA256, fr. 26. mars 2021 kl. 07.50 +0100, Key ID b88b2fd43dbdc284
Source RPM  : kgeography-20.12.3-1.2.src.rpm
Build Date  : fr. 26. mars 2021 kl. 07.49 +0100
Build Host  : wildcard2
Packager    : https://bugs.opensuse.org
Vendor      : openSUSE
URL         : https://edu.kde.org
Summary     : Geography Trainer
Description :
KGeography is a geography learning program.
Distribution: openSUSE Tumbleweed


(But the bug also occurs if I compile kgeography from master.))
Comment 12 Karl Ove Hufthammer 2021-04-12 16:23:39 UTC
BTW, the bug also occurs if I use older versions of KGeography from Git. And it didn’t in the past. Which makes me think this is just a Qt bug.

But it *also* only occurs for the bottom four activities in KGeography, not the top two. So KGeography is obviously doing something different for the bottom four and the top two activities to trigger the Qt bug.
Comment 13 Antonio Larrosa 2021-04-13 16:50:47 UTC
I tested with exactly the same packages here.

Can you create a new user in your system, log in with it and try to run kgeography within that user's session? Just to check if using the default desktop settings as a new user makes any difference.
Comment 14 Karl Ove Hufthammer 2021-04-13 17:23:40 UTC
(In reply to Antonio Larrosa from comment #13)
> I tested with exactly the same packages here.
> 
> Can you create a new user in your system, log in with it and try to run
> kgeography within that user's session? Just to check if using the default
> desktop settings as a new user makes any difference.

I have now tested it with a different user, with different locale settings. And initially, it did *not* crash. But I noticed that the behaviour in KGeography was different. There was now an ‘Accept’ button for each question, which was not present for my original user.

It turns out that if the ‘Wait for validation’ option is enabled in the settings (which is the default), KGeography does *not* crash. But it if is disabled, it does crash.

Sorry for not mentioning this setting. I wasn’t aware that I had changed any of the default settings. 😳
Comment 15 Albert Astals Cid 2021-04-13 19:24:24 UTC
Now we're talking :)
Comment 16 Bug Janitor Service 2021-04-13 21:14:56 UTC
A possibly relevant merge request was started @ https://invent.kde.org/education/kgeography/-/merge_requests/11
Comment 17 Albert Astals Cid 2021-04-13 21:17:32 UTC
Git commit 954c1a2d5664beb605925c0f7ca4045150e077d1 by Albert Astals Cid.
Committed on 13/04/2021 at 21:15.
Pushed by aacid into branch 'release/21.04'.

Fix crash when "Wait for validation" is not enabled

Qt is not happy that we're deleting a radio button from a slot connected
to QAbstractButton::toggled, which makes sense, since it's probably not
finished internally, so now we do a delayed invokation of
boxAsker::checkAnswer that is the method that may ultimately end up
deleting the radio button, but this way it runs when Qt is finished
processing the toggled change

M  +1    -1    src/boxasker.cpp

https://invent.kde.org/education/kgeography/commit/954c1a2d5664beb605925c0f7ca4045150e077d1