GNOME Bugzilla – Bug 634971
Crash in update_cache() due to freed backend
Last modified: 2011-06-23 11:16:52 UTC
Moving this from a downstream bug report: https://bugzilla.redhat.com/show_bug.cgi?id=653715 abrt version: 1.1.13 architecture: i686 Attached file: backtrace cmdline: /usr/libexec/e-addressbook-factory component: evolution-data-server crash_function: g_type_check_instance_cast executable: /usr/libexec/e-addressbook-factory kernel: 2.6.35.6-48.fc14.i686 package: evolution-data-server-2.32.0-3.fc14 rating: 4 reason: Process /usr/libexec/e-addressbook-factory was killed by signal 11 (SIGSEGV) release: Fedora release 14 (Laughlin) How to reproduce: 1. Just viewing e-mail. time: 1289871006 uid: 15162 Core was generated by `/usr/libexec/e-addressbook-factory'. Program terminated with signal 11, Segmentation fault.
+ Trace 224699
Thread 1 (Thread 2238)
Similar crash from 3.0.2: https://bugzilla.redhat.com/show_bug.cgi?id=713627
+ Trace 227494
Thread 1 (Thread 0x7f3897fff700 (LWP 22815))
Created attachment 190508 [details] [review] eex patch for evolution-exchange; Going through the code I think I see what happened here. the update_cache() (or build_cache()) function is called in a dedicated thread and it doesn't care about the exchange backend itself, it just expects it being alive for the whole time the function is run, but because it's in a separate thread then the backend can be freed meanwhile, which I believe happened here. This patch makes sure that the backend will not be freed before the function call is finished. I made same changes on similar places in eex aswell.
Created commit 797dec8 in eex master (3.1.3+) Created commit 138e2a2 in eex gnome-3-0 (3.0.3+)