Bug 377231 - Color of track still not modifyable
Summary: Color of track still not modifyable
Status: CONFIRMED
Alias: None
Product: marble
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: marble-bugs
URL:
Keywords: drkonqi
: 410713 (view as bug list)
Depends on:
Blocks:
 
Reported: 2017-03-05 11:40 UTC by Urs Weder
Modified: 2023-12-28 10:50 UTC (History)
5 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 Urs Weder 2017-03-05 11:40:48 UTC
Application: marble (2.0.2 (stable release))

Qt Version: 5.6.1
Frameworks Version: 5.26.0
Operating System: Linux 4.4.27-2-default x86_64
Distribution: "openSUSE Leap 42.2"

-- Information about the crash:
- load gpx file
- right click in Panel Files on loaded gpx file
- select "View properties"
- wanted to change color of track, not possible because disabled !?!?!?
- click "OK" --> crash

The crash can be reproduced every time.

-- Backtrace:
Application: Marble Virtual Globe (marble), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f016f59c8c0 (LWP 8343))]

Thread 8 (Thread 0x7f00effff700 (LWP 8351)):
#0  0x00007f01626940af in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f016c5966e3 in  () at /usr/lib64/libQt5WebKit.so.5
#2  0x00007f016c8b8341 in  () at /usr/lib64/libQt5WebKit.so.5
#3  0x00007f016268f734 in start_thread () at /lib64/libpthread.so.0
#4  0x00007f01656cfd3d in clone () at /lib64/libc.so.6

Thread 7 (Thread 0x7f00f4ec7700 (LWP 8350)):
#0  0x00007f01626940af in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f016c5966e3 in  () at /usr/lib64/libQt5WebKit.so.5
#2  0x00007f016c8b8341 in  () at /usr/lib64/libQt5WebKit.so.5
#3  0x00007f016268f734 in start_thread () at /lib64/libpthread.so.0
#4  0x00007f01656cfd3d in clone () at /lib64/libc.so.6

Thread 6 (Thread 0x7f00f56c8700 (LWP 8349)):
#0  0x00007f01626940af in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f016c5966e3 in  () at /usr/lib64/libQt5WebKit.so.5
#2  0x00007f016c8b8341 in  () at /usr/lib64/libQt5WebKit.so.5
#3  0x00007f016268f734 in start_thread () at /lib64/libpthread.so.0
#4  0x00007f01656cfd3d in clone () at /lib64/libc.so.6

Thread 5 (Thread 0x7f00f5ec9700 (LWP 8348)):
#0  0x00007f01626940af in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f016c59570d in  () at /usr/lib64/libQt5WebKit.so.5
#2  0x00007f016c8b8341 in  () at /usr/lib64/libQt5WebKit.so.5
#3  0x00007f016268f734 in start_thread () at /lib64/libpthread.so.0
#4  0x00007f01656cfd3d in clone () at /lib64/libc.so.6

Thread 4 (Thread 0x7f0136bfd700 (LWP 8347)):
#0  0x00007f01626940af in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f016c889873 in  () at /usr/lib64/libQt5WebKit.so.5
#2  0x00007f016c889899 in  () at /usr/lib64/libQt5WebKit.so.5
#3  0x00007f016268f734 in start_thread () at /lib64/libpthread.so.0
#4  0x00007f01656cfd3d in clone () at /lib64/libc.so.6

Thread 3 (Thread 0x7f014bfff700 (LWP 8346)):
#0  0x00007f01656c749d in poll () at /lib64/libc.so.6
#1  0x00007f0161e18314 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f0161e1842c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f01664e232b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f016648ffdb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f01662caf1a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f01662cf9e9 in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007f016268f734 in start_thread () at /lib64/libpthread.so.0
#8  0x00007f01656cfd3d in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7f01516f7700 (LWP 8345)):
#0  0x00007f01656c749d in poll () at /lib64/libc.so.6
#1  0x00007f0161e18314 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f0161e1842c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f01664e232b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f016648ffdb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f01662caf1a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f01689b01d5 in  () at /usr/lib64/libQt5DBus.so.5
#7  0x00007f01662cf9e9 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007f016268f734 in start_thread () at /lib64/libpthread.so.0
#9  0x00007f01656cfd3d in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7f016f59c8c0 (LWP 8343)):
[KCrash Handler]
#6  0x00007f016ed77b73 in Marble::OsmTagEditorWidget::suitableTag() () at /usr/lib64/libmarblewidget-qt5.so.25
#7  0x00007f016eebb03a in Marble::EditPlacemarkDialog::updateTextAnnotation() () at /usr/lib64/libmarblewidget-qt5.so.25
#8  0x00007f016eebc79b in  () at /usr/lib64/libmarblewidget-qt5.so.25
#9  0x00007f01664bbbb1 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#10 0x00007f016eebb7ef in Marble::EditPlacemarkDialog::checkFields() () at /usr/lib64/libmarblewidget-qt5.so.25
#11 0x00007f016eebc78d in  () at /usr/lib64/libmarblewidget-qt5.so.25
#12 0x00007f01664bbbb1 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#13 0x00007f01675229ad in  () at /usr/lib64/libQt5Widgets.so.5
#14 0x00007f0167522fd6 in QAbstractButton::mousePressEvent(QMouseEvent*) () at /usr/lib64/libQt5Widgets.so.5
#15 0x00007f016746dcb3 in QWidget::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#16 0x00007f016742be3c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#17 0x00007f0167430d14 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#18 0x00007f0166491fc5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#19 0x00007f016742fa10 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib64/libQt5Widgets.so.5
#20 0x00007f0167486911 in  () at /usr/lib64/libQt5Widgets.so.5
#21 0x00007f0167488eb3 in  () at /usr/lib64/libQt5Widgets.so.5
#22 0x00007f016742be3c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#23 0x00007f016743049a in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#24 0x00007f0166491fc5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#25 0x00007f0166c7868b in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib64/libQt5Gui.so.5
#26 0x00007f0166c79e05 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib64/libQt5Gui.so.5
#27 0x00007f0166c5beeb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Gui.so.5
#28 0x00007f0156492bc0 in  () at /usr/lib64/libQt5XcbQpa.so.5
#29 0x00007f0161e18134 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#30 0x00007f0161e18388 in  () at /usr/lib64/libglib-2.0.so.0
#31 0x00007f0161e1842c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#32 0x00007f01664e230c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#33 0x00007f016648ffdb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#34 0x00007f016761cf3c in QDialog::exec() () at /usr/lib64/libQt5Widgets.so.5
#35 0x00007f016edb57e1 in  () at /usr/lib64/libmarblewidget-qt5.so.25
#36 0x00007f016edb5b90 in  () at /usr/lib64/libmarblewidget-qt5.so.25
#37 0x00007f01664bbbb1 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#38 0x00007f0167422892 in QAction::triggered(bool) () at /usr/lib64/libQt5Widgets.so.5
#39 0x00007f016742542d in QAction::activate(QAction::ActionEvent) () at /usr/lib64/libQt5Widgets.so.5
#40 0x00007f01675a0582 in  () at /usr/lib64/libQt5Widgets.so.5
#41 0x00007f01675a5730 in  () at /usr/lib64/libQt5Widgets.so.5
#42 0x00007f01675a927b in QMenu::mouseReleaseEvent(QMouseEvent*) () at /usr/lib64/libQt5Widgets.so.5
#43 0x00007f016746dc9a in QWidget::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#44 0x00007f01675a9bbb in QMenu::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#45 0x00007f016742be3c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#46 0x00007f0167430d14 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#47 0x00007f0166491fc5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#48 0x00007f016742fa10 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib64/libQt5Widgets.so.5
#49 0x00007f0167486eb4 in  () at /usr/lib64/libQt5Widgets.so.5
#50 0x00007f0167488eb3 in  () at /usr/lib64/libQt5Widgets.so.5
#51 0x00007f016742be3c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#52 0x00007f016743049a in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#53 0x00007f0166491fc5 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#54 0x00007f0166c7868b in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib64/libQt5Gui.so.5
#55 0x00007f0166c79e05 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib64/libQt5Gui.so.5
#56 0x00007f0166c5beeb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Gui.so.5
#57 0x00007f0156492bc0 in  () at /usr/lib64/libQt5XcbQpa.so.5
#58 0x00007f0161e18134 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#59 0x00007f0161e18388 in  () at /usr/lib64/libglib-2.0.so.0
#60 0x00007f0161e1842c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#61 0x00007f01664e230c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#62 0x00007f016648ffdb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#63 0x00007f0166497ec6 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#64 0x00000000004235ea in  ()
#65 0x00007f01656066e5 in __libc_start_main () at /lib64/libc.so.6
#66 0x000000000041d939 in _start ()

Reported using DrKonqi
Comment 1 Stefan Bauer 2017-03-09 20:32:48 UTC
I can confirm this for Marble 2.1.0 on Arch Linux, x86_64.
Comment 2 Christoph Feck 2019-08-20 19:40:53 UTC
*** Bug 410713 has been marked as a duplicate of this bug. ***
Comment 3 Justin Zobel 2022-09-24 09:52:37 UTC
Thank you for reporting this crash in KDE software. As it has been a while since this issue was reported, can we please ask you to see if you can reproduce the crash with a recent software version?

If you can reproduce the issue, please change the status to "CONFIRMED" when replying. Thank you!
Comment 4 Urs Weder 2022-09-24 10:51:48 UTC
The color item is grayed out and I still can't change it.
Comment 5 Torsten Rahn 2023-04-22 17:17:20 UTC
The Crash itself should be fixed now.
Editing the loaded file is currently not supported (would be great though) - the current tools are at this point just for introspection.
Comment 6 Dave Gilbert 2023-04-23 00:44:25 UTC
Nice; I'd agree the crash on 'cancel' on that dialog is gone.  However, I can still crash it clicking OK:

(Current git 419079e2f65b8357500cc3fd8a6425361404e95e )

#0  0x00007ffff7878dc1 in Marble::OsmTagEditorWidget::placemarkData() const (this=0x0)
    at /discs/more/git/marble/src/lib/marble/osm/OsmTagEditorWidget.cpp:71

Note (this=0x0)

#1  0x00007ffff79d1641 in Marble::EditPlacemarkDialog::updateTextAnnotation() (this=0x1f5caa0)
    at /discs/more/git/marble/src/lib/marble/EditPlacemarkDialog.cpp:340

339	    else {
340	        const OsmPlacemarkData osmData = d->m_osmTagEditorWidget->placemarkData();
(gdb) p d->m_osmTagEditorWidget
$4 = (Marble::OsmTagEditorWidget *) 0x0

341	        const GeoDataPlacemark::GeoDataVisualCategory category = StyleBuilder::determineVisualCategory(osmData);

#2  0x00007ffff79d2d0c in Marble::EditPlacemarkDialog::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_o=0x1f5caa0, _c=QMetaObject::InvokeMetaMethod, _id=9, _a=0x7fffffffaf80)
    at /discs/more/git/marble/build/src/lib/marble/marblewidget_autogen/include/moc_EditPlacemarkDialog.cpp:144
#3  0x00007fffecae87d8 in doActivate<false>(QObject*, int, void**) (sender=0x1f5caa0, signal_index=8, argv=0x7fffffffaf80) at kernel/qobject.cpp:3935
#4  0x00007fffecae34d7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x1f5caa0, m=m@entry=0x7fffedce38c0 <QDialog::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x0) at kernel/qobject.cpp:3983
#5  0x00007fffed9cb3d7 in QDialog::accepted() (this=this@entry=0x1f5caa0) at .moc/moc_qdialog.cpp:236
#6  0x00007fffed9cb8c8 in QDialogPrivate::finalize(int, int) (this=<optimized out>, resultCode=1, dialogCode=<optimized out>) at dialogs/qdialog.cpp:176
#7  0x00007ffff79d1dbb in Marble::EditPlacemarkDialog::checkFields() (this=0x1f5caa0) at /discs/more/git/marble/src/lib/marble/EditPlacemarkDialog.cpp:374
#8  0x00007ffff79d2cfb in Marble::EditPlacemarkDialog::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_o=0x1f5caa0, _c=QMetaObject::InvokeMetaMethod, _id=8, _a=0x7fffffffb1a0)
    at /discs/more/git/marble/build/src/lib/marble/marblewidget_autogen/include/moc_EditPlacemarkDialog.cpp:143
#9  0x00007fffecae87d8 in doActivate<false>(QObject*, int, void**) (sender=0x2133400, signal_index=7, argv=0x7fffffffb1a0) at kernel/qobject.cpp:3935
#10 0x00007fffecae34d7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x2133400, m=m@entry=0x7fffedcd3680 <QAbstractButton::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3983
#11 0x00007fffed8a9b14 in QAbstractButton::pressed() (this=this@entry=0x2133400) at .moc/moc_qabstractbutton.cpp:295
#12 0x00007fffed8a9f02 in QAbstractButtonPrivate::emitPressed() (this=0x1f50e20) at widgets/qabstractbutton.cpp:438
#13 0x00007fffed8aa895 in QAbstractButton::mousePressEvent(QMouseEvent*) (this=0x2133400, e=0x7fffffffb750) at widgets/qabstractbutton.cpp:1017
#14 0x00007fffed7f3688 in QWidget::event(QEvent*) (this=0x2133400, event=0x7fffffffb750) at kernel/qwidget.cpp:9045
#15 0x00007fffed7aeb75 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    (this=this@entry=0x4e9e50, receiver=receiver@entry=0x2133400, e=e@entry=0x7fffffffb750) at kernel/qapplication.cpp:3640
#16 0x00007fffed7b7456 in QApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x2133400, e=0x7fffffffb750)
    at kernel/qapplication.cpp:3084
#17 0x00007fffecab3d48 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x2133400, event=0x7fffffffb750)
    at kernel/qcoreapplication.cpp:1064
#18 0x00007fffecab3f82 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>)
    at kernel/qcoreapplication.cpp:1474
#19 0x00007fffed7b56a4 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool)
    (receiver=receiver@entry=0x2133400, event=event@entry=0x7fffffffb750, alienWidget=<optimized out>, nativeWidget=0x1f5caa0, buttonDown=buttonDown@entry=0x7fffedd06330 <qt_button_down>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2622
#20 0x00007fffed80d1a9 in QWidgetWindow::handleMouseEvent(QMouseEvent*) (this=this@entry=0x23efa50, event=event@entry=0x7fffffffba30)
    at kernel/qwidgetwindow.cpp:684
#21 0x00007fffed81072f in QWidgetWindow::event(QEvent*) (this=0x23efa50, event=0x7fffffffba30) at kernel/qwidgetwindow.cpp:300
#22 0x00007fffed7aeb75 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x23efa50, e=0x7fffffffba30)
    at kernel/qapplication.cpp:3640
#23 0x00007fffecab3d48 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x23efa50, event=0x7fffffffba30)
    at kernel/qcoreapplication.cpp:1064
#24 0x00007fffecab3f82 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>)
    at kernel/qcoreapplication.cpp:1474
#25 0x00007fffecf6c44b in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) (e=0x2182700)
    at kernel/qguiapplication.cpp:2278
#26 0x00007fffecf4aa0c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=flags@entry=...)
    at kernel/qwindowsysteminterface.cpp:1169
#27 0x00007fffda71b386 in xcbSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at qxcbeventdispatcher.cpp:105
#28 0x00007fffe89c7f58 in g_main_dispatch (context=0x7fffd4000ee0) at ../glib/gmain.c:3460
#29 g_main_context_dispatch (context=0x7fffd4000ee0) at ../glib/gmain.c:4200
#30 0x00007fffe8a27cd8 in g_main_context_iterate.isra.0 (context=0x7fffd4000ee0, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4276
#31 0x00007fffe89c9233 in g_main_context_iteration (context=0x7fffd4000ee0, may_block=1) at ../glib/gmain.c:4343
#32 0x00007fffecb06919 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffd400efc0, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#33 0x00007fffecab270b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffbe00, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#34 0x00007fffed9cccbb in QDialog::exec() (this=0x1f5caa0) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#35 0x00007ffff78bf358 in Marble::FileViewWidgetPrivate::showPlacemarkDialog() (this=0x17640e0)
    at /discs/more/git/marble/src/lib/marble/FileViewWidget.cpp:202
#36 0x00007ffff78bf6c8 in Marble::FileViewWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_o=0x18e4640, _c=QMetaObject::InvokeMetaMethod, _id=7, _a=0x7fffffffc030)
    at /discs/more/git/marble/build/src/lib/marble/marblewidget_autogen/include/moc_FileViewWidget.cpp:111
#37 0x00007fffecae87d8 in doActivate<false>(QObject*, int, void**) (sender=0x1761f90, signal_index=4, argv=0x7fffffffc030) at kernel/qobject.cpp:3935
#38 0x00007fffecae34d7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x1761f90, m=m@entry=0x7fffedcce240 <QAction::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7fffffffc030) at kernel/qobject.cpp:3983
#39 0x00007fffed7a7d24 in QAction::triggered(bool) (this=this@entry=0x1761f90, _t1=<optimized out>) at .moc/moc_qaction.cpp:376
#40 0x00007fffed7aab7b in QAction::activate(QAction::ActionEvent) (this=0x1761f90, event=<optimized out>) at kernel/qaction.cpp:1161
#41 0x00007fffed93f162 in QMenuPrivate::activateCausedStack(QVector<QPointer<QWidget> > const&, QAction*, QAction::ActionEvent, bool)
    (this=this@entry=0x176c830, causedStack=..., action=action@entry=0x1761f90, action_e=action_e@entry=QAction::Trigger, self=self@entry=true)
    at widgets/qmenu.cpp:1384
#42 0x00007fffed9470e2 in QMenuPrivate::activateAction(QAction*, QAction::ActionEvent, bool)
    (this=0x176c830, action=0x1761f90, action_e=QAction::Trigger, self=true) at widgets/qmenu.cpp:1461
#43 0x00007fffed7f3688 in QWidget::event(QEvent*) (this=0x1675c90, event=0x7fffffffc670) at kernel/qwidget.cpp:9045
#44 0x00007fffed7aeb75 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    (this=this@entry=0x4e9e50, receiver=receiver@entry=0x1675c90, e=e@entry=0x7fffffffc670) at kernel/qapplication.cpp:3640
#45 0x00007fffed7b7456 in QApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x1675c90, e=0x7fffffffc670)
    at kernel/qapplication.cpp:3084
#46 0x00007fffecab3d48 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x1675c90, event=0x7fffffffc670)
    at kernel/qcoreapplication.cpp:1064
#47 0x00007fffecab3f82 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>)
    at kernel/qcoreapplication.cpp:1474
#48 0x00007fffed7b56a4 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool)
    (receiver=0x1675c90, event=event@entry=0x7fffffffc670, alienWidget=<optimized out>, nativeWidget=0x1675c90, buttonDown=buttonDown@entry=0x7fffedd06330 <qt_button_down>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2622
#49 0x00007fffed80dd42 in QWidgetWindow::handleMouseEvent(QMouseEvent*) (this=this@entry=0x7fffcc003ff0, event=event@entry=0x7fffffffc950)
    at kernel/qwidgetwindow.cpp:580
#50 0x00007fffed81072f in QWidgetWindow::event(QEvent*) (this=0x7fffcc003ff0, event=0x7fffffffc950) at kernel/qwidgetwindow.cpp:300
#51 0x00007fffed7aeb75 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x7fffcc003ff0, e=0x7fffffffc950)
    at kernel/qapplication.cpp:3640
#52 0x00007fffecab3d48 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffcc003ff0, event=0x7fffffffc950)
    at kernel/qcoreapplication.cpp:1064
#53 0x00007fffecab3f82 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>)
    at kernel/qcoreapplication.cpp:1474
#54 0x00007fffecf6c44b in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) (e=0x1f196a0)
    at kernel/qguiapplication.cpp:2278
#55 0x00007fffecf4aa0c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=flags@entry=...)
    at kernel/qwindowsysteminterface.cpp:1169
#56 0x00007fffda71b386 in xcbSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at qxcbeventdispatcher.cpp:105
#57 0x00007fffe89c7f58 in g_main_dispatch (context=0x7fffd4000ee0) at ../glib/gmain.c:3460
#58 g_main_context_dispatch (context=0x7fffd4000ee0) at ../glib/gmain.c:4200
#59 0x00007fffe8a27cd8 in g_main_context_iterate.isra.0 (context=0x7fffd4000ee0, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4276
#60 0x00007fffe89c9233 in g_main_context_iteration (context=0x7fffd4000ee0, may_block=1) at ../glib/gmain.c:4343
#61 0x00007fffecb06919 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffd400efc0, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#62 0x00007fffecab270b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffcd10, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#63 0x00007fffecaba99b in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#64 0x00000000004210d7 in main(int, char**) (argc=1, argv=0x7fffffffde78) at /discs/more/git/marble/src/apps/marble-kde/kdemain.cpp:441
Comment 7 Dave Gilbert 2023-04-23 01:14:21 UTC
actually hmm..  I think there are more around here as well.  I'm fairly sure I had a cancel crash again after a bit of poking around.
I also can crash sometimes unticking the track as well;
#0  0x00007ffff77779e8 in Marble::GeoDataObject::parent() (this=0x20) at /discs/more/git/marble/src/lib/marble/geodata/data/GeoDataObject.cpp:67
#1  0x00007ffff7917fbb in Marble::GeoDataTreeModel::parent(QModelIndex const&) const (this=0xb05ec0, index=...)
    at /discs/more/git/marble/src/lib/marble/GeoDataTreeModel.cpp:440
#2  0x00007ffff79218fe in QModelIndex::parent() const (this=0x7fffffffb610) at /usr/include/qt5/QtCore/qabstractitemmodel.h:443
#3  0x00007ffff791e375 in Marble::KDescendantsProxyModel::mapFromSource(QModelIndex const&) const (this=0xb05ed8, sourceIndex=...)
    at /discs/more/git/marble/src/lib/marble/kdescendantsproxymodel.cpp:417
#4  0x00007ffff791f770 in Marble::KDescendantsProxyModelPrivate::sourceRowsAboutToBeRemoved(QModelIndex const&, int, int)
    (this=0xa0e130, parent=..., start=0, end=0) at /discs/more/git/marble/src/lib/marble/kdescendantsproxymodel.cpp:661
#5  0x00007ffff79214bf in Marble::KDescendantsProxyModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_o=0xb05ed8, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0x7fffffffb920)
    at /discs/more/git/marble/build/src/lib/marble/marblewidget_autogen/include/moc_kdescendantsproxymodel.cpp:118
#6  0x00007fffecae87d8 in doActivate<false>(QObject*, int, void**) (sender=0xb05ec0, signal_index=14, argv=0x7fffffffb920) at kernel/qobject.cpp:3935
#7  0x00007fffecae34d7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0xb05ec0, m=m@entry=0x7fffecd64900 <QAbstractItemModel::staticMetaObject>, local_signal_index=local_signal_index@entry=11, argv=argv@entry=0x7fffffffb920) at kernel/qobject.cpp:3983
#8  0x00007fffeca6239a in QAbstractItemModel::rowsAboutToBeRemoved(QModelIndex const&, int, int, QAbstractItemModel::QPrivateSignal)
    (this=this@entry=0xb05ec0, _t1=..., _t2=<optimized out>, _t2@entry=0, _t3=<optimized out>, _t3@entry=0, _t4=...) at .moc/moc_qabstractitemmodel.cpp:599
#9  0x00007fffeca6aa9c in QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) (this=0xb05ec0, parent=..., first=0, last=0)
    at itemmodels/qabstractitemmodel.cpp:2818
#10 0x00007ffff79199d8 in Marble::GeoDataTreeModel::removeFeature(Marble::GeoDataContainer*, int) (this=0xb05ec0, parent=0x7fff34004738, row=0)
    at /discs/more/git/marble/src/lib/marble/GeoDataTreeModel.cpp:738
#11 0x00007ffff7919b28 in Marble::GeoDataTreeModel::removeFeature(Marble::GeoDataFeature*) (this=0xb05ec0, feature=0x7fff34005c40)
    at /discs/more/git/marble/src/lib/marble/GeoDataTreeModel.cpp:765
#12 0x00007ffff7919b71 in Marble::GeoDataTreeModel::updateFeature(Marble::GeoDataFeature*) (this=0xb05ec0, feature=0x7fff34005c40)
    at /discs/more/git/marble/src/lib/marble/GeoDataTreeModel.cpp:779
#13 0x00007ffff79184f7 in Marble::GeoDataTreeModel::setData(QModelIndex const&, QVariant const&, int) (this=0xb05ec0, index=..., value=..., role=10)
    at /discs/more/git/marble/src/lib/marble/GeoDataTreeModel.cpp:521
#14 0x00007fffeca8b8c9 in QSortFilterProxyModel::setData(QModelIndex const&, QVariant const&, int)
    (this=this@entry=0x1685aa0, index=..., value=..., role=role@entry=10) at itemmodels/qsortfilterproxymodel.cpp:2306
#15 0x00007fffeda62ab4 in QStyledItemDelegate::editorEvent(QEvent*, QAbstractItemModel*, QStyleOptionViewItem const&, QModelIndex const&)
    (this=0x1778120, event=<optimized out>, model=0x1685aa0, option=<optimized out>, index=...) at itemviews/qstyleditemdelegate.cpp:635
#16 0x00007fffeda384f6 in QAbstractItemViewPrivate::sendDelegateEvent(QModelIndex const&, QEvent*) const
    (this=this@entry=0x18ad810, index=..., event=event@entry=0x7fffffffc610) at itemviews/qabstractitemview.cpp:4463
#17 0x00007fffeda3e14d in QAbstractItemView::edit(QModelIndex const&, QAbstractItemView::EditTrigger, QEvent*)
    (this=this@entry=0x18b5e80, index=..., trigger=trigger@entry=QAbstractItemView::SelectedClicked, event=event@entry=0x7fffffffc610)
    at itemviews/qabstractitemview.cpp:2683
#18 0x00007fffeda38902 in QAbstractItemView::mouseReleaseEvent(QMouseEvent*) (this=0x18b5e80, event=0x7fffffffc610) at itemviews/qabstractitemview.cpp:1930
#19 0x00007fffed7f3688 in QWidget::event(QEvent*) (this=this@entry=0x18b5e80, event=event@entry=0x7fffffffc610) at kernel/qwidget.cpp:9045
#20 0x00007fffed8a4ae7 in QFrame::event(QEvent*) (this=0x18b5e80, e=0x7fffffffc610) at widgets/qframe.cpp:550
#21 0x00007fffecab3af6 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*)
    (receiver=receiver@entry=0x18b60c0, event=event@entry=0x7fffffffc610) at kernel/qcoreapplication.cpp:1190
Comment 8 Torsten Rahn 2023-04-23 08:17:37 UTC
Crash on clicking "Ok" should be gone with 

commit c7f6a96911ea9e46ae0e49291ed18c364f21d01f (HEAD -> master, origin/master, origin/HEAD)
Author: Torsten Rahn <rahn@kde.org>
Date:   Sun Apr 23 10:09:55 2023 +0200

    Fix Crash on Pressing OK in EditPlacemarkDialog for the ReadOnly case.
Comment 9 Torsten Rahn 2023-04-23 08:20:21 UTC
Not sure yet how to reproduce the Cancel and unticking case -so far it just works here ... :-/
Comment 10 Dave Gilbert 2023-04-23 11:08:37 UTC
Thanks; that OK case has gone.
There's stil something odd going on, I tend to fully open the section of the tree, so I see:
v <tick> Track... Document
   v <tick> time  Placemark  0 1
     v            MultiGeometry
                  Track

and then play with the ticks and bringing the dialog up.  Sometimes I see that there's a change where the 'MultiGeometry' and 'track' entries disappear when I turn the tick off and back; sometimes the track itself isn't displayed again.
and on a really bad day, I just triggered the cancel crash again:

(gdb) bt full
#0  __cxxabiv1::__dynamic_cast(void const*, __cxxabiv1::__class_type_info const*, __cxxabiv1::__class_type_info const*, ptrdiff_t)
    (src_ptr=0x7fff30013a50, src_type=0x7ffff7e21168 <typeinfo for Marble::GeoDataObject>, dst_type=0x7ffff7e1fac8 <typeinfo for Marble::GeoDataContainer>, src2dst=0) at ../../../../libstdc++-v3/libsupc++/dyncast.cc:57
        vtable = 0x7ff8cff23bc3
        prefix = 0x7ff8cff23bb3
        whole_ptr = <optimized out>
        whole_type = <optimized out>
        result = {dst_ptr = 0x179df50, whole2dst = 3964353270, whole2src = 32767, dst2src = 805330464, whole_details = 32767}
        whole_vtable = <optimized out>
        whole_prefix = <optimized out>
#1  0x00007ffff79164b9 in Marble::GeoDataTreeModel::rowCount(QModelIndex const&) const (this=0xb05740, parent=...)
    at /discs/more/git/marble/src/lib/marble/GeoDataTreeModel.cpp:136
        container = 0x0
        parentItem = 0x7fff30013a50
#2  0x00007fffeca63d78 in QAbstractItemModel::hasIndex(int, int, QModelIndex const&) const (this=0xb05740, row=0, column=0, parent=...)
    at itemmodels/qabstractitemmodel.cpp:1784
#3  0x00007ffff7917cda in Marble::GeoDataTreeModel::index(int, int, QModelIndex const&) const (this=0xb05740, row=0, column=0, parent=...)
    at /discs/more/git/marble/src/lib/marble/GeoDataTreeModel.cpp:371
        parentItem = 0x7fffec4b682b <__cxxabiv1::__vmi_class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const+635>
        childItem = 0x7ffff7e20210 <typeinfo for Marble::GeoDataDocument>
#4  0x00007fffeca8b7d1 in QSortFilterProxyModelPrivate::proxy_to_source(QModelIndex const&) const (this=this@entry=0x179df50, proxy_index=<optimized out>)
    at itemmodels/qsortfilterproxymodel.cpp:576
        it = {i = <optimized out>}
        m = <optimized out>
        source_row = <optimized out>
        source_col = <optimized out>
#5  0x00007fffeca8bc55 in QSortFilterProxyModel::mapToSource(QModelIndex const&) const (proxyIndex=<optimized out>, this=<optimized out>)
    at itemmodels/qsortfilterproxymodel.cpp:3171
        d = 0x179df50
        d = 0x179df50
        source_index = {r = -1, c = -1, i = 0, m = 0x0}
#6  QSortFilterProxyModel::flags(QModelIndex const&) const (this=<optimized out>, index=<optimized out>) at itemmodels/qsortfilterproxymodel.cpp:2548
--Type <RET> for more, q to quit, c to continue without paging--
        d = 0x179df50
        source_index = {r = -1, c = -1, i = 0, m = 0x0}
#7  0x00007fffeca73820 in QModelIndex::flags() const (this=0x1a79420) at ../../include/QtCore/../../src/corelib/itemmodels/qabstractitemmodel.h:463
#8  QItemSelection::contains(QModelIndex const&) const (this=this@entry=0x179e5a0, index=...) at itemmodels/qitemselectionmodel.cpp:496
#9  0x00007fffeca73f2f in QItemSelectionModel::isSelected(QModelIndex const&) const (this=<optimized out>, index=...)
    at itemmodels/qitemselectionmodel.cpp:1460
        d = 0x179e530
        selected = false
        it = {i = 0x7fffecb88c50 <QListData::shared_null+16>}
#10 0x00007fffedaa8dab in QTreeView::drawBranches(QPainter*, QRect const&, QModelIndex const&) const
    (this=0x18d7060, painter=0x7fffffffc1b8, rect=<optimized out>, index=...) at itemviews/qtreeview.cpp:1834
        d = 0x179b740
        reverse = false
        indent = 20
        outer = 0
        viewItem = @0x1a79420: {index = {r = 0, c = 0, i = 34955584, m = 0x16ad1c0}, parentItem = 6, expanded = 0, spanning = 0, hasChildren = 0, hasMoreSiblings = 0, total = 0, level = 3, height = 17}
        level = 3
        primitive = {x1 = 80, y1 = 119, x2 = <optimized out>, y2 = <optimized out>}
        parent = {r = <optimized out>, c = <optimized out>, i = <optimized out>, m = <optimized out>}
        current = {r = 0, c = 0, i = 34060896, m = 0x16ad1c0}
        ancestor = {r = 0, c = 0, i = 32675840, m = 0x16ad1c0}
        opt = {<QStyleOption> = {version = 4, type = 10, state = {i = 65537}, direction = Qt::LeftToRight, rect = {x1 = 0, y1 = 0, x2 = -1, y2 = -1}, fontMetrics = {d = {d = 0x9a7e40}}, palette = {d = 0x99b0d0, {data = {current_group = 0, resolve_mask = 0}, for_faster_swapping_dont_use = 0}}, styleObject = 0x18d7060}, displayAlignment = {i = 129}, decorationAlignment = {i = 132}, textElideMode = Qt::ElideLeft, decorationPosition = QStyleOptionViewItem::Left, decorationSize = {wd = 16, ht = 16}, font = {d = {d = 0x9a7e40}, resolve_mask = 0}, showDecorationSelected = true, features = {i = 0}, locale = {d = {d = 0x2199e70}}, widget = 0x18d7060, index = {r = -1, c = -1, i = 0, m = 0x0}, checkState = Qt::Unchecked, icon = {d = 0x0}, text = {d = 0x7fffecb88160 <QArrayData::shared_null>}, viewItemPosition = QStyleOptionViewItem::Invalid, backgroundBrush = {d = {d = 0x4e74e0}}}
        extraFlags = {i = 65537}
        hoverRow = false
#11 0x00007fffedaad069 in QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const
    (this=0x18d7060, painter=0x7fffffffc1b8, option=<optimized out>, index=...) at itemviews/qtreeview.cpp:1753
        i = <optimized out>
        branches = {x1 = 0, y1 = 119, x2 = 79, y2 = 135}
        setClipRect = false
        oldState = {i = 65537}
        headerSection = <optimized out>
        currentLogicalSection = 0
        d = 0x179b740
        opt = {<QStyleOption> = {version = 4, type = 10, state = {i = 65537}, direction = Qt::LeftToRight, rect = {x1 = 80, y1 = 119, x2 = 199, y2 = 135}, fontMetrics = {d = {d = 0x9a7e40}}, palette = {d = 0x99b0d0, {data = {current_group = 0, resolve_mask = 0}, for_faster_swapping_dont_use = 0}}, styleObject = 0x18d7060}, displayAlignment = {i = 129}, decorationAlignment = {i = 132}, textElideMode = Qt::ElideLeft, decorationPosition = QStyleOptionViewItem::Left, decorationSize = {wd = 16, ht = 16}, font = {d = {d = 0x9a7e40}, resolve_mask = 0}, showDecorationSelected = true, features = {i = 0}, locale = {d = {d = 0x7fffcc002440}}, widget = 0x18d7060, index = {r = -1, c = -1, i = 0, m = 0x0}, checkState = Qt::Unchecked, icon = {d = 0x0}, text = {d = 0x7fffecb88160 <QArrayData::shared_null>}, viewItemPosition = QStyleOptionViewItem::Beginning, backgroundBrush = {d = {d = 0x4e74e0}}}
        offset = {xp = 0, yp = <optimized out>}
        y = 119
        parent = {r = 0, c = 0, i = 34060896, m = 0x16ad1c0}
        header = 0x179a570
        current = {r = 0, c = 0, i = 32675840, m = 0x16ad1c0}
        hover = {r = -1, c = -1, i = 0, m = 0x0}
        reverse = false
        state = {i = 65537}
        spanning = false
        left = <optimized out>
        right = <optimized out>
        alternate = false
        enabled = true
        allColumnsShowFocus = false
        indexWidgetHasFocus = false
        widgetHasFocus = true
        currentRowHasFocus = <optimized out>
        width = 200
        height = 17
        position = 0
        modelIndex = {r = 0, c = 0, i = 26274384, m = 0x16ad1c0}
        hoverRow = false
        logicalIndices = {d = 0x1ffe830}
        viewItemPosList = {d = 0x1f5d360}
    at itemviews/qtreeview.cpp:1504
        itemHeight = <optimized out>
        area = {x1 = 0, y1 = 0, x2 = 402, y2 = 957}
        i = 7
        y = <optimized out>
        a = @0x1ef0880: {x1 = 0, y1 = 0, x2 = 402, y2 = 957}
        __for_range = @0x7fffffffc458: {d = 0x205f210, static shared_empty = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, qt_rgn = 0x7fffed438ec0 <qrp>}}
        __for_begin = 0x1ef0880
        __for_end = 0x1ef0890
        d = 0x179b740
        viewItems = @0x179bb78: {d = 0x1a792f0}
        option = {<QStyleOption> = {version = 4, type = 10, state = {i = 65537}, direction = Qt::LeftToRight, rect = {x1 = 0, y1 = 119, x2 = 402, y2 = 135}, fontMetrics = {d = {d = 0x9a7e40}}, palette = {d = 0x99b0d0, {data = {current_group = 0, resolve_mask = 0}, for_faster_swapping_dont_use = 0}}, styleObject = 0x18d7060}, displayAlignment = {i = 129}, decorationAlignment = {i = 132}, textElideMode = Qt::ElideLeft, decorationPosition = QStyleOptionViewItem::Left, decorationSize = {wd = 16, ht = 16}, font = {d = {d = 0x9a7e40}, resolve_mask = 0}, showDecorationSelected = true, features = {i = 0}, locale = {d = {d = 0x7fffcc002440}}, widget = 0x18d7060, index = {r = -1, c = -1, i = 0, m = 0x0}, checkState = Qt::Unchecked, icon = {d = 0x0}, text = {d = 0x7fffecb88160 <QArrayData::shared_null>}, viewItemPosition = QStyleOptionViewItem::Invalid, backgroundBrush = {d = {d = 0x4e74e0}}}
        state = {i = 65537}
        firstVisibleItemOffset = 0
        firstVisibleItem = 0
        viewportWidth = 403
        hoverPos = {xp = 745, yp = 643}
        drawn = {d = 0x7fffecb88160 <QArrayData::shared_null>}
        multipleRects = false
#13 0x00007fffedab7773 in QTreeView::paintEvent(QPaintEvent*) (this=0x18d7060, event=0x7fffffffc430) at itemviews/qtreeview.cpp:1332
        d = 0x179b740
        painter = {d_ptr = {d = 0x2057a00}}
#14 0x00007fffed7f3688 in QWidget::event(QEvent*) (this=this@entry=0x18d7060, event=event@entry=0x7fffffffc430) at kernel/qwidget.cpp:9045
        d = <optimized out>
#15 0x00007fffed8a4ae7 in QFrame::event(QEvent*) (this=0x18d7060, e=0x7fffffffc430) at widgets/qframe.cpp:550
        result = <optimized out>
#16 0x00007fffecab3af6 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*)
    (receiver=receiver@entry=0x16a9ad0, event=event@entry=0x7fffffffc430) at kernel/qcoreapplication.cpp:1190
        obj = <optimized out>
        i = 0
#17 0x00007fffed7aeb65 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x16a9ad0, e=0x7fffffffc430)
    at kernel/qapplication.cpp:3634
        consumed = false
        filtered = false
#18 0x00007fffecab3d48 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x16a9ad0, event=0x7fffffffc430) at kernel/qcoreapplication.cpp:1064
        selfRequired = true
        result = false
        cbdata = {0x16a9ad0, 0x7fffffffc430, 0x7fffffffc3cf}
        d = <optimized out>
        threadData = 0x4aea10
        scopeLevelCounter = {threadData = 0x4aea10}
#19 0x00007fffecab3f82 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>)
    at kernel/qcoreapplication.cpp:1474
#20 0x00007fffed7eb39e in QWidgetPrivate::sendPaintEvent(QRegion const&) (this=this@entry=0x16abad0, toBePainted=...) at kernel/qwidget.cpp:5479
        q = 0x16a9ad0
        e = {<QEvent> = {_vptr.QEvent = 0x7fffed4182c0 <vtable for QPaintEvent+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7fffecc67d60 <qt_meta_stringdata_QEvent>, data = 0x7fffecc677a0 <qt_meta_data_QEvent>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x0, t = 12, posted = 0, spont = 1, m_accept = 1, reserved = 0}, m_rect = {x1 = 0, y1 = 0, x2 = 402, y2 = 957}, m_region = {d = 0x205f210}, m_erased = false}
#21 0x00007fffed7ec1fd in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*)
    (this=this@entry=0x16abad0, pdev=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=sharedPainter@entry=0x0, repaintManager=<optimized out>)
    at kernel/qwidget.cpp:5429
        paintEngine = <optimized out>
        skipPaintEvent = <optimized out>
        q = <optimized out>
        asRoot = <optimized out>
        onScreen = <optimized out>
        alsoOnScreen = false
        recursive = true
        alsoInvisible = false
        toBePainted = {d = 0x205f210, static shared_empty = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, qt_rgn = 0x7fffed438ec0 <qrp>}}
Comment 11 Dave Gilbert 2023-04-23 11:27:39 UTC
playing with the tick and stuff I managed to trigger valgrind:

==15894== Invalid read of size 8
==15894==    at 0x49C99F8: Marble::GeoDataObject::parent() (GeoDataObject.cpp:67)
==15894==    by 0x4B69F7D: Marble::GeoDataTreeModel::parent(QModelIndex const&) const (GeoDataTreeModel.cpp:434)
==15894==    by 0x4B7390D: QModelIndex::parent() const (qabstractitemmodel.h:443)
==15894==    by 0x4B70384: Marble::KDescendantsProxyModel::mapFromSource(QModelIndex const&) const (kdescendantsproxymodel.cpp:417)
==15894==    by 0x4B7177F: Marble::KDescendantsProxyModelPrivate::sourceRowsAboutToBeRemoved(QModelIndex const&, int, int) (kdescendantsproxymodel.cpp:661)
==15894==    by 0x4B734CE: Marble::KDescendantsProxyModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_kdescendantsproxymodel.cpp:118)
==15894==    by 0xF9C27D7: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3935)
==15894==    by 0xF93C399: QAbstractItemModel::rowsAboutToBeRemoved(QModelIndex const&, int, int, QAbstractItemModel::QPrivateSignal) (moc_qabstractitemmodel.cpp:599)
==15894==    by 0xF944A9B: QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) (qabstractitemmodel.cpp:2818)
==15894==    by 0x4B6B9E7: Marble::GeoDataTreeModel::removeFeature(Marble::GeoDataContainer*, int) (GeoDataTreeModel.cpp:738)
==15894==    by 0x4B6BB37: Marble::GeoDataTreeModel::removeFeature(Marble::GeoDataFeature*) (GeoDataTreeModel.cpp:765)
==15894==    by 0x4B6BB80: Marble::GeoDataTreeModel::updateFeature(Marble::GeoDataFeature*) (GeoDataTreeModel.cpp:779)
==15894==  Address 0x23dd2340 is 16 bytes inside a block of size 32 free'd
==15894==    at 0x4844669: operator delete(void*) (vg_replace_malloc.c:935)
==15894==    by 0x49C34FD: Marble::GeoDataMultiGeometry::~GeoDataMultiGeometry() (GeoDataMultiGeometry.cpp:36)
==15894==    by 0x49B26C7: Marble::GeoDataPlacemark::setGeometry(Marble::GeoDataGeometry*) (GeoDataPlacemark.cpp:282)
==15894==    by 0x49B2663: Marble::GeoDataPlacemark::setCoordinate(Marble::GeoDataCoordinates const&) (GeoDataPlacemark.cpp:276)
==15894==    by 0x4C24922: Marble::EditPlacemarkDialog::restoreInitial(int) (EditPlacemarkDialog.cpp:484)
==15894==    by 0x4C24EAA: Marble::EditPlacemarkDialog::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_EditPlacemarkDialog.cpp:153)
==15894==    by 0xF9C27D7: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3935)
==15894==    by 0xED6439F: QDialog::finished(int) (moc_qdialog.cpp:230)
==15894==    by 0xF9C27D7: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3935)
==15894==    by 0xECF3B27: QDialogButtonBoxPrivate::_q_handleButtonClicked() (qdialogbuttonbox.cpp:882)
==15894==    by 0xF9C27D7: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3935)
==15894==    by 0xEC42B83: QAbstractButton::clicked(bool) (moc_qabstractbutton.cpp:308)
==15894==  Block was alloc'd at
==15894==    at 0x4841FF5: operator new(unsigned long) (vg_replace_malloc.c:434)
==15894==    by 0x352FC2E2: ??? (in /opt/lib64/marble/plugins/GpxPlugin.so)
==15894==    by 0x4A114EA: Marble::GeoParser::parseDocument() (GeoParser.cpp:139)
==15894==    by 0x4A115B9: Marble::GeoParser::parseDocument() (GeoParser.cpp:166)
==15894==    by 0x4A10D2E: Marble::GeoParser::read(QIODevice*) (GeoParser.cpp:79)
==15894==    by 0x352F839B: ??? (in /opt/lib64/marble/plugins/GpxPlugin.so)
==15894==    by 0x4CAC7C9: Marble::ParsingTask::run() (RunnerTask.cpp:90)
==15894==    by 0xF7D275F: QThreadPoolThread::run() (qthreadpool.cpp:100)
==15894==    by 0xF7CF56C: operator() (qthread_unix.cpp:350)
==15894==    by 0xF7CF56C: terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (qthread_unix.cpp:287)
==15894==    by 0xF7CF56C: QThreadPrivate::start(void*) (qthread_unix.cpp:310)
==15894==    by 0x10035C56: start_thread (pthread_create.c:444)
==15894==    by 0x100BB973: clone (clone.S:100)
Comment 12 Torsten Rahn 2023-04-23 14:53:28 UTC
Hey Dave, thanks for the effort that you've put into this. Would you mind sending me your GPX file if it doesn't involve data protection / copyright concerns?
Comment 13 Dave Gilbert 2023-04-23 15:13:23 UTC
Hi Torsten,
  Thanks for the fixes! I'm using the track from:  https://michaelminn.net/tutorials/google-gpx/Track_2016-08-22_200130.gpx
Note one thing I'm seeing is that:
void EditPlacemarkDialog::restoreInitial( int result )
    if ( d->m_placemark->coordinate().latitude( GeoDataCoordinates::Degree ) !=
         d->m_initialCoords.latitude( GeoDataCoordinates::Degree ) ||
         d->m_placemark->coordinate().longitude( GeoDataCoordinates::Degree ) !=
         d->m_initialCoords.longitude( GeoDataCoordinates::Degree ) ) {

is triggering, a bit of debug gave me:
EditPlacemarkDialog::restoreInitial: initial: 47.4937/-117.578 current: 47.4937/-117.578

so I'm wondering if this is an FP rounding disagreement that's causing that restore.
Comment 14 Torsten Rahn 2023-04-23 16:46:39 UTC
Hello Dave, 

the resetInitial method would just revert all values to the initial values if modified. As in our case the whole dialog is set readonly this method shouldn't get processed at all. I've just added that to the latest commit. Does this remove the cancel issue?
Comment 15 Dave Gilbert 2023-04-23 17:18:36 UTC
Yeh I think that's nailed the 'cancel' problem.
Comment 16 Dave Gilbert 2023-04-23 17:37:39 UTC
and I can't trigger any more valgrindisms.  Looks good!
Comment 17 Hartmut 2023-12-28 10:50:02 UTC
The crashes are not gone and the color of an imported track can still not be changed.

Marble 2.2.20 and library-version is 22.12.3

Spielmops