Bug 164873 - KOrganizer crashes when in Agenda view and editing recurences
Summary: KOrganizer crashes when in Agenda view and editing recurences
Status: RESOLVED FIXED
Alias: None
Product: korganizer
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: kdepim bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-06-24 23:17 UTC by Thomas Thrainer
Modified: 2008-07-02 14:43 UTC (History)
0 users

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 Thomas Thrainer 2008-06-24 23:17:52 UTC
Version:            (using Devel)
Installed from:    Compiled sources

To reproduce:

Create a new event (I had an event spanning multiple days). Put it on e.g. Monday, and confirm. In agenda view, the event is displayed.
Now, edit the event, edit the recurrences, and say it recurs every 2 days. Click apply, and KOrganizer crashes.

Backtrace:
Application: KOrganizer (korganizer), signal SIGSEGV
[Thread debugging using libthread_db enabled]
[New Thread 0xb4fb8720 (LWP 26933)]
[KCrash handler]
#6  0xb775680e in KOAgendaItem::paintEvent (this=0x848d2e0)
    at /home/tom/_coding/kde/src/kdepim/korganizer/koagendaitem.cpp:715
#7  0xb599657b in QWidget::event () from /usr/lib/libQtGui.so.4
#8  0xb775332e in KOAgendaItem::event (this=0x848d2e0, event=0xbfdb0f74)
    at /home/tom/_coding/kde/src/kdepim/korganizer/koagendaitem.cpp:1170
#9  0xb593ec0c in QApplicationPrivate::notify_helper ()
   from /usr/lib/libQtGui.so.4
#10 0xb5943898 in QApplication::notify () from /usr/lib/libQtGui.so.4
#11 0xb6725c8d in KApplication::notify (this=0xbfdb33b4, receiver=0x848d2e0, 
    event=0xbfdb0f74)
    at /home/tom/_data/kde/src/kdelibs/kdeui/kernel/kapplication.cpp:311
#12 0xb7e396a9 in QCoreApplication::notifyInternal ()
   from /usr/lib/libQtCore.so.4
#13 0xb599a22e in ?? () from /usr/lib/libQtGui.so.4
#14 0xb599084f in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#15 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#16 0xb5990e17 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#17 0xb5990e17 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#18 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#19 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#20 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#21 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#22 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#23 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#24 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#25 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#26 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#27 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#28 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#29 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#30 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#31 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#32 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#33 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#34 0xb5990e17 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#35 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#36 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#37 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#38 0xb5990f04 in QWidgetPrivate::paintSiblingsRecursive ()
   from /usr/lib/libQtGui.so.4
#39 0xb5990406 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#40 0xb5af1e9d in ?? () from /usr/lib/libQtGui.so.4
#41 0xb5af26e5 in ?? () from /usr/lib/libQtGui.so.4
#42 0xb5af2753 in ?? () from /usr/lib/libQtGui.so.4
#43 0xb599d6a2 in ?? () from /usr/lib/libQtGui.so.4
#44 0xb59a9f97 in QApplication::x11ProcessEvent () from /usr/lib/libQtGui.so.4
#45 0xb59d23ba in ?? () from /usr/lib/libQtGui.so.4
#46 0xb54f7bf8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#47 0xb54fae5e in ?? () from /usr/lib/libglib-2.0.so.0
#48 0xb54fb3ac in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#49 0xb7e64f98 in QEventDispatcherGlib::processEvents ()
   from /usr/lib/libQtCore.so.4
#50 0xb59d21b5 in ?? () from /usr/lib/libQtGui.so.4
#51 0xb7e3892d in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4
#52 0xb7e38abd in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#53 0xb7e3ad3d in QCoreApplication::exec () from /usr/lib/libQtCore.so.4
#54 0xb593e567 in QApplication::exec () from /usr/lib/libQtGui.so.4
#55 0x0804edcd in main (argc=2, argv=0xbfdb3494)
    at /home/tom/_coding/kde/src/kdepim/korganizer/main.cpp:58
#0  0xb7f34410 in __kernel_vsyscall ()
Comment 1 FiNeX 2008-06-25 11:41:59 UTC
I've just tried to reproduce. It doesn't crash but I've see a strange behaviour: if the event is on multiple days, only the first is show on the week view.
Comment 2 Thomas Thrainer 2008-06-25 23:21:49 UTC
I see the same behavior also in other views. But the backtrace differs.

What I did: Open a recurring event, click on Edit... next to the recurrence indicator and then change from recurs every 13 days to recurs every 14 days. Click OK, and click OK again.
Sometimes this works, sometimes it crashes. Actually, most of the time it crashes.

I think there is a dangling Incidence pointer around. The edit dialog deleted an incidence object IMHO, and then the next component accessing the incidence triggers the crash. If there is valid memory by hazard, nothing happens, otherwise the crash occurs. Probably the view was about to get notified about the changed/deleted incidence in changeIncidenceDisplay(), but accessed the old pointer again, which is not wrong IMHO.

The backtrace I get when doing this when being in the month view:

Application: KOrganizer (korganizer), signal SIGSEGV
[Thread debugging using libthread_db enabled]
[New Thread 0xb504a720 (LWP 26252)]
[KCrash handler]
#6  0xb56804c7 in free () from /lib/tls/i686/cmov/libc.so.6
#7  0xb7dd9a3d in qFree () from /usr/lib/libQtCore.so.4
#8  0xb7e21ec0 in QString::free () from /usr/lib/libQtCore.so.4
#9  0xb765021d in ~QString (this=0xbfd42d6c)
    at /usr/include/qt4/QtCore/qstring.h:831
#10 0xb764ef75 in KOEventViewer::changeIncidenceDisplay (this=0x816ea60, 
    incidence=0x839a658, action=1)
    at /home/tom/_coding/kde/src/kdepim/korganizer/koeventviewer.cpp:135
#11 0xb7823514 in CalendarView::changeIncidenceDisplay (this=0x8111ae0, 
    incidence=0x839a658, action=1)
    at /home/tom/_coding/kde/src/kdepim/korganizer/calendarview.cpp:763
#12 0xb78259e2 in CalendarView::incidenceChanged (this=0x8111ae0, 
    oldIncidence=0x8381740, newIncidence=0x839a658, what=9)
    at /home/tom/_coding/kde/src/kdepim/korganizer/calendarview.cpp:703
#13 0xb7825a3b in CalendarView::incidenceChanged (this=0x8111ae0, 
    oldIncidence=0x8381740, newIncidence=0x839a658)
    at /home/tom/_coding/kde/src/kdepim/korganizer/calendarview.cpp:644
#14 0xb782835f in CalendarView::qt_metacall (this=0x8111ae0, 
    _c=QMetaObject::InvokeMetaMethod, _id=91, _a=0xbfd42fc8)
    at /home/tom/_coding/kde/build/kdepim/korganizer/calendarview.moc:478
#15 0xb7edf4f9 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#16 0xb7edfbc2 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#17 0xb64571cb in KOrg::IncidenceChangerBase::incidenceChanged (
    this=0x81ca410, _t1=0x8381740, _t2=0x839a658)
    at /home/tom/_coding/kde/build/kdepim/korganizer/interfaces/korganizer/incidencechangerbase.moc:106
#18 0xb78bc1a1 in IncidenceChanger::changeIncidence (this=0x81ca410, 
    newinc=0x839a658, oldinc=0x8381740, action=-1, counter=false)
    at /home/tom/_coding/kde/src/kdepim/korganizer/incidencechanger.cpp:303
#19 0xb783e075 in KOEventEditor::processInput (this=0x8356ce0)
    at /home/tom/_coding/kde/src/kdepim/korganizer/koeventeditor.cpp:302
#20 0xb783964a in KOIncidenceEditor::slotApply (this=0x8356ce0)
    at /home/tom/_coding/kde/src/kdepim/korganizer/koincidenceeditor.cpp:109
#21 0xb783b4eb in KOIncidenceEditor::qt_metacall (this=0x8356ce0, 
    _c=QMetaObject::InvokeMetaMethod, _id=16, _a=0xbfd43228)
    at /home/tom/_coding/kde/build/kdepim/korganizer/koincidenceeditor.moc:125
#22 0xb783e5b6 in KOEventEditor::qt_metacall (this=0x8356ce0, 
    _c=QMetaObject::InvokeMetaMethod, _id=89, _a=0xbfd43228)
    at /home/tom/_coding/kde/build/kdepim/korganizer/koeventeditor.moc:69
#23 0xb7edf4f9 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#24 0xb7edfbc2 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#25 0xb6712e97 in KDialog::applyClicked (this=0x8356ce0)
    at /home/tom/_data/kde/build/kdelibs/kdeui/kdialog.moc:235
#26 0xb6715fba in KDialog::slotButtonClicked (this=0x8356ce0, button=8)
    at /home/tom/_data/kde/src/kdelibs/kdeui/dialogs/kdialog.cpp:903
#27 0xb6716518 in KDialog::qt_metacall (this=0x8356ce0, 
    _c=QMetaObject::InvokeMetaMethod, _id=33, _a=0xbfd4343c)
    at /home/tom/_data/kde/build/kdelibs/kdeui/kdialog.moc:181
#28 0xb67e968a in KPageDialog::qt_metacall (this=0x8356ce0, 
    _c=QMetaObject::InvokeMetaMethod, _id=68, _a=0xbfd4343c)
    at /home/tom/_data/kde/build/kdelibs/kdeui/kpagedialog.moc:63
#29 0xb783b21c in KOIncidenceEditor::qt_metacall (this=0x8356ce0, 
    _c=QMetaObject::InvokeMetaMethod, _id=68, _a=0xbfd4343c)
    at /home/tom/_coding/kde/build/kdepim/korganizer/koincidenceeditor.moc:104
#30 0xb783e5b6 in KOEventEditor::qt_metacall (this=0x8356ce0, 
    _c=QMetaObject::InvokeMetaMethod, _id=68, _a=0xbfd4343c)
    at /home/tom/_coding/kde/build/kdepim/korganizer/koeventeditor.moc:69
#31 0xb7edf4f9 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#32 0xb7edfbc2 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#33 0xb7ee37c3 in QSignalMapper::mapped () from /usr/lib/libQtCore.so.4
#34 0xb7ee3fcd in QSignalMapper::map () from /usr/lib/libQtCore.so.4
#35 0xb7ee41be in QSignalMapper::map () from /usr/lib/libQtCore.so.4
#36 0xb7ee42d7 in QSignalMapper::qt_metacall () from /usr/lib/libQtCore.so.4
#37 0xb7edf4f9 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#38 0xb7edf930 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#39 0xb5faeeb1 in QAbstractButton::clicked () from /usr/lib/libQtGui.so.4
#40 0xb5d0ef49 in ?? () from /usr/lib/libQtGui.so.4
#41 0xb5d107e0 in ?? () from /usr/lib/libQtGui.so.4
#42 0xb5d10a3b in QAbstractButton::mouseReleaseEvent ()
   from /usr/lib/libQtGui.so.4
#43 0xb5a284a4 in QWidget::event () from /usr/lib/libQtGui.so.4
#44 0xb5d0faff in QAbstractButton::event () from /usr/lib/libQtGui.so.4
#45 0xb5db4932 in QPushButton::event () from /usr/lib/libQtGui.so.4
#46 0xb59d0c0c in QApplicationPrivate::notify_helper ()
   from /usr/lib/libQtGui.so.4
#47 0xb59d5cd5 in QApplication::notify () from /usr/lib/libQtGui.so.4
#48 0xb67b7c8d in KApplication::notify (this=0xbfd44334, receiver=0x83cf5f0, 
    event=0xbfd43b7c)
    at /home/tom/_data/kde/src/kdelibs/kdeui/kernel/kapplication.cpp:311
#49 0xb7eca6a9 in QCoreApplication::notifyInternal ()
   from /usr/lib/libQtCore.so.4
#50 0xb59d2e21 in QApplicationPrivate::sendMouseEvent ()
   from /usr/lib/libQtGui.so.4
#51 0xb5a3cccd in ?? () from /usr/lib/libQtGui.so.4
#52 0xb5a3b6b1 in QApplication::x11ProcessEvent () from /usr/lib/libQtGui.so.4
#53 0xb5a643ba in ?? () from /usr/lib/libQtGui.so.4
#54 0xb5589bf8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#55 0xb558ce5e in ?? () from /usr/lib/libglib-2.0.so.0
#56 0xb558d3ac in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#57 0xb7ef5f98 in QEventDispatcherGlib::processEvents ()
   from /usr/lib/libQtCore.so.4
#58 0xb5a641b5 in ?? () from /usr/lib/libQtGui.so.4
#59 0xb7ec992d in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4
#60 0xb7ec9abd in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#61 0xb7ecbd3d in QCoreApplication::exec () from /usr/lib/libQtCore.so.4
#62 0xb59d0567 in QApplication::exec () from /usr/lib/libQtGui.so.4
#63 0x0804edcd in main (argc=2, argv=0xbfd44414)
    at /home/tom/_coding/kde/src/kdepim/korganizer/main.cpp:58
#0  0xb7fc5410 in __kernel_vsyscall ()
Comment 3 Allen Winter 2008-07-02 13:33:53 UTC
I believe this is fixed now.
Please double-check and close if it no longer crashes

the bug was due to the incidenceChanger argument order mixup
Comment 4 Thomas Thrainer 2008-07-02 14:43:05 UTC
Yes, now it works fine. Apparently was because of the changeIncidence() parameter mixup.