GNOME Bugzilla – Bug 641825
Crash in poll_ldap() when finalizing the backend
Last modified: 2012-10-17 11:48:27 UTC
Moving this from a downstream bug report: https://bugzilla.redhat.com/show_bug.cgi?id=675772 abrt version: 1.1.14 architecture: x86_64 Attached file: backtrace cmdline: /usr/libexec/e-addressbook-factory component: evolution-data-server crash_function: ber_free_buf executable: /usr/libexec/e-addressbook-factory kernel: 2.6.38-0.rc3.git0.1.fc15.x86_64 package: evolution-data-server-2.32.1-1.fc14 rating: 4 reason: Process /usr/libexec/e-addressbook-factory was killed by signal 6 (SIGABRT) release: Fedora release 14 (Laughlin) time: 1297096884 uid: 500 Core was generated by `/usr/libexec/e-addressbook-factory'. Program terminated with signal 6, Aborted.
+ Trace 225895
Thread 3 (Thread 28569)
Downstream bug report from 3.2.3: https://bugzilla.redhat.com/show_bug.cgi?id=772650 Thread 2 is disposing ldap backend, while Thread 1 is inside poll_ldap with the same backend. There should be a better mechanism to stop poll_ldap in this case. Core was generated by `/usr/libexec/e-addressbook-factory'. Program terminated with signal 11, Segmentation fault.
+ Trace 229507
Thread 6 (Thread 0x7fbebd6eb700 (LWP 2148))
I believe this is caused by the same issue as bug #674454, thus I'm marking this as a duplicate of it. *** This bug has been marked as a duplicate of bug 674454 ***
The same downstream bug report from 3.4.4, which proves this not being a duplicate of bug #674454, but this is a bug on its own, with a description from comment #1: > Thread 2 is disposing ldap backend, while Thread 1 is inside poll_ldap with > the same backend. There should be a better mechanism to stop poll_ldap in > this case. [1] https://bugzilla.redhat.com/show_bug.cgi?id=860294
Created attachment 226636 [details] [review] eds patch for evolution-data-server; This should make it. The whole body of poll_ldap() is now guarded by the global rec lock, which is used to operate with the ldap handle, and it's also used in the finalize function, thus the ldap handle will not be able to disappear before poll_ldap() is done with it.
Created commit c436d09 in eds master (3.7.1+) Created commit 49869a0 in eds gnome-3-6 (3.6.2+)