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 528411 - address autocomplete locks evolution
address autocomplete locks evolution
Status: RESOLVED NOTABUG
Product: evolution
Classification: Applications
Component: Mailer
2.24.x (obsolete)
Other All
: Normal critical
: ---
Assigned To: evolution-mail-maintainers
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2008-04-16 14:16 UTC by Reid Thompson
Modified: 2013-09-13 00:59 UTC
See Also:
GNOME target: ---
GNOME version: 2.21/2.22


Attachments
proposed eex patch (1.02 KB, text/plain)
2008-04-22 09:09 UTC, Milan Crha
Details
evo-exchange-storage terminal output (13.10 KB, text/plain)
2008-04-22 15:35 UTC, Reid Thompson
Details
eds terminal output (1.61 KB, text/plain)
2008-04-22 15:35 UTC, Reid Thompson
Details

Description Reid Thompson 2008-04-16 14:16:27 UTC
Steps to reproduce:
1. forward a message
2. type in 3-4 chars of an address, hit enter for found address
3. type in 3-4 chars of another address
4. evo goes grey, never returns


Stack trace:
(gdb) bt
  • #0 __kernel_vsyscall
  • #1 pthread_cond_wait
    from /lib/libpthread.so.0
  • #2 giop_recv_buffer_get
    at giop-recv-buffer.c line 716
  • #3 ORBit_small_invoke_stub
    at orbit-small.c line 658
  • #4 ORBit_small_invoke_stub_n
    at orbit-small.c line 575
  • #5 ORBit_c_stub_invoke
    at poa.c line 2643
  • #6 Bonobo_Unknown_unref
    at Bonobo_Unknown-stubs.c line 15
  • #7 bonobo_object_release_unref
    at bonobo-object.c line 577
  • #8 e_book_view_dispose
    at ../../../../evolution-data-server/addressbook/libebook/e-book-view.c line 282
  • #9 IA__g_object_unref
    at ../../../glib/gobject/gobject.c line 1765
  • #10 clear_contact_source
    at ../../../evolution-data-server/libedataserverui/e-contact-store.c line 737
  • #11 query_contact_source
    at ../../../evolution-data-server/libedataserverui/e-contact-store.c line 760
  • #12 e_contact_store_set_query
    at ../../../evolution-data-server/libedataserverui/e-contact-store.c line 986
  • #13 clear_completion_model
    at ../../../evolution-data-server/libedataserverui/e-name-selector-entry.c line 849
  • #14 update_completion_model
    at ../../../evolution-data-server/libedataserverui/e-name-selector-entry.c line 875
  • #15 update_completions_on_idle_cb
    at ../../../evolution-data-server/libedataserverui/e-name-selector-entry.c line 890
  • #16 g_idle_dispatch
    at ../../../glib/glib/gmain.c line 4087
  • #17 g_main_dispatch
    at ../../../glib/glib/gmain.c line 2009
  • #18 IA__g_main_context_dispatch
    at ../../../glib/glib/gmain.c line 2561
  • #19 g_main_context_iterate
    at ../../../glib/glib/gmain.c line 2642
  • #20 IA__g_main_loop_run
    at ../../../glib/glib/gmain.c line 2850
  • #21 bonobo_main
    at bonobo-main.c line 311
  • #22 main
    at ../../../evolution/shell/main.c line 782
Other information:
glib
Revision: 6851
libsoup
Revision: 1136
gtkhtml
Revision: 8824
evolution-data-server
Revision: 8638
evolution
Revision: 35370
evolution-exchange
Revision: 1622
evolution-webcal
Revision: 429
Comment 1 Reid Thompson 2008-04-16 15:31:19 UTC
also -- hit reply to an email, then started to backspace out one of the addresses in the To: field. This caused evo to go gray and not return.  These errors displayed on gdb console..

[New Thread 0xb17ffb90 (LWP 17032)]

(evolution:16391): gtkhtml-editor-WARNING **: : No such language
[New Thread 0xb2ef8b90 (LWP 17036)]
[New Thread 0xb0657b90 (LWP 17038)]

(evolution:16391): Gtk-CRITICAL **: gtk_widget_get_clipboard: assertion `gtk_widget_has_screen (widget)' failed
[Thread 0xb0ffeb90 (LWP 17031) exited]
[Thread 0xb3ffbb90 (LWP 17030) exited]
Comment 2 Reid Thompson 2008-04-16 15:57:52 UTC
reply to an email - delete the email addr in the To: field; attempt to replace it with another email addr -> evo locked 
(gdb) bt
  • #0 __kernel_vsyscall
  • #1 pthread_cond_wait
    from /lib/libpthread.so.0
  • #2 giop_recv_buffer_get
    at giop-recv-buffer.c line 716
  • #3 ORBit_small_invoke_stub
    at orbit-small.c line 658
  • #4 ORBit_small_invoke_stub_n
    at orbit-small.c line 575
  • #5 ORBit_c_stub_invoke
    at poa.c line 2643
  • #6 Bonobo_Unknown_unref
    at Bonobo_Unknown-stubs.c line 15
  • #7 bonobo_object_release_unref
    at bonobo-object.c line 577
  • #8 e_book_view_dispose
    at ../../../../evolution-data-server/addressbook/libebook/e-book-view.c line 282
  • #9 IA__g_object_unref
    at ../../../glib/gobject/gobject.c line 1765
  • #10 view_sequence_complete
    at ../../../evolution-data-server/libedataserverui/e-contact-store.c line 643
  • #11 IA__g_cclosure_marshal_VOID__INT
    at ./gmarshal.c line 216
  • #12 IA__g_closure_invoke
    at ../../../glib/gobject/gclosure.c line 490
  • #13 signal_emit_unlocked_R
    at ../../../glib/gobject/gsignal.c line 2440
  • #14 IA__g_signal_emit_valist
    at ../../../glib/gobject/gsignal.c line 2199
  • #15 IA__g_signal_emit
    at ../../../glib/gobject/gsignal.c line 2243
  • #16 e_book_view_do_complete_event
    at ../../../../evolution-data-server/addressbook/libebook/e-book-view.c line 69
  • #17 e_book_view_handle_response
    at ../../../../evolution-data-server/addressbook/libebook/e-book-view.c line 100
  • #18 IA__g_cclosure_marshal_VOID__POINTER
    at ./gmarshal.c line 601
  • #19 IA__g_closure_invoke
    at ../../../glib/gobject/gclosure.c line 490
  • #20 signal_emit_unlocked_R
    at ../../../glib/gobject/gsignal.c line 2440
  • #21 IA__g_signal_emit_valist
    at ../../../glib/gobject/gsignal.c line 2199
  • #22 IA__g_signal_emit
    at ../../../glib/gobject/gsignal.c line 2243
  • #23 main_thread_get_response
    at ../../../../evolution-data-server/addressbook/libebook/e-book-view-listener.c line 69
  • #24 g_idle_dispatch
    at ../../../glib/glib/gmain.c line 4087
  • #25 g_main_dispatch
    at ../../../glib/glib/gmain.c line 2009
  • #26 IA__g_main_context_dispatch
    at ../../../glib/glib/gmain.c line 2561
  • #27 g_main_context_iterate
    at ../../../glib/glib/gmain.c line 2642
  • #28 IA__g_main_loop_run
    at ../../../glib/glib/gmain.c line 2850
  • #29 bonobo_main
    at bonobo-main.c line 311
  • #30 main
    at ../../../evolution/shell/main.c line 782

Comment 3 Milan Crha 2008-04-18 15:36:42 UTC
can you do "thread apply all bt" please? It depends on the output of that, but probably a state of evolution-data-server in time of this hang can be also useful.
Comment 4 Reid Thompson 2008-04-18 16:24:38 UTC
(gdb) cont
Continuing.
BBDB spinning up...
[New Thread 0xb2717b90 (LWP 7994)]
[New Thread 0xb2f18b90 (LWP 7995)]
<memory>:1: Invalid color constant '(null)'
Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property `GtkHTML::spell-error-color' of type `GdkColor' from rc file value ""(null)"" of type `gchararray'
[New Thread 0xb4031b90 (LWP 7996)]
[Thread 0xb2717b90 (LWP 7994) exited]
[Thread 0xb4031b90 (LWP 7996) exited]
[New Thread 0xb4031b90 (LWP 7998)]

(evolution:7684): gtkhtml-editor-WARNING **: : No such language
[New Thread 0xb2717b90 (LWP 8002)]
[New Thread 0xb0060b90 (LWP 8004)]
[Thread 0xb4031b90 (LWP 7998) exited]

(evolution:7684): libebook-WARNING **: EBookView: Exception while releasing BookView

[Thread 0xb2f18b90 (LWP 7995) exited]
^C
Program received signal SIGINT, Interrupt.
0xb7f61410 in __kernel_vsyscall ()
(gdb) thread apply all bt


Comment 5 Reid Thompson 2008-04-18 16:26:46 UTC
evolution-data-server

(gdb) thread apply all bt

in ../sysdeps/unix/sysv/linux/poll.c
(gdb) 
Comment 6 Matthew Barnes 2008-04-18 17:06:31 UTC
Reid, what about evolution-exchange-storage?  It that process by any chance crashing on you?  If so can you post a backtrace of that?  (sorry)
Comment 7 Reid Thompson 2008-04-18 18:18:21 UTC
Attaching to program: /opt/evo/libexec/evolution/2.24/evolution-exchange-storage, process 19517
.....snip....

(gdb) thread apply all bt

Thread 7 (Thread 0xb3bffb90 (LWP 19959))

  • #0 ??
  • #1 ??
  • #2 ??
  • #3 ??
  • #4 write
    from /lib/libpthread.so.0
  • #5 camel_write
    at ../../../evolution-data-server/camel/camel-file-utils.c line 523
  • #6 camel_stub_marshal_flush
    at ../../../evolution-exchange/camel/camel-stub-marshal.c line 455
  • #7 mail_stub_return_progress
    at ../../../evolution-exchange/mail/mail-stub.c line 697
  • #8 refresh_folder_internal
    at ../../../evolution-exchange/mail/mail-stub-exchange.c line 1361
  • #9 storage_folder_changed
    at ../../../evolution-exchange/mail/mail-stub-exchange.c line 539
  • #10 IA__g_cclosure_marshal_VOID__VOID
    at ./gmarshal.c line 77
  • #11 IA__g_closure_invoke
    at ../../../glib/gobject/gclosure.c line 490
  • #12 signal_emit_unlocked_R
    at ../../../glib/gobject/gsignal.c line 2440
  • #13 IA__g_signal_emit_valist
    at ../../../glib/gobject/gsignal.c line 2199
  • #14 IA__g_signal_emit
    at ../../../glib/gobject/gsignal.c line 2243
  • #15 e_folder_set_unread_count
    at ../../../../../evolution-data-server/servers/exchange/storage/e-folder.c line 348
  • #16 rescan
    at ../../../../../evolution-data-server/servers/exchange/storage/exchange-hierarchy-webdav.c line 552
  • #17 exchange_hierarchy_rescan
    at ../../../../../evolution-data-server/servers/exchange/storage/exchange-hierarchy.c line 291
  • #18 exchange_account_rescan_tree
    at ../../../../../evolution-data-server/servers/exchange/storage/exchange-account.c line 340
  • #19 e_book_backend_exchange_start_book_view
    at ../../../evolution-exchange/addressbook/e-book-backend-exchange.c line 2009
  • #20 e_book_backend_start_book_view
    at ../../../../evolution-data-server/addressbook/libedata-book/e-book-backend.c line 305
  • #21 impl_GNOME_Evolution_Addressbook_BookView_start
    at ../../../../evolution-data-server/addressbook/libedata-book/e-data-book-view.c line 492
  • #22 _ORBIT_skel_small_GNOME_Evolution_Addressbook_BookView_start
    at Evolution-DataServer-Addressbook-common.c line 36
  • #23 ORBit_POAObject_invoke
    at poa.c line 1142
  • #24 ORBit_OAObject_invoke
    at orbit-adaptor.c line 338
  • #25 ORBit_small_invoke_adaptor
    at orbit-small.c line 844
  • #26 ORBit_POAObject_handle_request
    at poa.c line 1351
  • #27 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1421
  • #28 giop_thread_queue_process
    at giop.c line 771
  • #29 giop_request_handler_thread
    at giop.c line 481
  • #30 g_thread_pool_thread_proxy
    at ../../../glib/glib/gthreadpool.c line 265
  • #31 g_thread_create_proxy
    at ../../../glib/glib/gthread.c line 635
  • #32 start_thread
    at pthread_create.c line 296
  • #33 clone
    from /lib/libc.so.6

Thread 1 (Thread 0xb62bc6e0 (LWP 19517))

  • #0 ??
  • #1 ??
  • #2 ??
  • #3 ??
  • #4 write
    from /lib/libpthread.so.0
  • #5 camel_write
    at ../../../evolution-data-server/camel/camel-file-utils.c line 523
  • #6 camel_stub_marshal_flush
    at ../../../evolution-exchange/camel/camel-stub-marshal.c line 455
  • #7 mail_stub_return_progress
    at ../../../evolution-exchange/mail/mail-stub.c line 697
  • #8 refresh_folder_internal
    at ../../../evolution-exchange/mail/mail-stub-exchange.c line 1361
  • #9 notify_cb
    at ../../../evolution-exchange/mail/mail-stub-exchange.c line 479
  • #10 maybe_notification
    at ../../../../../evolution-data-server/servers/exchange/lib/e2k-context.c line 2367
  • #11 polled
    at ../../../../../evolution-data-server/servers/exchange/lib/e2k-context.c line 2403
  • #12 final_finished
    at ../../../libsoup/libsoup/soup-session-async.c line 203
  • #13 IA__g_cclosure_marshal_VOID__VOID
    at ./gmarshal.c line 77
  • #14 IA__g_closure_invoke
    at ../../../glib/gobject/gclosure.c line 490
  • #15 signal_emit_unlocked_R
    at ../../../glib/gobject/gsignal.c line 2510
  • #16 IA__g_signal_emit_valist
    at ../../../glib/gobject/gsignal.c line 2199
  • #17 IA__g_signal_emit
    at ../../../glib/gobject/gsignal.c line 2243
  • #18 soup_message_finished
    at ../../../libsoup/libsoup/soup-message.c line 837
  • #19 soup_message_io_finished
    at ../../../libsoup/libsoup/soup-message-io.c line 172
  • #20 io_read
    at ../../../libsoup/libsoup/soup-message-io.c line 820
  • #21 IA__g_cclosure_marshal_VOID__VOID
    at ./gmarshal.c line 77
  • #22 IA__g_closure_invoke
    at ../../../glib/gobject/gclosure.c line 490
  • #23 signal_emit_unlocked_R
    at ../../../glib/gobject/gsignal.c line 2440
  • #24 IA__g_signal_emit_valist
    at ../../../glib/gobject/gsignal.c line 2199
  • #25 IA__g_signal_emit
    at ../../../glib/gobject/gsignal.c line 2243
  • #26 socket_read_watch
    at ../../../libsoup/libsoup/soup-socket.c line 1035
  • #27 g_io_unix_dispatch
    at ../../../glib/glib/giounix.c line 162
  • #28 g_main_dispatch
    at ../../../glib/glib/gmain.c line 2009
  • #29 IA__g_main_context_dispatch
    at ../../../glib/glib/gmain.c line 2561
  • #30 g_main_context_iterate
    at ../../../glib/glib/gmain.c line 2642
  • #31 IA__g_main_loop_run
    at ../../../glib/glib/gmain.c line 2850
  • #32 bonobo_main
    at bonobo-main.c line 311
  • #33 main
    at ../../../evolution-exchange/storage/main.c line 238

Comment 8 Reid Thompson 2008-04-18 18:36:12 UTC
Attaching to program: /opt/evo/libexec/evolution/2.24/evolution-exchange-storage, process 20670

Slightly more info -- a second trace:
??? DDD lists execution pointer at line 523 ???? -> not sure i'm reading this right...DDD pointer at line 523

 521         do {
 522             do {
 -> 523                 w = write (fd, buf + written, n - written);
 524             } while (w == -1 && (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK));
 525             if (w > 0)
 526                 written += w;
 527         } while (w != -1 && written < n);
 528     } else {
 529 #ifndef G_OS_WIN32
 530         int errnosav, flags, fdmax;
 531         fd_set rdset, wrset;
 532 
 533         flags = fcntl (fd, F_GETFL);
 534         fcntl (fd, F_SETFL, flags | O_NONBLOCK);
 535 
 536         fdmax = MAX (fd, cancel_fd) + 1;
 537         do {
 538             struct timeval tv;

(gdb) cont
Continuing.
[New Thread 0xb45fcb90 (LWP 21091)]
[New Thread 0xb3dfbb90 (LWP 21097)]
[New Thread 0xb2df9b90 (LWP 21098)]
[Thread 0xb2df9b90 (LWP 21098) exited]
[Thread 0xb45fcb90 (LWP 21091) exited]
[Thread 0xb3dfbb90 (LWP 21097) exited]
[New Thread 0xb3dfbb90 (LWP 21101)]
[New Thread 0xb45fcb90 (LWP 21102)]
[Thread 0xb45fcb90 (LWP 21102) exited]
[New Thread 0xb45fcb90 (LWP 21104)]
[Thread 0xb45fcb90 (LWP 21104) exited]
^C
Program received signal SIGINT, Interrupt.
[Switching to Thread 0xb62b56e0 (LWP 20670)]
0xb7fb1410 in ?? ()
(gdb) thread apply all bt

Thread 6 (Thread 0xb3dfbb90 (LWP 21101))

  • #0 ??
  • #1 ??
  • #2 ??
  • #3 ??
  • #4 write
    from /lib/libpthread.so.0
  • #5 camel_write
    at ../../../evolution-data-server/camel/camel-file-utils.c line 523
  • #6 camel_stub_marshal_flush
    at ../../../evolution-exchange/camel/camel-stub-marshal.c line 455
  • #7 mail_stub_return_progress
    at ../../../evolution-exchange/mail/mail-stub.c line 697
  • #8 refresh_folder_internal
    at ../../../evolution-exchange/mail/mail-stub-exchange.c line 1361
  • #9 storage_folder_changed
    at ../../../evolution-exchange/mail/mail-stub-exchange.c line 539
  • #10 IA__g_cclosure_marshal_VOID__VOID
    at ./gmarshal.c line 77
  • #11 IA__g_closure_invoke
    at ../../../glib/gobject/gclosure.c line 490
  • #12 signal_emit_unlocked_R
    at ../../../glib/gobject/gsignal.c line 2440
  • #13 IA__g_signal_emit_valist
    at ../../../glib/gobject/gsignal.c line 2199
  • #14 IA__g_signal_emit
    at ../../../glib/gobject/gsignal.c line 2243
  • #15 e_folder_set_unread_count
    at ../../../../../evolution-data-server/servers/exchange/storage/e-folder.c line 348
  • #16 rescan
    at ../../../../../evolution-data-server/servers/exchange/storage/exchange-hierarchy-webdav.c line 552
  • #17 exchange_hierarchy_rescan
    at ../../../../../evolution-data-server/servers/exchange/storage/exchange-hierarchy.c line 291
  • #18 exchange_account_rescan_tree
    at ../../../../../evolution-data-server/servers/exchange/storage/exchange-account.c line 340
  • #19 e_book_backend_exchange_start_book_view
    at ../../../evolution-exchange/addressbook/e-book-backend-exchange.c line 2009
  • #20 e_book_backend_start_book_view
    at ../../../../evolution-data-server/addressbook/libedata-book/e-book-backend.c line 305
  • #21 impl_GNOME_Evolution_Addressbook_BookView_start
    at ../../../../evolution-data-server/addressbook/libedata-book/e-data-book-view.c line 492
  • #22 _ORBIT_skel_small_GNOME_Evolution_Addressbook_BookView_start
    at Evolution-DataServer-Addressbook-common.c line 36
  • #23 ORBit_POAObject_invoke
    at poa.c line 1142
  • #24 ORBit_OAObject_invoke
    at orbit-adaptor.c line 338
  • #25 ORBit_small_invoke_adaptor
    at orbit-small.c line 844
  • #26 ORBit_POAObject_handle_request
    at poa.c line 1351
  • #27 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1421
  • #28 giop_thread_queue_process
    at giop.c line 771
  • #29 giop_request_handler_thread
    at giop.c line 481
  • #30 g_thread_pool_thread_proxy
    at ../../../glib/glib/gthreadpool.c line 265
  • #31 g_thread_create_proxy
    at ../../../glib/glib/gthread.c line 635
  • #32 start_thread
    at pthread_create.c line 296
  • #33 clone
    from /lib/libc.so.6

Comment 9 Reid Thompson 2008-04-18 18:38:43 UTC
(In reply to comment #6)
> Reid, what about evolution-exchange-storage?  It that process by any chance
> crashing on you?  If so can you post a backtrace of that?  (sorry)
> 

It's not visibly crashing -- the process is still running when evo greys out and locks.  The traces above for evolution-exchange-storage were taken by interrupting  the evolution-exchange-storage process via DDD/gdb while evo was locked.
Comment 10 Milan Crha 2008-04-22 09:09:24 UTC
Created attachment 109673 [details]
proposed eex patch

for evolution-exchange;

Reid, I cannot reproduce this myself, I'm not sure why, but it works fine for me. But, just by chance, can you try apply this patch? I'm not sure how much is this related to this bug, but with a bit of luck it will help. Thanks in advance.

If it will not help, then please run evolution-data-server and evolution-exchange on its own console and see what they print there would be interesting too, at least the error messages, and maybe if evolution-exchange doesn't claim on double free or something similar. It sometimes happen that in the double free it doesn't crash, but freezes. Anyway, this patch would protect from the double free I'm thinking of, even no clue whether it's the issue here.
Comment 11 Reid Thompson 2008-04-22 11:58:14 UTC
rthompso@raker ~ $ /opt/evo/libexec/evolution-data-server-2.24
evolution-data-server-Message: Starting server
e-data-server-Message: adding type `EBookBackendFileFactory'
e-data-server-Message: adding type `EBookBackendVCFFactory'
e-data-server-Message: adding type `EBookBackendLDAPFactory'
e-data-server-Message: adding type `EBookBackendGroupwiseFactory'
e-data-server-Message: adding type `ECalBackendFileTodosFactory'
e-data-server-Message: adding type `ECalBackendFileEventsFactory'
e-data-server-Message: adding type `ECalBackendFileJournalFactory'
e-data-server-Message: adding type `ECalBackendGroupwiseTodosFactory'
e-data-server-Message: adding type `ECalBackendGroupwiseEventsFactory'
e-data-server-Message: adding type `ECalBackendGroupwiseJournalFactory'
e-data-server-Message: adding type `ECalBackendHttpTodosFactory'
e-data-server-Message: adding type `ECalBackendHttpEventsFactory'
e-data-server-Message: adding type `ECalBackendHttpMemosFactory'
e-data-server-Message: adding type `ECalBackendContactsEventsFactory'
e-data-server-Message: adding type `ECalBackendWeatherEventsFactory'
e-data-server-Message: adding type `ECalBackendCalDAVEventsFactory'
e-data-server-Message: adding type `ECalBackendGoogleTodosFactory'
e-data-server-Message: adding type `ECalBackendGoogleEventsFactory'
in server_log_handler
evolution-data-server-Message: Server up and running
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + file:///home/rthompso/.evolution/addressbook/local/system
 => 0x8056ec0
impl_GNOME_Evolution_Addressbook_Book_open (0x8056ec0)
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + gal://Reid.Thompson;auth=Basic@sr002-2k3exc.ateb.com/gal
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + exchange://Reid.Thompson;auth=Basic@sr002-2k3exc.ateb.com/;personal/Contacts

(evolution-data-server-2.24:20748): libedata-book-WARNING **: impl_GNOME_Evolution_Addressbook_Book_getBookView ((or (beginswith "file_as"  "jre") (beginswith "full_name"  "jre") (beginswith "email"  "jre") (beginswith "nickname"  "jre") ))

e_data_book_respond_get_book_view
book_view file uref 
--------------------------------------------------------------------------
  
  
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + gal://Reid.Thompson;auth=Basic@sr002-2k3exc.ateb.com/gal
 => 0x80d2f80
impl_GNOME_Evolution_Addressbook_Book_open (0x80d2f80)
offlin==============
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + exchange://Reid.Thompson;auth=Basic@sr002-2k3exc.ateb.com/;personal/Contacts
 => 0x80d2fb0
impl_GNOME_Evolution_Addressbook_Book_open (0x80d2fb0)
authenticate_user(0x81506b0, 0x80d2f80, Reid.Thompson, Jak1e&magg1e, plain/password)
  
  
  
  
  
  

(evolution-exchange-storage:20752): libedata-book-WARNING **: impl_GNOME_Evolution_Addressbook_Book_getBookView ((or (beginswith "file_as"  "jre") (beginswith "full_name"  "jre") (beginswith "email"  "jre") (beginswith "nickname"  "jre") ))

e_data_book_respond_get_book_view
start book view
Mode:Remote
Not marked for offline or cache not there
start_book_view (0x8c64490)
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1824:start_book_view: (&(mail=*)(!(msExchHideFromAddressLists=TRUE))(|(displayName=jre*)(|(displayName=jre*)(sn=jre*)(givenName=jre*)(mailNickname=jre*))(mail=jre*)(mailNickname=jre*)))
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1840:start_book_view: starting 
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1851:start_book_view: 0
Connected and ldap is null sigh
adding search_op (0x8c64490, 3)
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1875:start_book_view: adding search 

(evolution-exchange-storage:20752): libedata-book-WARNING **: impl_GNOME_Evolution_Addressbook_Book_getBookView ((or (beginswith "file_as"  "jre") (beginswith "full_name"  "jre") (beginswith "email"  "jre") (beginswith "nickname"  "jre") ))

start_book_view: Setting op 0x8b0c938 in book 0x8c64490
e_data_book_respond_get_book_view
  
  
  
looked up msgid 3, got op 0x8b0c938
ldap_search_handler (0x8c64490)
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1603:ldap_search_handler: search handler 
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1661:ldap_search_handler: o/p 0 0
ldap_search_dtor (0x8c64490)
ldap_search_dtor: Setting null inplace of 0x8b0c938 in view 0x8c64490
stop_book_view (0x8c64490)
STOP BOOK VIEW: Getting op (nil) from view 0x8c64490
  
  
  
  
stop_book_view (0x8c64490)
STOP BOOK VIEW: Getting op (nil) from view 0x8c64490
  
  
  
  
  
  
  
  
  
  
  
  
  
Comment 12 Reid Thompson 2008-04-22 12:14:17 UTC
(In reply to comment #10)
> Created an attachment (id=109673) [edit]
> proposed eex patch
> 
> for evolution-exchange;
> 
> Reid, I cannot reproduce this myself, I'm not sure why, but it works fine for
> me. But, just by chance, can you try apply this patch? I'm not sure how much is
> this related to this bug, but with a bit of luck it will help. Thanks in
> advance.
> 
> If it will not help, then please run evolution-data-server and
> evolution-exchange on its own console and see what they print there would be
> interesting too, at least the error messages, and maybe if evolution-exchange
> doesn't claim on double free or something similar. It sometimes happen that in
> the double free it doesn't crash, but freezes. Anyway, this patch would protect
> from the double free I'm thinking of, even no clue whether it's the issue here.
> 

Tried the patch - the issue is still there.  The above terminal output from eds and eex are with the patch.
Comment 13 Milan Crha 2008-04-22 13:27:31 UTC
Hmm, first console info (from comment #4) contains text with exception while releasing book view, the latest doesn't, but it contains other funny part, "Connected and ldap is null sigh", which should not happen probably. I'm not sure, but I guess it should not. Can you try to revert patches from bug #303067 and see what happens, please? These patches touch the code near of this, so I wonder how much related it is for you. It is not related at all for my machine/setup, though.
Comment 14 Reid Thompson 2008-04-22 15:30:41 UTC
reverted patches from bug #303067
rthompso@raker ~ $ /opt/evo/libexec/evolution-data-server-2.24
evolution-data-server-Message: Starting server
e-data-server-Message: adding type `EBookBackendFileFactory'
e-data-server-Message: adding type `EBookBackendVCFFactory'
e-data-server-Message: adding type `EBookBackendLDAPFactory'
e-data-server-Message: adding type `EBookBackendGroupwiseFactory'
e-data-server-Message: adding type `ECalBackendFileTodosFactory'
e-data-server-Message: adding type `ECalBackendFileEventsFactory'
e-data-server-Message: adding type `ECalBackendFileJournalFactory'
e-data-server-Message: adding type `ECalBackendGroupwiseTodosFactory'
e-data-server-Message: adding type `ECalBackendGroupwiseEventsFactory'
e-data-server-Message: adding type `ECalBackendGroupwiseJournalFactory'
e-data-server-Message: adding type `ECalBackendHttpTodosFactory'
e-data-server-Message: adding type `ECalBackendHttpEventsFactory'
e-data-server-Message: adding type `ECalBackendHttpMemosFactory'
e-data-server-Message: adding type `ECalBackendContactsEventsFactory'
e-data-server-Message: adding type `ECalBackendWeatherEventsFactory'
e-data-server-Message: adding type `ECalBackendCalDAVEventsFactory'
e-data-server-Message: adding type `ECalBackendGoogleTodosFactory'
e-data-server-Message: adding type `ECalBackendGoogleEventsFactory'
in server_log_handler
evolution-data-server-Message: Server up and running
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + file:///home/rthompso/.evolution/addressbook/local/system
 => 0x8056f80
impl_GNOME_Evolution_Addressbook_Book_open (0x8056f80)

(evolution-data-server-2.24:31111): libedata-book-WARNING **: impl_GNOME_Evolution_Addressbook_Book_getBookView ((contains "x-evolution-any-field" ""))

e_data_book_respond_get_book_view
book_view file uref 
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + file:///home/rthompso/.evolution/addressbook/local/system
 => 0x8076750
impl_GNOME_Evolution_Addressbook_Book_open (0x8076750)
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + gal://Reid.Thompson;auth=Basic@sr002-2k3exc.ateb.com/gal
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + exchange://Reid.Thompson;auth=Basic@sr002-2k3exc.ateb.com/;personal/Contacts

(evolution-data-server-2.24:31111): libedata-book-WARNING **: impl_GNOME_Evolution_Addressbook_Book_getBookView ((or (beginswith "file_as"  "jre") (beginswith "full_name"  "jre") (beginswith "email"  "jre") (beginswith "nickname"  "jre") ))

e_data_book_respond_get_book_view
book_view file uref 
---------------------------------------------------------------------
started exchange-storeage....
performed steps to cause lock ..
  snipped bunched of empty space output to terminal.... my scroll buffer is set to 2500 lines, and it scrolled off the startup messages..

(evolution-exchange-storage:31134): exchange-mail-WARNING **: 
GC lookup failed: for delegator_entry - could not unmangle sender field
  
  
  
  
  snipped bunches of empty space output to terminal....

  
  
  
  
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + gal://Reid.Thompson;auth=Basic@sr002-2k3exc.ateb.com/gal
 => 0x80ec520
impl_GNOME_Evolution_Addressbook_Book_open (0x80ec520)
offlin==============
impl_GNOME_Evolution_Addressbook_BookFactory_getBook
 + exchange://Reid.Thompson;auth=Basic@sr002-2k3exc.ateb.com/;personal/Contacts
 => 0x80ec550
impl_GNOME_Evolution_Addressbook_Book_open (0x80ec550)
authenticate_user(0x85b0838, 0x80ec520, Reid.Thompson, Jak1e&magg1e, plain/password)
  
  
  
  
  
  

(evolution-exchange-storage:31134): libedata-book-WARNING **: impl_GNOME_Evolution_Addressbook_Book_getBookView ((or (beginswith "file_as"  "jre") (beginswith "full_name"  "jre") (beginswith "email"  "jre") (beginswith "nickname"  "jre") ))

e_data_book_respond_get_book_view
start book view
Mode:Remote
Not marked for offline or cache not there
start_book_view (0x80ec630)
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1806:start_book_view: (&(mail=*)(!(msExchHideFromAddressLists=TRUE))(|(displayName=jre*)(|(displayName=jre*)(sn=jre*)(givenName=jre*)(mailNickname=jre*))(mail=jre*)(mailNickname=jre*)))
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1820:start_book_view: starting 
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1831:start_book_view: 0
Connected and ldap is null sigh
adding search_op (0x80ec630, 3)
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1853:start_book_view: adding search 
start_book_view: Setting op 0x88361d8 in book 0x80ec630

(evolution-exchange-storage:31134): libedata-book-WARNING **: impl_GNOME_Evolution_Addressbook_Book_getBookView ((or (beginswith "file_as"  "jre") (beginswith "full_name"  "jre") (beginswith "email"  "jre") (beginswith "nickname"  "jre") ))

e_data_book_respond_get_book_view
  
looked up msgid 3, got op 0x88361d8
ldap_search_handler (0x80ec630)
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1591:ldap_search_handler: search handler 
../../../evolution-exchange/addressbook/e-book-backend-gal.c:1646:ldap_search_handler: o/p 0 0
ldap_search_dtor (0x80ec630)
ldap_search_dtor: Setting null inplace of 0x88361d8 in view 0x80ec630
stop_book_view (0x80ec630)
STOP BOOK VIEW: Getting op (nil) from view 0x80ec630
  
  
  
  
  
  
  
  
stop_book_view (0x80ec630)
STOP BOOK VIEW: Getting op (nil) from view 0x80ec630
  
Comment 15 Reid Thompson 2008-04-22 15:35:14 UTC
Created attachment 109698 [details]
evo-exchange-storage terminal output
Comment 16 Reid Thompson 2008-04-22 15:35:59 UTC
Created attachment 109699 [details]
eds terminal output
Comment 17 Reid Thompson 2008-04-22 15:36:46 UTC
ran same test as before but redirected all terminal output to the above attached files
Comment 18 Reid Thompson 2008-04-22 15:58:02 UTC
NOTE: on the attachment 109698 [details], you'll need to scroll down hundreds of "empty" lines to see all the output ( on initial load of the file as a web page it appears empty after the startup messages -- it's not ).
Comment 19 Milan Crha 2008-04-22 16:05:50 UTC
So I guess it didn't help, right? Hmm, it was just a thought, because it touched the probably-related code. Do I recall correctly, when you turn off autocompletion on the GAL address book, then everything works fine? I just want to know which direction look... (btw take care of your passwords, those output are sometimes very horrible in security question, I'm sorry) :(
Comment 20 Reid Thompson 2008-04-22 16:35:18 UTC
Correct -- it did not help.  If I turn off auto-complete on Contacts everything works fine.  I can use autocomplete with any combination of Personal and Global Adddress List.  It is Contacts that appears to trigger the issue.  Contacts used alone, or in any combination with Personal and/or Global Address List results in a lockup.

Yeah -- i've noticed that.  Have had to change my password a couple of times because of it && I still keep forgetting to check debug output prior to posting
Comment 21 Milan Crha 2008-04-22 16:39:11 UTC
Can you use Contacts in Address book? I mean to normal work except autocompletion? These Contacts come from exchange, right?
Comment 22 Reid Thompson 2008-04-22 17:32:01 UTC
arrrrgghhhh -- sorry, it looks like I messed up reverting the patches.  It DOES appear that reverting the patches fixes the issue.

With these diffs in EDS exchange-account.c and EEX exchange-storage.c, I can utilize autocomplete with Contacts again:

rthompso@raker ~/evo-src/evolution-data-server $ svn -x-wb diff -r HEAD
Index: servers/exchange/storage/exchange-account.c
===================================================================
--- servers/exchange/storage/exchange-account.c (revision 8670)
+++ servers/exchange/storage/exchange-account.c (working copy)
@@ -71,6 +71,7 @@
        GHashTable *hierarchies_by_folder, *foreign_hierarchies;
        ExchangeHierarchy *favorites_hierarchy;
        GHashTable *folders, *fresh_folders;
+       GStaticRecMutex folders_lock;
        char *uri_authority, *http_uri_schema;
        gboolean uris_use_email, offline_sync;
 
@@ -154,6 +155,7 @@
        account->priv->foreign_hierarchies = g_hash_table_new (g_str_hash, g_str_equal);
        account->priv->folders = g_hash_table_new (g_str_hash, g_str_equal);
        account->priv->fresh_folders = NULL;
+       g_static_rec_mutex_init (&account->priv->folders_lock);
        account->priv->discover_data_lock = g_mutex_new ();
        account->priv->account_online = UNSUPPORTED_MODE;
        account->priv->nt_domain = NULL;
@@ -205,17 +207,19 @@
                account->priv->hierarchies = NULL;
        }
 
-       if (account->priv->hierarchies_by_folder) {
-               g_hash_table_destroy (account->priv->hierarchies_by_folder);
-               account->priv->hierarchies_by_folder = NULL;
-       }
-
        if (account->priv->foreign_hierarchies) {
                g_hash_table_foreach (account->priv->foreign_hierarchies, free_name, NULL);
                g_hash_table_destroy (account->priv->foreign_hierarchies);
                account->priv->foreign_hierarchies = NULL;
        }
 
+       g_static_rec_mutex_lock (&account->priv->folders_lock);
+
+       if (account->priv->hierarchies_by_folder) {
+               g_hash_table_destroy (account->priv->hierarchies_by_folder);
+               account->priv->hierarchies_by_folder = NULL;
+       }
+
        if (account->priv->folders) {
                g_hash_table_foreach (account->priv->folders, free_folder, NULL);
                g_hash_table_destroy (account->priv->folders);
@@ -228,6 +232,8 @@
                account->priv->fresh_folders = NULL;
        }
 
+       g_static_rec_mutex_unlock (&account->priv->folders_lock);
+
        G_OBJECT_CLASS (parent_class)->dispose (object);
 }
 
@@ -303,6 +309,8 @@
        if (account->priv->discover_data_lock)
                g_mutex_free (account->priv->discover_data_lock);
 
+       g_static_rec_mutex_free (&account->priv->folders_lock);
+
        g_free (account->priv);
 
        G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -320,6 +328,7 @@
 
        g_return_if_fail (EXCHANGE_IS_ACCOUNT (account));
 
+       g_static_rec_mutex_lock (&account->priv->folders_lock);
        if (account->priv->fresh_folders) {
                g_hash_table_foreach (account->priv->fresh_folders, free_folder, NULL);
                g_hash_table_destroy (account->priv->fresh_folders);
@@ -339,6 +348,7 @@
                                                toplevel, account->priv->account_online);
                exchange_hierarchy_rescan (account->priv->hierarchies->pdata[i]);
        }
+       g_static_rec_mutex_unlock (&account->priv->folders_lock);
 }
 
 /*
@@ -354,6 +364,8 @@
                e_folder_exchange_get_permanent_uri (folder);
        char *key;
 
+       g_static_rec_mutex_lock (&account->priv->folders_lock);
+
        /* This makes the cleanup easier. We just unref it each time
         * we find it in account->priv->folders.
         */
@@ -411,8 +423,11 @@
        {
                g_hash_table_insert (account->priv->hierarchies_by_folder,
                                        folder, hier);
+               g_static_rec_mutex_unlock (&account->priv->folders_lock);
 
                g_signal_emit (account, signals[NEW_FOLDER], 0, folder);
+       } else {
+               g_static_rec_mutex_unlock (&account->priv->folders_lock);
        }
 }
 
@@ -420,9 +435,12 @@
 hierarchy_removed_folder (ExchangeHierarchy *hier, EFolder *folder,
                          ExchangeAccount *account)
 {
+       g_static_rec_mutex_lock (&account->priv->folders_lock);
        if (!g_hash_table_lookup (account->priv->folders,
-                                       e_folder_exchange_get_path (folder)))
+                                       e_folder_exchange_get_path (folder))) {
+               g_static_rec_mutex_unlock (&account->priv->folders_lock);
                return;
+       }
 
        g_hash_table_remove (account->priv->folders,
                                        e_folder_exchange_get_path (folder));
@@ -435,6 +453,7 @@
                                        e_folder_exchange_get_internal_uri (folder));
        }
        g_hash_table_remove (account->priv->hierarchies_by_folder, folder);
+       g_static_rec_mutex_unlock (&account->priv->folders_lock);
        g_signal_emit (account, signals[REMOVED_FOLDER], 0, folder);
 
        if (folder == hier->toplevel)
@@ -451,11 +470,15 @@
 get_folder (ExchangeAccount *account, const char *path,
            EFolder **folder, ExchangeHierarchy **hier)
 {
+       g_static_rec_mutex_lock (&account->priv->folders_lock);
        *folder = g_hash_table_lookup (account->priv->folders, path);
-       if (!*folder)
+       if (!*folder) {
+               g_static_rec_mutex_unlock (&account->priv->folders_lock);
                return FALSE;
+       }
        *hier = g_hash_table_lookup (account->priv->hierarchies_by_folder,
                                     *folder);
+       g_static_rec_mutex_unlock (&account->priv->folders_lock);
        if (!*hier)
                return FALSE;
        return TRUE;
@@ -471,15 +494,19 @@
        if (!name)
                return FALSE;
 
+       g_static_rec_mutex_lock (&account->priv->folders_lock);
        parent_path = g_strndup (*path, name - *path);
        *parent = g_hash_table_lookup (account->priv->folders, parent_path);
        g_free (parent_path);
 
-       if (!*parent)
+       if (!*parent) {
+               g_static_rec_mutex_unlock (&account->priv->folders_lock);
                return FALSE;
+       }
 
        *hier = g_hash_table_lookup (account->priv->hierarchies_by_folder,
                                     *parent);
+       g_static_rec_mutex_unlock (&account->priv->folders_lock);
        if (!*hier)
                return FALSE;
 
@@ -845,15 +872,20 @@
 {
        EFolder *folder;
 
+       g_static_rec_mutex_lock (&account->priv->folders_lock);
        folder = g_hash_table_lookup (account->priv->folders, old_uri);
-       if (!folder)
+       if (!folder) {
+               g_static_rec_mutex_unlock (&account->priv->folders_lock);
                return;
+       }
 
        g_hash_table_remove (account->priv->folders, old_uri);
        e_folder_exchange_set_internal_uri (folder, new_uri);
        g_hash_table_insert (account->priv->folders,
                             (char *)e_folder_exchange_get_internal_uri (folder),
                             folder);
+
+       g_static_rec_mutex_unlock (&account->priv->folders_lock);
 }
 
 static void
@@ -1858,11 +1890,17 @@
 exchange_account_get_folder (ExchangeAccount *account,
                             const char *path_or_uri)
 {
+       EFolder *folder;
+
        g_return_val_if_fail (EXCHANGE_IS_ACCOUNT (account), NULL);
 
        if (!path_or_uri)
                return NULL;
-       return g_hash_table_lookup (account->priv->folders, path_or_uri);
+       g_static_rec_mutex_lock (&account->priv->folders_lock);
+       folder = g_hash_table_lookup (account->priv->folders, path_or_uri);
+       g_static_rec_mutex_unlock (&account->priv->folders_lock);
+
+       return folder;
 }
 
 static int
@@ -1930,11 +1968,13 @@
        g_return_val_if_fail (EXCHANGE_IS_ACCOUNT (account), NULL);
 
        folders = g_ptr_array_new ();
+       g_static_rec_mutex_lock (&account->priv->folders_lock);
        /*      if (account->priv->fresh_folders)
                g_hash_table_foreach (account->priv->fresh_folders, add_folder, folders);
        else
        */
                g_hash_table_foreach (account->priv->folders, add_folder, folders);
+       g_static_rec_mutex_unlock (&account->priv->folders_lock);
 
        qsort (folders->pdata, folders->len,
               sizeof (EFolder *), folder_comparator);
@@ -1975,11 +2015,13 @@
        fld_tree->path = path;
        fld_tree->folders = folders;
 
+       g_static_rec_mutex_lock (&account->priv->folders_lock);
        /*      if (account->priv->fresh_folders)
                g_hash_table_foreach (account->priv->fresh_folders, add_folder, folders);
        else
        */
        g_hash_table_foreach (account->priv->folders, add_folder_tree, fld_tree);
+       g_static_rec_mutex_unlock (&account->priv->folders_lock);
 
        qsort (folders->pdata, folders->len,
               sizeof (EFolder *), folder_comparator);
-----------------------------------------------------------------
rthompso@raker ~/evo-src/evolution-exchange $ svn -x-wb diff -r HEAD
Index: ChangeLog
===================================================================
--- ChangeLog   (revision 1623)
+++ ChangeLog   (working copy)
@@ -1,3 +1,10 @@
+2008-04-22  Milan Crha  <mcrha@redhat.com>
+
+       ** Fix for bug #528411
+
+       * storage/exchange-storage.c: (account_new_folder):
+       Increase ref count on the folder when passing to storage.
+
 2008-04-17  Milan Crha  <mcrha@redhat.com>
 
        ** Fix for bug #526740
Index: storage/exchange-storage.c
===================================================================
--- storage/exchange-storage.c  (revision 1623)
+++ storage/exchange-storage.c  (working copy)
@@ -129,7 +129,11 @@
 {
        const char *path = e_folder_exchange_get_path (folder);
 
-       e_storage_new_folder (storage, path, folder);
+       if (!e_storage_new_folder (storage, path, g_object_ref (folder))) {
+               g_object_unref (folder);
+               return;
+       }
+
        if (e_folder_exchange_get_has_subfolders (folder)) {
                e_storage_declare_has_subfolders (storage, path,
                                                  _("Searching..."));
Comment 23 Reid Thompson 2008-04-22 18:21:55 UTC
Full stop.
It appears that bringing all components back to HEAD does not break anything.
I'm going to completely remove my build environment and rebuild.  I'll post back the results from a completely new build from svn HEAD.
Comment 24 Reid Thompson 2008-04-22 19:37:40 UTC
Issue does not appear to exist in completely noew build from svn head.
Closing this ticket.  Apparently an issue with my build or run environment.
Not sure if this should should be closed as FIXED, or INVALID, or... I'll note it as FIXED, if it needs to be something else let me know.
Comment 25 Milan Crha 2008-04-23 08:03:18 UTC
Good it works now. I think because we didn't do anything in the code to fix this, then I'll suggest to change the resolution to NotABug.