Internal error on line 296 of mime-node.c

Austin Clements amdragon at MIT.EDU
Thu Mar 1 13:57:38 PST 2012


Quoth David Bremner on Mar 01 at  5:39 pm:
> 
> In the current master (4fa77d031) I get a sort-of double crash on the 
> attached message.
> 
> The internal error on line 296 is reached, indicating some kind of bug,
> but then the G_OBJECT_TYPE crashes becase parent->part is null.
> 
> The message is probably crap, I created it from another "real" message
> from some business that causes the same problem.
> 
> (gdb) bt
> #0  0x0000000000416850 in mime_node_child (parent=0x8425fa0, child=0)
>     at mime-node.c:296
> #1  0x00000000004137f1 in format_part_json (ctx=0x8425f10, node=0x8425fa0, 
>     first=1) at notmuch-show.c:669
> #2  0x0000000000413e54 in format_part_json_entry (ctx=0x8425f10, 
>     node=0x8425fa0, indent=0, params=0x7ff000470) at notmuch-show.c:758
> #3  0x0000000000413f0f in show_message (ctx=0x8367680, format=0x6327e0, message=
>     0x83e9830, indent=0, params=0x7ff000470) at notmuch-show.c:776
> #4  0x0000000000414165 in show_messages (ctx=0x8367680, format=0x6327e0, 
>     messages=0x8425e70, indent=0, params=0x7ff000470) at notmuch-show.c:835
> #5  0x00000000004145f5 in do_show (ctx=0x8367680, query=0x83b36b0, 
>     format=0x6327e0, params=0x7ff000470) at notmuch-show.c:956
> #6  0x0000000000414ba7 in notmuch_show_command (ctx=0x8367680, argc=3, 
>     argv=0x7ff000660) at notmuch-show.c:1089
> #7  0x000000000040a9fe in main (argc=4, argv=0x7ff000658) at notmuch.c:294
> (gdb) print *parent
> $3 = {part = 0x0, envelope_file = 0x83e9830, envelope_part = 0x0, 
>   nchildren = 1, parent = 0x0, part_num = 0, decrypt_attempted = 0, 
>   decrypt_success = 0, verify_attempted = 0, sig_list = 0x0, ctx = 0x8426090, 
>   decrypted_child = 0x0, next_child = 0, next_part_num = 1}

For the record, this is because g_mime_parser_construct_message in
mime_node_open is returning NULL.  mime_node_open should be checking
for this as well as errors from the other GMime functions it calls.
(Unfortunately, there appears to be no way to ask GMime *what* went
wrong; it just returns NULL.)


More information about the notmuch mailing list