Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segmentation fault after sending email #591

Closed
larskotthoff opened this issue Oct 31, 2018 · 17 comments
Closed

Segmentation fault after sending email #591

larskotthoff opened this issue Oct 31, 2018 · 17 comments
Labels

Comments

@larskotthoff
Copy link
Contributor

I sometimes get a segmentation fault after a message is sent. This doesn't always happen, and seems to happen in particular for emails with attachments (though again not always). Here's the debug output from one of those crashes:

...
[0x00007f5a15eed600] [M] [info] cm: sent message added to db.
[0x00007f5a15eed600] [M] [info] em: message sending done.
[0x00007f5a0e857700] [M] [info] db: open db read-write.
[0x00007f5a0e857700] [M] [debug] db: rw-s: waiting for rw lock.. (r-o open: 0)
[0x00007f5a0e857700] [M] [debug] db: rw-s lock acquired.
[0x00007f5a15eed600] [M] [info] cm: sending successful, auto-closing window
[0x00007f5a15eed600] [M] [debug] mw: set active: 1, current: 2
[0x00007f5a0e857700] [M] [debug] db: open time: 1.299 ms.
[0x00007f5a0e857700] [M] [info] db: adding sent message: <path>
[0x00007f0f769673c0] [E] [debug] ae: wrote: 49 of 49 bytes.
[0x00007f0f769673c0] [E] [debug] ae: send (async) message sent.
[0x00007f5a15eed600] [M] [debug] em: deconstruct.
Error sending IPC message: Broken pipe
Error sending IPC message: Broken pipe
Error sending IPC message: Broken pipe
[0x00007f5a15eed600] [M] [debug] cm: deinitialized.
[0x00007f5a15eed600] [M] [debug] cm: at: deconstruct
malloc(): corrupted unsorted chunks 3
[0x00007f2eb9bb2700] [E] [warning] reader thread: could not read message size
[0x00007f2eb9bb2700] [E] [debug] reader thread exit.
[1]    24219 abort (core dumped)  astroid

I'm not sure where the Error sending IPC message is coming from, but I've seen this error in other contexts as well and it didn't seem to have any negative effects.

@larskotthoff
Copy link
Contributor Author

Backtrace (not very useful I'm afraid):

#0  0x00007ffff0132d7f in raise () at /usr/lib/libc.so.6
#1  0x00007ffff011d672 in abort () at /usr/lib/libc.so.6
#2  0x00007ffff0175878 in __libc_message () at /usr/lib/libc.so.6
#3  0x00007ffff017c18a in  () at /usr/lib/libc.so.6
#4  0x00007ffff017f24c in _int_malloc () at /usr/lib/libc.so.6
#5  0x00007ffff0181736 in calloc () at /usr/lib/libc.so.6
#6  0x00007ffff315f2aa in g_malloc0 () at /usr/lib/libglib-2.0.so.0
#7  0x00007ffff4b30754 in  () at /usr/lib/libgtk-3.so.0
#8  0x00007ffff4b45624 in  () at /usr/lib/libgtk-3.so.0
#9  0x00007ffff4b32ef6 in  () at /usr/lib/libgtk-3.so.0
#10 0x00007ffff4b31c95 in  () at /usr/lib/libgtk-3.so.0
#11 0x00007ffff4b329cd in  () at /usr/lib/libgtk-3.so.0
#12 0x00007ffff4b32a1b in  () at /usr/lib/libgtk-3.so.0
#13 0x00007ffff4b32a1b in  () at /usr/lib/libgtk-3.so.0
#14 0x00007ffff4b32a1b in  () at /usr/lib/libgtk-3.so.0
#15 0x00007ffff4b32a1b in  () at /usr/lib/libgtk-3.so.0
#16 0x00007ffff4b32a1b in  () at /usr/lib/libgtk-3.so.0
#17 0x00007ffff4b32a1b in  () at /usr/lib/libgtk-3.so.0
#18 0x00007ffff4b189f0 in  () at /usr/lib/libgtk-3.so.0
#19 0x00007ffff324e3d5 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#20 0x00007ffff323b195 in  () at /usr/lib/libgobject-2.0.so.0
#21 0x00007ffff323f01e in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#22 0x00007ffff323fa80 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#23 0x00007ffff48f431b in  () at /usr/lib/libgdk-3.so.0
#24 0x00007ffff48deb2b in  () at /usr/lib/libgdk-3.so.0
#25 0x00007ffff3165b63 in  () at /usr/lib/libglib-2.0.so.0
#26 0x00007ffff3166271 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#27 0x00007ffff3167f89 in  () at /usr/lib/libglib-2.0.so.0
#28 0x00007ffff3167fce in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#29 0x00007ffff453d7ee in g_application_run () at /usr/lib/libgio-2.0.so.0
#30 0x000055555565a4ff in Astroid::Astroid::run(int, char**) ()
#31 0x0000555555655d7b in main ()

@gauteh
Copy link
Member

gauteh commented Nov 1, 2018 via email

@larskotthoff
Copy link
Contributor Author

I guess there could be. I've tried running it through valgrind, but haven't been able to reproduce the crash then. Running through valgrind is too slow to do it in general.

@gauteh
Copy link
Member

gauteh commented Nov 1, 2018 via email

@larskotthoff
Copy link
Contributor Author

Ok, I think I'm getting closer. It doesn't seem to crash in valgrind, but I'm getting messages like this:

[11:07:45] [0x0000000036a00700] [M] [warning] cm: message sent successfully!
==24582== Invalid read of size 8
==24582==    at 0x27BA41: Astroid::EditMessage::send_message_finished(bool) (in /usr/bin/astroid)
==24582==    by 0x26B4DC: sigc::internal::signal_emit1<void, bool, sigc::nil>::emit(sigc::internal::signal_impl*, bool const&) (in /usr/bin/astroid)
==24582==    by 0x34CC15: Astroid::ComposeMessage::message_sent_event() (in /usr/bin/astroid)
==24582==    by 0xA9450E9: Glib::DispatchNotifier::pipe_io_handler(Glib::IOCondition) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0xA9477EB: Glib::IOSource::dispatch(sigc::slot_base*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0xA947A0E: Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0x965F270: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x9660F88: ??? (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x9660FCD: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x82677ED: g_application_run (in /usr/lib/libgio-2.0.so.0.5800.1)
==24582==    by 0x20E4FE: Astroid::Astroid::run(int, char**) (in /usr/bin/astroid)
==24582==    by 0x209D7A: main (in /usr/bin/astroid)
==24582==  Address 0x1901b6e8 is 776 bytes inside a block of size 1,800 free'd
==24582==    at 0x4838EAB: operator delete(void*) (vg_replace_malloc.c:576)
==24582==    by 0x96810F2: g_datalist_clear (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x95CC384: g_object_unref (in /usr/lib/libgobject-2.0.so.0.5800.1)
==24582==    by 0x7885385: gtk_container_remove (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x261331: Astroid::MainWindow::del_mode(int) (in /usr/bin/astroid)
==24582==    by 0x29F2CD: Astroid::Mode::close(bool) (in /usr/bin/astroid)
==24582==    by 0x27806C: Astroid::EditMessage::close(bool) (in /usr/bin/astroid)
==24582==    by 0x27BA3C: Astroid::EditMessage::send_message_finished(bool) (in /usr/bin/astroid)
==24582==    by 0x26B4DC: sigc::internal::signal_emit1<void, bool, sigc::nil>::emit(sigc::internal::signal_impl*, bool const&) (in /usr/bin/astroid)
==24582==    by 0x34CC15: Astroid::ComposeMessage::message_sent_event() (in /usr/bin/astroid)
==24582==    by 0xA9450E9: Glib::DispatchNotifier::pipe_io_handler(Glib::IOCondition) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0xA9477EB: Glib::IOSource::dispatch(sigc::slot_base*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==  Block was alloc'd at
==24582==    at 0x4837DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==24582==    by 0x2E5173: std::_Function_handler<bool (Astroid::Key), Astroid::ThreadView::register_keys()::$_31>::_M_invoke(std::_Any_data const&, Astroid::Key&&) (in /usr/bin/astroid)
==24582==    by 0x28C6A6: Astroid::Keybindings::handle(_GdkEventKey*) (in /usr/bin/astroid)
==24582==    by 0x9ACC356: Gtk::Widget_Class::key_press_event_callback(_GtkWidget*, _GdkEventKey*) (in /usr/lib/libgtkmm-3.0.so.1.1.0)
==24582==    by 0x7AF4834: ??? (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x95BF16D: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.5800.1)
==24582==    by 0x95BFA7F: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.5800.1)
==24582==    by 0x7AA01F4: ??? (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x7957FF3: ??? (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x795A15B: gtk_main_do_event (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x7E9AA05: ??? (in /usr/lib/libgdk-3.so.0.2400.1)
==24582==    by 0x7ECC754: ??? (in /usr/lib/libgdk-3.so.0.2400.1)
==24582== 
==24582== Invalid read of size 8
==24582==    at 0x27BA62: Astroid::EditMessage::send_message_finished(bool) (in /usr/bin/astroid)
==24582==    by 0x26B4DC: sigc::internal::signal_emit1<void, bool, sigc::nil>::emit(sigc::internal::signal_impl*, bool const&) (in /usr/bin/astroid)
==24582==    by 0x34CC15: Astroid::ComposeMessage::message_sent_event() (in /usr/bin/astroid)
==24582==    by 0xA9450E9: Glib::DispatchNotifier::pipe_io_handler(Glib::IOCondition) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0xA9477EB: Glib::IOSource::dispatch(sigc::slot_base*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0xA947A0E: Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0x965F270: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x9660F88: ??? (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x9660FCD: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x82677ED: g_application_run (in /usr/lib/libgio-2.0.so.0.5800.1)
==24582==    by 0x20E4FE: Astroid::Astroid::run(int, char**) (in /usr/bin/astroid)
==24582==    by 0x209D7A: main (in /usr/bin/astroid)
==24582==  Address 0x1901ba60 is 1,664 bytes inside a block of size 1,800 free'd
==24582==    at 0x4838EAB: operator delete(void*) (vg_replace_malloc.c:576)
==24582==    by 0x96810F2: g_datalist_clear (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x95CC384: g_object_unref (in /usr/lib/libgobject-2.0.so.0.5800.1)
==24582==    by 0x7885385: gtk_container_remove (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x261331: Astroid::MainWindow::del_mode(int) (in /usr/bin/astroid)
==24582==    by 0x29F2CD: Astroid::Mode::close(bool) (in /usr/bin/astroid)
==24582==    by 0x27806C: Astroid::EditMessage::close(bool) (in /usr/bin/astroid)
==24582==    by 0x27BA3C: Astroid::EditMessage::send_message_finished(bool) (in /usr/bin/astroid)
==24582==    by 0x26B4DC: sigc::internal::signal_emit1<void, bool, sigc::nil>::emit(sigc::internal::signal_impl*, bool const&) (in /usr/bin/astroid)
==24582==    by 0x34CC15: Astroid::ComposeMessage::message_sent_event() (in /usr/bin/astroid)
==24582==    by 0xA9450E9: Glib::DispatchNotifier::pipe_io_handler(Glib::IOCondition) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0xA9477EB: Glib::IOSource::dispatch(sigc::slot_base*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==  Block was alloc'd at
==24582==    at 0x4837DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==24582==    by 0x2E5173: std::_Function_handler<bool (Astroid::Key), Astroid::ThreadView::register_keys()::$_31>::_M_invoke(std::_Any_data const&, Astroid::Key&&) (in /usr/bin/astroid)
==24582==    by 0x28C6A6: Astroid::Keybindings::handle(_GdkEventKey*) (in /usr/bin/astroid)
==24582==    by 0x9ACC356: Gtk::Widget_Class::key_press_event_callback(_GtkWidget*, _GdkEventKey*) (in /usr/lib/libgtkmm-3.0.so.1.1.0)
==24582==    by 0x7AF4834: ??? (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x95BF16D: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.5800.1)
==24582==    by 0x95BFA7F: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.5800.1)
==24582==    by 0x7AA01F4: ??? (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x7957FF3: ??? (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x795A15B: gtk_main_do_event (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x7E9AA05: ??? (in /usr/lib/libgdk-3.so.0.2400.1)
==24582==    by 0x7ECC754: ??? (in /usr/lib/libgdk-3.so.0.2400.1)
==24582== 
==24582== Invalid read of size 8
==24582==    at 0x26B47B: sigc::internal::signal_emit1<void, bool, sigc::nil>::emit(sigc::internal::signal_impl*, bool const&) (in /usr/bin/astroid)
==24582==    by 0x27BA72: Astroid::EditMessage::send_message_finished(bool) (in /usr/bin/astroid)
==24582==    by 0x26B4DC: sigc::internal::signal_emit1<void, bool, sigc::nil>::emit(sigc::internal::signal_impl*, bool const&) (in /usr/bin/astroid)
==24582==    by 0x34CC15: Astroid::ComposeMessage::message_sent_event() (in /usr/bin/astroid)
==24582==    by 0xA9450E9: Glib::DispatchNotifier::pipe_io_handler(Glib::IOCondition) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0xA9477EB: Glib::IOSource::dispatch(sigc::slot_base*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0xA947A0E: Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
==24582==    by 0x965F270: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x9660F88: ??? (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x9660FCD: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x82677ED: g_application_run (in /usr/lib/libgio-2.0.so.0.5800.1)
==24582==    by 0x20E4FE: Astroid::Astroid::run(int, char**) (in /usr/bin/astroid)
==24582==  Address 0x1a064598 is 8 bytes inside a block of size 32 free'd
==24582==    at 0x483908B: operator delete(void*, unsigned long) (vg_replace_malloc.c:585)
==24582==    by 0xAD9B80F: sigc::signal_base::~signal_base() (in /usr/lib/libsigc-2.0.so.0.0.0)
==24582==    by 0x2710AE: Astroid::EditMessage::~EditMessage() (in /usr/bin/astroid)
==24582==    by 0x374A78: Astroid::ReplyMessage::~ReplyMessage() (in /usr/bin/astroid)
==24582==    by 0x96810F2: g_datalist_clear (in /usr/lib/libglib-2.0.so.0.5800.1)
==24582==    by 0x95CC384: g_object_unref (in /usr/lib/libgobject-2.0.so.0.5800.1)
==24582==    by 0x7885385: gtk_container_remove (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x261331: Astroid::MainWindow::del_mode(int) (in /usr/bin/astroid)
==24582==    by 0x29F2CD: Astroid::Mode::close(bool) (in /usr/bin/astroid)
==24582==    by 0x27806C: Astroid::EditMessage::close(bool) (in /usr/bin/astroid)
==24582==    by 0x27BA3C: Astroid::EditMessage::send_message_finished(bool) (in /usr/bin/astroid)
==24582==    by 0x26B4DC: sigc::internal::signal_emit1<void, bool, sigc::nil>::emit(sigc::internal::signal_impl*, bool const&) (in /usr/bin/astroid)
==24582==  Block was alloc'd at
==24582==    at 0x4837DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==24582==    by 0xAD9B43D: sigc::signal_base::impl() const (in /usr/lib/libsigc-2.0.so.0.0.0)
==24582==    by 0xAD9B48A: sigc::signal_base::signal_base(sigc::signal_base const&) (in /usr/lib/libsigc-2.0.so.0.0.0)
==24582==    by 0x27CD5F: Astroid::EditMessage::message_sent_attempt() (in /usr/bin/astroid)
==24582==    by 0x373798: Astroid::ReplyMessage::ReplyMessage(Astroid::MainWindow*, Glib::RefPtr<Astroid::Message>, Astroid::ReplyMessage::ReplyMode) (in /usr/bin/astroid)
==24582==    by 0x2E51B2: std::_Function_handler<bool (Astroid::Key), Astroid::ThreadView::register_keys()::$_31>::_M_invoke(std::_Any_data const&, Astroid::Key&&) (in /usr/bin/astroid)
==24582==    by 0x28C6A6: Astroid::Keybindings::handle(_GdkEventKey*) (in /usr/bin/astroid)
==24582==    by 0x9ACC356: Gtk::Widget_Class::key_press_event_callback(_GtkWidget*, _GdkEventKey*) (in /usr/lib/libgtkmm-3.0.so.1.1.0)
==24582==    by 0x7AF4834: ??? (in /usr/lib/libgtk-3.so.0.2400.1)
==24582==    by 0x95BF16D: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.5800.1)
==24582==    by 0x95BFA7F: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.5800.1)
==24582==    by 0x7AA01F4: ??? (in /usr/lib/libgtk-3.so.0.2400.1)
==24582== 

@gauteh
Copy link
Member

gauteh commented Nov 2, 2018

Hm, perhaps the ComposeMessage object is deleted while the signal still hasn't been handled. Still, ComposeMessage is sigc::trackable so it should cleaned up.

@gauteh
Copy link
Member

gauteh commented Nov 2, 2018

Is the editmessage window configured to close after successful send?

@dtzWill
Copy link

dtzWill commented Nov 2, 2018 via email

@larskotthoff
Copy link
Contributor Author

@gauteh Yes, configured to auto close on success.

@gauteh
Copy link
Member

gauteh commented Nov 3, 2018 via email

@gauteh
Copy link
Member

gauteh commented Nov 3, 2018 via email

@larskotthoff
Copy link
Contributor Author

I've commented the following lines in edit_message.cc and it hasn't crashed since then -- take this with a grain of salt for now as I haven't been able to reliably reproduce crashes.

if (status_icon_visible) {
   main_window->notebook.remove_widget (&message_sending_status_icon);
}

@gauteh
Copy link
Member

gauteh commented Nov 4, 2018 via email

@larskotthoff
Copy link
Contributor Author

Ok, that wasn't it (or at least not the only thing) -- still getting crashes with this commented.

@gauteh gauteh added the bug label Nov 17, 2018
@gauteh
Copy link
Member

gauteh commented Nov 21, 2018

Do you get the crash if you turn off the auto-close option?

@larskotthoff
Copy link
Contributor Author

I haven't gotten any crashes recently. Maybe it was related to the webkit threads not being cleaned up (#593 -- I'm using a version with these changes included). I'll try to investigate though.

@gauteh
Copy link
Member

gauteh commented Nov 22, 2018

Ok, with the merge of #593 I am closing this untill it can be reproduced.

@gauteh gauteh closed this as completed Nov 22, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants