Bug 378331 - tellico crashes on save with images in data file
Summary: tellico crashes on save with images in data file
Status: RESOLVED WORKSFORME
Alias: None
Product: tellico
Classification: Applications
Component: general (show other bugs)
Version: 3.0.2
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Robby Stephenson
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2017-04-01 02:21 UTC by Bruce Anderson
Modified: 2020-05-25 13:12 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Bruce Anderson 2017-04-01 02:21:27 UTC
Application: tellico (3.0.2)

Qt Version: 5.7.1
Frameworks Version: 5.32.0
Operating System: Linux 4.9.16-1-default x86_64
Distribution: "openSUSE Tumbleweed"

-- Information about the crash:
- What I was doing when the application crashed: 
I set the "Image Storage Options" to "Store images in data file" and saved.  File completes saving but then the application crashes.  The data file has 3027 entries and almost all have images associated with them.  On restarting the application, the storage option is set back to "Store images in common application directory".

The crash can be reproduced every time.

-- Backtrace:
Application: Tellico (tellico), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f0ad86eee00 (LWP 4496))]

Thread 3 (Thread 0x7f0ab3a03700 (LWP 4498)):
#0  0x00007f0acee377bd in poll () at /lib64/libc.so.6
#1  0x00007f0ac7b42a86 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f0ac7b42b9c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f0acfa6d18b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f0acfa16aea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f0acf844813 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f0ad2bfd385 in  () at /usr/lib64/libQt5DBus.so.5
#7  0x00007f0acf8494c8 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007f0acb71e537 in start_thread () at /lib64/libpthread.so.0
#9  0x00007f0acee4104f in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7f0aba802700 (LWP 4497)):
#0  0x00007f0acee377bd in poll () at /lib64/libc.so.6
#1  0x00007f0ac9f3c3e0 in  () at /usr/lib64/libxcb.so.1
#2  0x00007f0ac9f3e179 in xcb_wait_for_event () at /usr/lib64/libxcb.so.1
#3  0x00007f0abcb28889 in  () at /usr/lib64/libQt5XcbQpa.so.5
#4  0x00007f0acf8494c8 in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007f0acb71e537 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f0acee4104f in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7f0ad86eee00 (LWP 4496)):
[KCrash Handler]
#6  0x00007f0ad0efd234 in KPageDialog::button(QDialogButtonBox::StandardButton) const () at /usr/lib64/libKF5WidgetsAddons.so.5
#7  0x000000000048a886 in  ()
#8  0x0000000000513645 in  ()
#9  0x00007f0acfa44709 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#10 0x00007f0ad07ef722 in QAbstractButton::clicked(bool) () at /usr/lib64/libQt5Widgets.so.5
#11 0x00007f0ad07ef974 in  () at /usr/lib64/libQt5Widgets.so.5
#12 0x00007f0ad07f0d67 in  () at /usr/lib64/libQt5Widgets.so.5
#13 0x00007f0ad07f0f44 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () at /usr/lib64/libQt5Widgets.so.5
#14 0x00007f0ad074e588 in QWidget::event(QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#15 0x00007f0ad0706eac in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#16 0x00007f0ad070f51d in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#17 0x00007f0acfa18b00 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#18 0x00007f0ad070dbcd in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib64/libQt5Widgets.so.5
#19 0x00007f0ad0768c06 in  () at /usr/lib64/libQt5Widgets.so.5
#20 0x00007f0ad076b613 in  () at /usr/lib64/libQt5Widgets.so.5
#21 0x00007f0ad0706eac in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#22 0x00007f0ad070e661 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#23 0x00007f0acfa18b00 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#24 0x00007f0acff65c43 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib64/libQt5Gui.so.5
#25 0x00007f0acff677c5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib64/libQt5Gui.so.5
#26 0x00007f0acff4575b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Gui.so.5
#27 0x00007f0abcb5f210 in  () at /usr/lib64/libQt5XcbQpa.so.5
#28 0x00007f0ac7b42887 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#29 0x00007f0ac7b42af0 in  () at /usr/lib64/libglib-2.0.so.0
#30 0x00007f0ac7b42b9c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#31 0x00007f0acfa6d16f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#32 0x00000000004b271c in  ()
#33 0x000000000051420d in  ()
#34 0x00007f0acfa44709 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#35 0x00007f0acfa50e73 in  () at /usr/lib64/libQt5Core.so.5
#36 0x00007f0acfa45573 in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5
#37 0x00007f0ad0706eac in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#38 0x00007f0ad070e661 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#39 0x00007f0acfa18b00 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#40 0x00007f0acfa6c10e in QTimerInfoList::activateTimers() () at /usr/lib64/libQt5Core.so.5
#41 0x00007f0acfa6c631 in  () at /usr/lib64/libQt5Core.so.5
#42 0x00007f0ac7b42887 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#43 0x00007f0ac7b42af0 in  () at /usr/lib64/libglib-2.0.so.0
#44 0x00007f0ac7b42b9c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#45 0x00007f0acfa6d16f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#46 0x00007f0acfa16aea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#47 0x00007f0acfa1f25c in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#48 0x000000000046b9f9 in  ()
#49 0x00007f0aced74541 in __libc_start_main () at /lib64/libc.so.6
#50 0x000000000046d16a in _start ()

Reported using DrKonqi
Comment 1 Robby Stephenson 2017-04-09 00:52:31 UTC
I'm having trouble re-producing this. Does it crash right after you change the setting or after closing the config dialog and saving the data file?

Do you know if Tumbleweed has debug packages for including the backtrace from Tellico? Right now, the backtrace just shows a few items from the underlying KDE and Qt libraries, which makes it hard to tell where in Tellico the crash is occurring
Comment 2 Bruce Anderson 2017-04-09 04:21:49 UTC
Unfortunately Tumbleweed does not have the debug packages for tellico so
no help there.  The steps I used to recreate the problem were:

1) Load the data file
2) Add a new item
3) Select "Configure Tellico" from the "Settings" menu
   Note: Image Storage Options is set to "Store images in common
application directory" even though the images were previously stored in
the data file.
4) Check the "Store images in data file" box and click Apply.
5) A dialog box pops up saying something like, some of the images are
not stored in data file, do you want to save and I clicked Yes

At this point the file starts saving and continues to completion (i.e.
shows 100% in the progress bar) at which point the application crashes.
Restarting the application, all of the items are present including the
item added in step 2.  Going into the configure dialog, it is back set
to "Store images in common application directory".

In hopes of getting some additional debug information, I downloaded the
source and compiled it and tried the same set of steps and fortunately
or unfortunately, I'm not sure which, it did not crash this time.  Also
starting the Tumbleweed supplied application, the confituration now
shows "Store images in data file" and saving the file works fine without
crashing (although I didn't need to change the image storage location
because it was already set to what I wanted).

My suspicion is that the crash occurs while saving the changed
configuration file but I don't have any proof of this.  It's probably
not significant but I have the environment variables KDEHOME,
XDG_CONFIG_HOME, and XDG_DATA_HOME all set to non-default directories.

The good news in this is that the problem does not appear to be in the
code as compiling from source works just fine so it must be a problem
with the Tumbleweed compilation.  And from my point of view, now that
the storage location is set to what I want it to be, even the Tumbleweed
version works fine so I don't have to stick with source version and can
continue getting updates.

Thanks,
Bruce Anderson


On 04/08/2017 05:52 PM, Robby Stephenson wrote:
> https://bugs.kde.org/show_bug.cgi?id=378331
>
> --- Comment #1 from Robby Stephenson <robby@periapsis.org> ---
> I'm having trouble re-producing this. Does it crash right after you change the
> setting or after closing the config dialog and saving the data file?
>
> Do you know if Tumbleweed has debug packages for including the backtrace from
> Tellico? Right now, the backtrace just shows a few items from the underlying
> KDE and Qt libraries, which makes it hard to tell where in Tellico the crash is
> occurring
>
Comment 3 Christoph Feck 2017-04-21 01:02:47 UTC
Trying to decipher what is available in the backtrace, it looks like Tellico receives a timer event, which causes a nested event loop somewhere.

Btw, K:U:E repository has tellico5 with debug information.
Comment 4 Robby Stephenson 2020-05-25 13:12:19 UTC
I'm going to go ahead and close this. There have been a few commits related to fixing timer-related crashes, most recently 4b3e69d80077ed5d7c2b678149c4901bb3a56e17.