[Evolution-hackers] [evolution-alarm-notify] Crash in remove_queued_alarm() and possible remedy



Yes, I still run that ancient version 2.28.4 + "patches", but I just
compared my code to the current git code for
calendar/alarm-notify/alarm-queue.c and the functions in question show
the same code.

I recently had segfaults in remove_queued_alarm(), where the
cqa->queued_alarms pointer was broken. [1]
These crashes recently happened more often, but not always and usually
when I made intense use of alarms, snoozing some, rescheduling others, a
"torture test", if you will, spanning several hours.
Finally I tried the following remedy in tray_list_remove_icons(),
calling tray_list_remove_async() directly instead of putting it in the 
message queue. Does that make sense to you, experts?

static void
tray_list_remove_icons (void)
{
        Message *msg;

        msg = g_slice_new0 (Message);
        msg->func = tray_list_remove_async;

        /*
        message_push (msg);
        */

        /* Calling tray_list_remove_async directly!! */
        tray_list_remove_async(msg);
}  





[1] 
[Thread debugging using libthread_db enabled]
Core was generated by
`/opt/evo/libexec/evolution/2.28/evolution-alarm-notify
--oaf-activate-iid=OAFII'.
Program terminated with signal 11, Segmentation fault.
#0  0x08057af1 in remove_queued_alarm (cqa=0x8f0ab80,
alarm_id=0xb622d2e0, free_object=0, remove_alarm=1)
at ../../../../../src/evolution/git/evolution/calendar/gui/alarm-notify/alarm-queue.c:304
304                     qa = l->data;
(gdb) bt
#0  0x08057af1 in remove_queued_alarm (cqa=0x8f0ab80,
alarm_id=0xb622d2e0, free_object=0, remove_alarm=1)
at ../../../../../src/evolution/git/evolution/calendar/gui/alarm-notify/alarm-queue.c:304
#1  0x0805901e in tray_list_remove_async (msg=0xb7466a18)
at ../../../../../src/evolution/git/evolution/calendar/gui/alarm-notify/alarm-queue.c:1121
#2  0x080578a8 in message_proxy (msg=0xb7466a18)
at ../../../../../src/evolution/git/evolution/calendar/gui/alarm-notify/alarm-queue.c:170
#3  0x05b0fe0c in g_thread_pool_thread_proxy (data=0x8d8d898)
at /build/buildd/glib2.0-2.24.1/glib/gthreadpool.c:315
#4  0x05b0deef in g_thread_create_proxy (data=0xb6c36d18)
at /build/buildd/glib2.0-2.24.1/glib/gthread.c:1893
#5  0x0031e96e in start_thread (arg=0xacc17b70) at pthread_create.c:300
#6  0x084a9ffe in clone ()
at ../sysdeps/unix/sysv/linux/i386/clone.S:130
Backtrace



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]