After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 665381 - LDAP backend crash when query_ldap_root_dse() fails
LDAP backend crash when query_ldap_root_dse() fails
Status: RESOLVED FIXED
Product: evolution-data-server
Classification: Platform
Component: Contacts
3.2.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: evolution-addressbook-maintainers
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2011-12-02 10:45 UTC by Milan Crha
Modified: 2012-04-20 08:34 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
proposed eds patch (8.72 KB, patch)
2011-12-02 12:38 UTC, Milan Crha
committed Details | Review

Description Milan Crha 2011-12-02 10:45:37 UTC
Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=758547

libreport version: 2.0.7
abrt_version:   2.0.6
backtrace_rating: 4
cmdline:        /usr/libexec/e-addressbook-factory
comment:        I added a new LDAP server and tried to connect to it by
clicking the entry in Evolution's sidebar. This crash happens every time I try
to expand it.
crash_function: ldap_int_select
executable:     /usr/libexec/e-addressbook-factory
                evolution-data-server-3.2.2-1.fc16
kernel:         3.1.1-1.fc16.x86_64
pid:            11663
reason:         Process /usr/libexec/e-addressbook-factory was killed by signal
6 (SIGABRT)
time:           Tue 29 Nov 2011 06:19:57 PM PST

------------------------------------------------------------------------------

After an investigation with the downstream reporter it turned out that if the server returns LDAP_UNWILLING_TO_PERFORM in query_ldap_root_dse(), then it causes the addressbook factory crash. I can reproduce it if I cheat the code in the LDAP book backend, to see also

> libebookbackend-WARNING **: could not perform query on Root
> DSE (ldap_error 0x35/Server is unwilling to perform)

which is shown in user's valgrind log as well. My backtrace of the crash from git master of eds with the cheated code looks like:

(evolution-addressbook-factory:15155): libebookbackend-WARNING **: could not perform query on Root DSE (ldap_error 0x35/Server is unwilling to perform)

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffddbf7700 (LWP 15160)]
0x00007fffec3c4284 in ldap_int_select (ld=0x7fffd80034e0, timeout=0x0) at os-ip.c:1107
1107			rc = poll( sip->si_fds, sip->si_maxfd, to );

Thread 2 (Thread 0x7fffef119700 (LWP 15158))

  • #0 read
    from /lib64/libpthread.so.0
  • #1 read
    at /usr/include/bits/unistd.h line 45
  • #2 unix_signal_helper_thread
    at gmain.c line 4551
  • #3 g_thread_create_proxy
    at gthread.c line 1962
  • #4 start_thread
    from /lib64/libpthread.so.0
  • #5 clone
    from /lib64/libc.so.6

Comment 1 Milan Crha 2011-12-02 12:38:17 UTC
Created attachment 202594 [details] [review]
proposed eds patch

for evolution-data-server;

This should make it. I'm checking with the downstream reporter whether it'll work for him too.
Comment 2 Milan Crha 2012-04-20 08:33:57 UTC
Created commit 3f820b7 in eds master (3.5.1+)