GNOME Bugzilla – Bug 699553
Crash in xmlOutputBufferClose when called from ews_client_autodiscover_data_free()
Last modified: 2014-09-18 11:25:38 UTC
Moving this from a downstream bug report: https://bugzilla.redhat.com/show_bug.cgi?id=958336 Description of problem: Seems to be related to an exchange account. I added one, and then it crashed. Seems to work okay if I remove this account from goa. Version-Release number of selected component: gnome-online-accounts-3.8.1-1.fc19 Additional info: backtrace_rating: 4 cmdline: /usr/libexec/goa-daemon crash_function: xmlOutputBufferClose__internal_alias executable: /usr/libexec/goa-daemon kernel: 3.9.0-301.fc19.x86_64 Core was generated by `/usr/libexec/goa-daemon'. Program terminated with signal 6, Aborted.
+ Trace 231895
Thread 1 (Thread 0x7fdd4bf8fa40 (LWP 3412))
Ankur, Can you find out if ews_client_autodiscover_data_free (goaewsclient.c) is getting called twice? If that is the case, then I am curious about what is going on inside ews_client_autodiscover_response_cb. You should be able to kill your existing goa-daemon and run it from the command line. Thanks!
Hi Debarshi, Can you please tell me how to check this for you, i.e., what steps are required? Thanks, Ankur
Download the sources for 3.8.1 or the gnome-3-8 branch and put a "g_message" call. Configure, build and install. Just make sure that you use --enable-kerberos, and kill the existing goa-daemon process before running your own.
(In reply to comment #1) > Can you find out if ews_client_autodiscover_data_free (goaewsclient.c) is > getting called twice? If that is the case, then I am curious about what is > going on inside ews_client_autodiscover_response_cb. Yes, indeed, that is what is happening here. It happens when the messages from the Exchange server arrive in a particular order. When the first response is successful, it tries to cancel the other messages that are in flight, and this is when the crash occurs. Passing SOUP_STATUS_NONE to soup_session_cancel_message does not work as intended and this was broken by the following commit: commit 27e86279bbaff430fe0757f97c97c44d190b7da6 Author: Debarshi Ray <debarshir@gnome.org> Date: Wed Dec 5 15:26:09 2012 +0100 ewsclient: Differentiate between short-circuited and cancelled messages Since more than one message is queued, we cancel the rest if any one of them is successful. This short-circuiting is different from cases where all messages are cancelled because of a soup_session_abort triggered by a GCancellable. Fixes: https://bugzilla.gnome.org/689642 Unfortunately, against all my three test servers the successful message usually arrives last, which made it hard for me to reproduce the problem.
Created attachment 277722 [details] [review] ewsclient: Correctly cancel pending messages on success
Created attachment 277725 [details] [review] ewsclient: Correctly cancel pending messages on success
Review of attachment 277725 [details] [review]: Tested it for a couple of days and I think this crash is fixed.
Pushed to master, gnome-3-12 and gnome-3-10.