[Evolution-hackers] Getting a core in latest git Evolution view Junk folder



Hi all.  I have a situation in the very latest git Evolution built
earlier today (also happened with my previous build which was a few days
old).  Whenever I click on my Junk folder Evo dumps core.  It seems to
be an error displaying the summary of my Junk folder.  I'm avoiding it
right now.

FYI, this was compiled with -O0 -g on my Ubuntu 9.10 system, fully
up-to-date.  In addition to Evo et.al. I also build the latest gtkhtml,
libxml2, libsoup, libgweather, samba4 and openchange.

I'm connecting to a Dovecot IMAP server over SSL.

Here's some stack info, followed by a bit of spelunking.  It looks like
the results returned from camel_folder_summary_uid() in
efhd_attachment_button() are bogus; we're getting back a
CamelMessageInfo pointer which looks OK, but then when we cast it into a
CamelMessageInfoBase we see the rest of the structure it points to seems
to be garbage.

This has happened to me before (recently) as well.  That time I was able
to get into the junk folder and delete/expunge and it was fixed.

If this doesn't seem familiar to anyone I'll file a bug report.  Does
anyone want more details than this?  I'm willing to provide them!


Core was generated by `/opt/evo-master/bin/evolution'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007f05ac1181c7 in match_content_type (info_ctype=0x25, ctype=0x2e49d00) at ../../../evolution-data-server/camel/camel-folder-summary.c:5066
5066            if (!compare_strings (info_ctype->type, ctype->type))

(gdb) bt
#0  0x00007f05ac1181c7 in match_content_type (info_ctype=0x25, ctype=0x2e49d00) at ../../../evolution-data-server/camel/camel-folder-summary.c:5066
#1  0x00007f05ac1182a1 in camel_folder_summary_guess_content_info (mi=0x7f05981c2990, ctype=0x2e49d00) at ../../../evolution-data-server/camel/camel-folder-summary.c:5089
#2  0x00007f05a2829ad1 in efhd_attachment_button (efh=0x1f63380, eb=0x274ccb0, pobject=0x7f05982be5a0) at ../../../evolution/mail/em-format-html-display.c:812
#3  0x00007f05a2824a74 in efh_object_requested (html=0x2173e60, eb=0x274ccb0, efh=0x1f63380) at ../../../evolution/mail/em-format-html.c:1519
#4  0x00007f05b29e3819 in html_g_cclosure_marshal_BOOLEAN__OBJECT (closure=0x225f690, return_value=0x7fff71920670, n_param_values=2, param_values=0x2479360, invocation_hint=0x7fff719204e0, marshal_data=0x0) at ../../../gtkhtml/gtkhtml/htmlmarshal.c:81
#5  0x00007f05ae1015ae in IA__g_closure_invoke (closure=0x225f690, return_value=0x7fff71920670, n_param_values=2, param_values=0x2479360, invocation_hint=0x7fff719204e0) at /build/buildd/glib2.0-2.22.3/gobject/gclosure.c:767
#6  0x00007f05ae116983 in signal_emit_unlocked_R (node=0x20b6620, detail=<value optimized out>, instance=<value optimized out>, emission_return=<value optimized out>, instance_and_params=<value optimized out>) at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:3247
#7  0x00007f05ae117bcc in IA__g_signal_emit_valist (instance=0x2173e60, signal_id=<value optimized out>, detail=0, var_args=0x7fff719206d0) at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2990
#8  0x00007f05ae118283 in IA__g_signal_emit (instance=0x25, signal_id=48536832, detail=2553762352) at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:3037
#9  0x00007f05b2985321 in html_engine_object_requested_cb (engine=0x1fd7c30, eb=0x274ccb0, data=0x2173e60) at ../../../gtkhtml/gtkhtml/gtkhtml.c:549
#10 0x00007f05b29e3819 in html_g_cclosure_marshal_BOOLEAN__OBJECT (closure=0x227c510, return_value=0x7fff71920b30, n_param_values=2, param_values=0x24b3210, invocation_hint=0x7fff719209a0, marshal_data=0x0) at ../../../gtkhtml/gtkhtml/htmlmarshal.c:81
#11 0x00007f05ae1015ae in IA__g_closure_invoke (closure=0x227c510, return_value=0x7fff71920b30, n_param_values=2, param_values=0x24b3210, invocation_hint=0x7fff719209a0) at /build/buildd/glib2.0-2.22.3/gobject/gclosure.c:767
#12 0x00007f05ae116983 in signal_emit_unlocked_R (node=0x1dd8c10, detail=<value optimized out>, instance=<value optimized out>, emission_return=<value optimized out>, instance_and_params=<value optimized out>) at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:3247
#13 0x00007f05ae117bcc in IA__g_signal_emit_valist (instance=0x1fd7c30, signal_id=<value optimized out>, detail=0, var_args=0x7fff71920b90) at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2990
#14 0x00007f05ae118283 in IA__g_signal_emit (instance=0x25, signal_id=48536832, detail=2553762352) at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c:3037
#15 0x00007f05b29c6d86 in element_parse_object (e=0x1fd7c30, clue=0x2653040, attr=0x26fad12 "object classid=\"attachment.0x1dcddd0.4GhLr6_8166295.mixed.1\">") at ../../../gtkhtml/gtkhtml/htmlengine.c:1624
#16 0x00007f05b29cf6cf in parse_one_token (e=0x1fd7c30, clue=0x2653040, str=0x26fad12 "object classid=\"attachment.0x1dcddd0.4GhLr6_8166295.mixed.1\">") at ../../../gtkhtml/gtkhtml/htmlengine.c:3975
#17 0x00007f05b29c622c in new_parse_body (e=0x1fd7c30, end=0x7f05b2c4c288) at ../../../gtkhtml/gtkhtml/htmlengine.c:1429
#18 0x00007f05b29d1ef6 in html_engine_timer_event (e=0x1fd7c30) at ../../../gtkhtml/gtkhtml/htmlengine.c:4928
#19 0x00007f05b29d914c in html_engine_flush (e=0x1fd7c30) at ../../../gtkhtml/gtkhtml/htmlengine.c:6907
#20 0x00007f05b2997f3f in gtk_html_flush (html=0x2173e60) at ../../../gtkhtml/gtkhtml/gtkhtml.c:6317
#21 0x00007f05a282b0e1 in emhs_sync_flush (stream=0x2e19430) at ../../../evolution/mail/em-html-stream.c:86
#22 0x00007f05a282e53c in emss_process_message (msg=0x7f058f8cc7f0) at ../../../evolution/mail/em-sync-stream.c:83
#23 0x00007f05adc64bce in g_main_dispatch (context=0x1895390) at /build/buildd/glib2.0-2.22.3/glib/gmain.c:1960
#24 IA__g_main_context_dispatch (context=0x1895390) at /build/buildd/glib2.0-2.22.3/glib/gmain.c:2513
#25 0x00007f05adc68598 in g_main_context_iterate (context=0x1895390, block=<value optimized out>, dispatch=<value optimized out>, self=<value optimized out>) at /build/buildd/glib2.0-2.22.3/glib/gmain.c:2591
#26 0x00007f05adc689f5 in IA__g_main_loop_run (loop=0x1e30620) at /build/buildd/glib2.0-2.22.3/glib/gmain.c:2799
#27 0x00007f05b004e177 in IA__gtk_main () at /build/buildd/gtk+2.0-2.18.3/gtk/gtkmain.c:1218
#28 0x00000000004038ab in main (argc=1, argv=0x7fff71921208) at ../../../evolution/shell/main.c:609

(gdb) l
5061    static gboolean
5062    match_content_type (CamelContentType *info_ctype, CamelContentType *ctype)
5063    {
5064            const gchar *name1, *name2;
5065
5066            if (!compare_strings (info_ctype->type, ctype->type))
5067                    return FALSE;
5068            if (!compare_strings (info_ctype->subtype, ctype->subtype))
5069                    return FALSE;
5070

(gdb) p *ctype
$2 = {type = 0x7f0598375230 "message", subtype = 0x7f05982c8380 "rfc822", params = 0x0, refcount = 2}

gdb) p info_ctype
$1 = (CamelContentType *) 0x25

(gdb) up
#1  0x00007f05ac1182a1 in camel_folder_summary_guess_content_info (mi=0x7f05981c2990, ctype=0x2e49d00) at ../../../evolution-data-server/camel/camel-folder-summary.c:5089
5089                            if (match_content_type (child->type, ctype))

(gdb) l
5084
5085            while (ci) {
5086                    CamelMessageContentInfo *child = ci;
5087
5088                    do {
5089                            if (match_content_type (child->type, ctype))
5090                                    return child;
5091
5092                            child = child->next;
5093                    } while (child != NULL);

(gdb) p ci
$3 = (CamelMessageContentInfo *) 0x7f05981dde00

(gdb) p *ci
$4 = {next = 0x385f36724c684734, childs = 0x383932363631, parent = 0x7265706f204c5153, type = 0x25, id = 0x6e69616c70 <Address 0x6e69616c70 out of bounds>, description = 0x7f05982c8910 " 166300 %", encoding = 0x20 <Address 0x20 out of bounds>, size = 53}

(gdb) p *mi
$6 = {summary = 0x1dc3310, refcount = 11, uid = 0x7f05982cb980 "4GhLr6_8166295", dirty = 1}

(gdb) p *bmi
$7 = {summary = 0x1dc3310, refcount = 11, uid = 0x7f05982cb980 "4GhLr6_8166295", dirty = 1, subject = 0x2463990 "\320V\002\230\005\177", from = 0x80 <Address 0x80 out of bounds>, to = 0x6c61744074736f70 <Address 0x6c61744074736f70 out of bounds>, cc = 0x656c6262616e2e6b <Address 0x656c6262616e2e6b out of bounds>, mlist = 0x0, flags = 9, size = 744777047, date_sent = 38304208, date_received = 139662004352464, message_id = {id = {id = 4048785681394383409, hash = "1:37 -08", part = {hi = 926104113, lo = 942681376}}}, references = 0x205, user_flags = 0x1dc3310, user_tags = 0x2, content = 0x7f05981dde00, headers = 0x1, preview = 0x2463990 "\320V\002\230\005\177", bodystructure = 0x80 <Address 0x80 out of bounds>}

(gdb) up
#2  0x00007f05a2829ad1 in efhd_attachment_button (efh=0x1f63380, eb=0x274ccb0, pobject=0x7f05982be5a0) at ../../../evolution/mail/em-format-html-display.c:812
812             ci = camel_folder_summary_guess_content_info (mi, ((CamelDataWrapper *)pobject->part)->mime_type);

(gdb) l
807
808             /* FIXME: handle default shown case */
809             d(printf("adding attachment button/content\n"));
810
811             mi = camel_folder_summary_uid (emf->folder->summary, emf->uid);
812             ci = camel_folder_summary_guess_content_info (mi, ((CamelDataWrapper *)pobject->part)->mime_type);
813             if (ci) {
814                     size = ci->size;
815                     /* what if its not encoded in base64 ? is it a case to consider? */
816                     if (ci->encoding && !g_ascii_strcasecmp (ci->encoding, "base64"))

(gdb) p *emf->folder->summary
$10 = {parent = {klass = 0x7f05980251c0, magic = 2007188717, hooks = 0x0, ref_count = 1, flags = 0, next = 0x1dc3210, prev = 0x1dc3410}, priv = 0x7f05980afdb0, version = 13, flags = 1, nextuid = 0, time = 0, saved_count = 0, unread_count = 8, deleted_count = 0, junk_count = 9, junk_not_deleted_count = 9, visible_count = 0, message_info_size = 48, content_info_size = 0, message_info_chunks = 0x0, content_info_chunks = 0x0, summary_path = 0x0, build_content = 0, uids = 0x1c40aa0, loaded_infos = 0x1c41940, folder = 0x1dcddd0, meta_summary = 0x7f05980ae640, cache_load_time = 0, timeout_handle = 0, collate = 0x0, sort_by = 0x0, later = {0x0, 0x0, 0x0, 0x0}}

(gdb) p *emf->uid
$11 = 52 '4'




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