Bug 443144

Summary: Marble always crashes on exit
Product: [Applications] marble Reporter: Hieu Van <hieutv2211>
Component: generalAssignee: marble-bugs
Status: RESOLVED FIXED    
Severity: crash CC: andrei.raziel, cyrille.dunant, daciabrown6502, j.zaitseff, marcec, pewys, qydwhotmail, t.b+kde, tolstov_den
Priority: NOR Keywords: drkonqi
Version: unspecified   
Target Milestone: ---   
Platform: Debian stable   
OS: Linux   
Latest Commit: Version Fixed In:
Attachments: New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi
New crash information added by DrKonqi

Description Hieu Van 2021-09-30 01:54:01 UTC
Application: marble (2.2.20 (2.3 development version))

Qt Version: 5.15.2
Frameworks Version: 5.86.0
Operating System: Linux 5.10.0-8-amd64 x86_64
Windowing System: X11
Drkonqi Version: 5.21.5
Distribution: Debian GNU/Linux bookworm/sid

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

Just quitting the application. Clicking on the X button on the title bar, Ctrl + Q or Menu -> Exit all yield the same result.

The crash can be reproduced every time.

-- Backtrace:
Application: Marble Virtual Globe (marble), signal: Aborted

[KCrash Handler]
#4  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#5  0x00007fde2f5cf536 in __GI_abort () at abort.c:79
#6  0x00007fde2f6272b8 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7fde2f7353a4 "%s\n") at ../sysdeps/posix/libc_fatal.c:155
#7  0x00007fde2f62ed0a in malloc_printerr (str=str@entry=0x7fde2f7335a7 "free(): invalid size") at malloc.c:5389
#8  0x00007fde2f6300e4 in _int_free (av=<optimized out>, p=0x7fff450ff200, have_lock=0) at malloc.c:4205
#9  0x00007fde2fc7152f in QObject::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007fde31372b57 in KXmlGuiWindow::event(QEvent*) () from /lib/x86_64-linux-gnu/libKF5XmlGui.so.5
#11 0x00007fde3071c74f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007fde2fc44e9a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007fde2fc47e11 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007fde2fc9d413 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007fde2d829d0b in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007fde2d829fb8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007fde2d82a06f in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007fde2fc9ca90 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#19 0x00007fde2fc438db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#20 0x00007fde2fc4bb10 in QCoreApplication::exec() () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00005569cf8da37e in ?? ()
#22 0x00007fde2f5d0e4a in __libc_start_main (main=0x5569cf8d6cd0, argc=1, argv=0x7fff450ff3b8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff450ff3a8) at ../csu/libc-start.c:314
#23 0x00005569cf8db28a in ?? ()
[Inferior 1 (process 592966) detached]

Possible duplicates by query: bug 440777, bug 430698, bug 429344, bug 427384, bug 424911.

Reported using DrKonqi
Comment 1 daciabrown6502 2021-10-18 21:39:55 UTC
Created attachment 142591 [details]
New crash information added by DrKonqi

marble (2.2.20 (2.3 development version)) using Qt 5.15.2

- What I was doing when the application crashed:
Closed application after viewing OpenStreetMap

-- Backtrace (Reduced):
#10 0x00007fbacb86f2b0 in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5
#11 0x00007fbaccf78668 in KXmlGuiWindow::event(QEvent*) () at /usr/lib/libKF5XmlGui.so.5
#12 0x00007fbacc317d62 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#13 0x00007fbacb8423ba in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#14 0x00007fbacb8454b9 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt5Core.so.5
Comment 2 Cyrille Dunant 2021-11-01 10:48:07 UTC
Created attachment 143087 [details]
New crash information added by DrKonqi

marble (2.2.20 (2.3 development version)) using Qt 5.15.2

- What I was doing when the application crashed:

I have tried multiple times, but every time, marble crashes on exit.

-- Backtrace (Reduced):
#4  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#5  0x00007f67672fc8e3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#6  0x00007f67672af6f6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#7  0x00007f67672997b3 in __GI_abort () at abort.c:79
[...]
#9  0x00007f676730686c in malloc_printerr (str=str@entry=0x7f676742b2d4 "free(): invalid pointer") at malloc.c:5543
Comment 3 Andrei Coada 2021-11-15 03:35:16 UTC
Created attachment 143559 [details]
New crash information added by DrKonqi

marble (2.2.20 (2.3 development version)) using Qt 5.15.2

- What I was doing when the application crashed:
The application will crash every time I hit the "Close" button.

-- Backtrace (Reduced):
#6  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#7  0x00007f19713ba8e3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#8  0x00007f197136d6f6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#9  0x00007f19713577b3 in __GI_abort () at abort.c:79
[...]
#11 0x00007f19713c486c in malloc_printerr (str=str@entry=0x7f19714e92d4 "free(): invalid pointer") at malloc.c:5543
Comment 4 John Zaitseff 2021-11-21 21:39:12 UTC
Created attachment 143811 [details]
New crash information added by DrKonqi

marble (2.2.20 (2.3 development version)) using Qt 5.15.2

- What I was doing when the application crashed:
Closing the application after viewing any map; was using OpenTopoMap at the time.  Crashes every time I exit Marble.

-- Backtrace (Reduced):
#4  __pthread_kill_implementation (no_tid=0, signo=6, threadid=139804725797888) at pthread_kill.c:44
#5  __pthread_kill_internal (signo=6, threadid=139804725797888) at pthread_kill.c:80
#6  __GI___pthread_kill (threadid=139804725797888, signo=signo@entry=6) at pthread_kill.c:91
#7  0x00007f26e6ede476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8  0x00007f26e6ec47b7 in __GI_abort () at abort.c:79
Comment 5 Marc Joliet 2021-11-27 22:31:40 UTC
Created attachment 144012 [details]
New crash information added by DrKonqi

marble (2.2.20 (2.3 development version)) using Qt 5.15.2

- What I was doing when the application crashed:
This always happens when I close Marble.  This has been happening for several months now, at least.

-- Backtrace (Reduced):
#6  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#7  0x00007f73ae594323 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#8  0x00007f73ae544366 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#9  0x00007f73ae52d7d3 in __GI_abort () at abort.c:79
[...]
#11 0x00007f73ae59ee8c in malloc_printerr (str=str@entry=0x7f73ae6cb2d4 "free(): invalid pointer") at malloc.c:5543
Comment 6 Denis Tolstov 2021-11-30 16:52:39 UTC
Created attachment 144088 [details]
New crash information added by DrKonqi

marble (2.2.20 (2.3 development version)) using Qt 5.15.2

- What I was doing when the application crashed:

Started Marble, did nothing for 5 seconds, then pressed [X] to gracefully close application. Alternatively, mouse-navigated File->Quit or pressed Ctrl+Q. To be fair, it closed, but crashed with a `free(): invalid size` somewhere in window destructors AFAICS.

-- Backtrace (Reduced):
#4  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#5  0x00007fc2e5ec1537 in __GI_abort () at abort.c:79
[...]
#7  0x00007fc2e5f2114b in malloc_printerr (str=str@entry=0x7fc2e6020a28 "free(): invalid size") at malloc.c:5628
#8  0x00007fc2e5f22404 in _int_free (av=<optimized out>, p=0x7ffe757f5390, have_lock=0) at malloc.c:4402
#9  0x00007fc2e5f26215 in __GI___libc_free (mem=<optimized out>) at malloc.c:3309
Comment 7 Fushan Wen 2021-12-06 04:13:14 UTC
Created attachment 144248 [details]
New crash information added by DrKonqi

marble (2.2.20 (2.3 development version)) using Qt 5.15.2

- What I was doing when the application crashed:
Exit Marble, and Dr.Konqi appears. Perhaps some pointers are deleted twice.

-- Backtrace (Reduced):
#6  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#7  0x00007f1921f10323 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#8  0x00007f1921ec0366 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#9  0x00007f1921ea97d3 in __GI_abort () at abort.c:79
[...]
#11 0x00007f1921f1ae8c in malloc_printerr (str=str@entry=0x7f19220472d4 "free(): invalid pointer") at malloc.c:5543
Comment 8 Bug Janitor Service 2021-12-06 08:53:35 UTC
A possibly relevant merge request was started @ https://invent.kde.org/education/marble/-/merge_requests/60
Comment 9 Fushan Wen 2021-12-06 09:55:25 UTC
==4291== Invalid free() / delete / delete[] / realloc()
==4291==    at 0x484671B: operator delete(void*) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4291==    by 0x42651B: Marble::MainWindow::~MainWindow() (KdeMainWindow.cpp:75)
==4291==    by 0xF9F4D8E: QObject::event(QEvent*) (qobject.cpp:1301)
==4291==    by 0xDAC5DDE: KMainWindow::event(QEvent*) (kmainwindow.cpp:942)
==4291==    by 0xDB15F07: KXmlGuiWindow::event(QEvent*) (kxmlguiwindow.cpp:219)
==4291==    by 0xEA77A7E: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3632)
==4291==    by 0xF9C89F9: QCoreApplication::notifyInternal2(QObject*, QEvent*) (qcoreapplication.cpp:1064)
==4291==    by 0xF9CBA46: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.cpp:1821)
==4291==    by 0xFA20852: postEventSourceDispatch(_GSource*, int (*)(void*), void*) (qeventdispatcher_glib.cpp:277)
==4291==    by 0x135CED4E: g_main_dispatch (gmain.c:3381)
==4291==    by 0x135CED4E: g_main_context_dispatch (gmain.c:4099)
==4291==    by 0x135CF0D7: g_main_context_iterate.constprop.0 (gmain.c:4175)
==4291==    by 0x135CF18E: g_main_context_iteration (gmain.c:4240)
==4291==  Address 0x1ffeffe8f0 is on thread 1's stack
==4291== 
==4291== Invalid read of size 8
==4291==    at 0xDB15D89: KXmlGuiWindow::~KXmlGuiWindow() (kxmlguiwindow.cpp:214)
==4291==    by 0x4264C9: Marble::MainWindow::~MainWindow() (KdeMainWindow.cpp:75)
==4291==    by 0x4220D0: main (kdemain.cpp:442)
==4291==  Address 0xc8 is not stack'd, malloc'd or (recently) free'd
==4291==
Comment 10 Fushan Wen 2021-12-07 00:16:27 UTC
Git commit 6713da0a529391e7c59367a9f7a2535e615f7e4e by Fushan Wen.
Committed on 06/12/2021 at 10:28.
Pushed by fusionfuture into branch 'master'.

apps/marble-kde: Use heap memory allocation for MainWindow

If a QObject is on the stack or global, sooner or later the
program will crash. We should use heap memory allocation for MainWindow,
so marble will not crash on exit.

M  +12   -12   src/apps/marble-kde/kdemain.cpp

https://invent.kde.org/education/marble/commit/6713da0a529391e7c59367a9f7a2535e615f7e4e
Comment 11 Fushan Wen 2021-12-07 08:18:25 UTC
*** Bug 444978 has been marked as a duplicate of this bug. ***
Comment 12 Fushan Wen 2021-12-07 08:19:18 UTC
*** Bug 441086 has been marked as a duplicate of this bug. ***
Comment 13 Hieu Van 2022-09-07 04:11:10 UTC
Created attachment 151878 [details]
New crash information added by DrKonqi

marble (2.2.20 (2.3 development version)) using Qt 5.15.4

Marble always crash on exit regardless of what the user did before

-- Backtrace (Reduced):
#4  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#5  0x00007fa36028989f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#6  0x00007fa36023da52 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#7  0x00007fa360228469 in __GI_abort () at ./stdlib/abort.c:79
[...]
#9  0x00007fa36029355a in malloc_printerr (str=str@entry=0x7fa3603b21d2 "free(): invalid pointer") at ./malloc/malloc.c:5531