GNOME Bugzilla – Bug 781777
Use-after-free in soup_connection_connect_async():soup-connection.c:396
Last modified: 2018-09-13 08:56:42 UTC
This is git master of libsoup at commit 2f103bc, built with address sanitizer, while trying to reproduce a claim from bug #781590 comment #10. This happens when running evolution with an EWS account enabled and opening message composer and starting a search for an existing contact in the Global Address List (GAL) address book from EWS. Backtrace is below the ASAN report, but I do not know how it'll be parsed by the backtrace parser, thus eventually expand the backtrace to see the whole story. ==12235==ERROR: AddressSanitizer: heap-use-after-free on address 0x60b000295170 at pc 0x7fde8c2e25d0 bp 0x7fde54bf04b0 sp 0x7fde54bf04a0 WRITE of size 8 at 0x60b000295170 thread T44 #0 0x7fde8c2e25cf in soup_connection_connect_async .../libsoup/soup-connection.c:396 #1 0x7fde8c35efe6 in get_connection .../libsoup/soup-session.c:1938 #2 0x7fde8c35f2ee in soup_session_process_queue_item .../libsoup/soup-session.c:1965 #3 0x7fde8c3601a3 in async_run_queue .../libsoup/soup-session.c:2065 #4 0x7fde8c360308 in idle_run_queue .../libsoup/soup-session.c:2092 #5 0x7fde93f39048 in g_idle_dispatch .../glib-2.50.2/glib/gmain.c:5545 #6 0x7fde93f2fabc in g_main_dispatch .../glib-2.50.2/glib/gmain.c:3203 #7 0x7fde93f33f4c in g_main_context_dispatch .../glib-2.50.2/glib/gmain.c:3856 #8 0x7fde93f34522 in g_main_context_iterate .../glib-2.50.2/glib/gmain.c:3929 #9 0x7fde93f35074 in g_main_loop_run .../glib-2.50.2/glib/gmain.c:4125 #10 0x7fde747d3e4e in e_ews_soup_thread .../evolutionews/src/server/e-ews-connection.c:1734 #11 0x7fde93fb5049 in g_thread_proxy .../glib-2.50.2/glib/gthread.c:784 #12 0x7fde95ec66c9 in start_thread (/lib64/libpthread.so.0+0x76c9) #13 0x7fde929d1f7e in clone (/lib64/libc.so.6+0x107f7e) 0x60b000295170 is located 0 bytes inside of 104-byte region [0x60b000295170,0x60b0002951d8) freed by thread T58 here: #0 0x7fde96ebbb00 in free (/usr/lib64/libasan.so.3+0xc6b00) #1 0x7fde93f4a47c in g_free .../glib-2.50.2/glib/gmem.c:189 #2 0x7fde93f95eff in g_slice_free1 .../glib-2.50.2/glib/gslice.c:1136 #3 0x7fde9463b94f in g_type_free_instance .../glib-2.50.2/gobject/gtype.c:1943 #4 0x7fde945ff841 in g_object_unref .../glib-2.50.2/gobject/gobject.c:3215 #5 0x7fde8c358d1f in soup_session_set_item_connection .../libsoup/soup-session.c:1226 #6 0x7fde8c35acbb in soup_session_unqueue_item .../libsoup/soup-session.c:1479 #7 0x7fde8c35fae8 in soup_session_process_queue_item .../libsoup/soup-session.c:2023 #8 0x7fde8c36c14c in soup_session_async_cancel_message .../libsoup/soup-session-async.c:132 #9 0x7fde8c362384 in soup_session_cancel_message .../libsoup/soup-session.c:2451 #10 0x7fde8c36266d in soup_session_real_flush_queue .../libsoup/soup-session.c:2476 #11 0x7fde8c362bee in soup_session_abort .../libsoup/soup-session.c:2532 #12 0x7fde8c353906 in set_proxy_resolver .../libsoup/soup-session.c:627 #13 0x7fde8c353a4a in soup_session_set_property .../libsoup/soup-session.c:652 #14 0x7fde945f4bdd in object_set_property .../glib-2.50.2/gobject/gobject.c:1423 #15 0x7fde945fbd6d in g_object_set_property .../glib-2.50.2/gobject/gobject.c:2371 #16 0x7fde945cf62b in on_source_notify .../glib-2.50.2/gobject/gbinding.c:327 #17 0x7fde945eb6e7 in g_cclosure_marshal_VOID__PARAM .../glib-2.50.2/gobject/gmarshal.c:1832 #18 0x7fde945deb48 in g_closure_invoke .../glib-2.50.2/gobject/gclosure.c:804 #19 0x7fde9462b658 in signal_emit_unlocked_R .../glib-2.50.2/gobject/gsignal.c:3635 #20 0x7fde9462941b in g_signal_emit_valist .../glib-2.50.2/gobject/gsignal.c:3391 #21 0x7fde9462a217 in g_signal_emit .../glib-2.50.2/gobject/gsignal.c:3447 #22 0x7fde945f354f in g_object_dispatch_properties_changed .../glib-2.50.2/gobject/gobject.c:1064 #23 0x7fde945ef9ab in g_object_notify_queue_thaw .../glib-2.50.2/gobject/gobject.c:296 #24 0x7fde945fbd80 in g_object_set_property .../glib-2.50.2/gobject/gobject.c:2374 #25 0x7fde945cf62b in on_source_notify .../glib-2.50.2/gobject/gbinding.c:327 #26 0x7fde945d3129 in g_object_bind_property_full .../glib-2.50.2/gobject/gbinding.c:956 #27 0x7fde945d317d in g_object_bind_property .../glib-2.50.2/gobject/gbinding.c:1007 #28 0x7fde8d486a2b in camel_binding_bind_property .../evolution-data-server/src/camel/camel.c:296 #29 0x7fde9142a165 in e_binding_bind_property .../evolution-data-server/src/libedataserver/e-data-server-util.c:1432 previously allocated by thread T44 here: #0 0x7fde96ebbe60 in malloc (/usr/lib64/libasan.so.3+0xc6e60) #1 0x7fde93f4a313 in g_malloc .../glib-2.50.2/glib/gmem.c:94 #2 0x7fde93f95c0c in g_slice_alloc .../glib-2.50.2/glib/gslice.c:1025 #3 0x7fde93f95c4c in g_slice_alloc0 .../glib-2.50.2/glib/gslice.c:1051 #4 0x7fde9463a3ac in g_type_create_instance .../glib-2.50.2/gobject/gtype.c:1848 #5 0x7fde945f6dc3 in g_object_new_internal .../glib-2.50.2/gobject/gobject.c:1783 #6 0x7fde945f8c6c in g_object_new_valist .../glib-2.50.2/gobject/gobject.c:2042 #7 0x7fde945f63d3 in g_object_new .../glib-2.50.2/gobject/gobject.c:1626 #8 0x7fde8c35db6f in get_connection_for_host .../libsoup/soup-session.c:1841 #9 0x7fde8c35ea5e in get_connection .../libsoup/soup-session.c:1898 #10 0x7fde8c35f2ee in soup_session_process_queue_item .../libsoup/soup-session.c:1965 #11 0x7fde8c3601a3 in async_run_queue .../libsoup/soup-session.c:2065 #12 0x7fde8c360308 in idle_run_queue .../libsoup/soup-session.c:2092 #13 0x7fde93f39048 in g_idle_dispatch .../glib-2.50.2/glib/gmain.c:5545 #14 0x7fde93f2fabc in g_main_dispatch .../glib-2.50.2/glib/gmain.c:3203 #15 0x7fde93f33f4c in g_main_context_dispatch .../glib-2.50.2/glib/gmain.c:3856 #16 0x7fde93f34522 in g_main_context_iterate .../glib-2.50.2/glib/gmain.c:3929 #17 0x7fde93f35074 in g_main_loop_run .../glib-2.50.2/glib/gmain.c:4125 #18 0x7fde747d3e4e in e_ews_soup_thread .../evolutionews/src/server/e-ews-connection.c:1734 #19 0x7fde93fb5049 in g_thread_proxy .../glib-2.50.2/glib/gthread.c:784 #20 0x7fde95ec66c9 in start_thread (/lib64/libpthread.so.0+0x76c9) Thread T44 created by T43 here: #0 0x7fde96e26488 in __interceptor_pthread_create (/usr/lib64/libasan.so.3+0x31488) #1 0x7fde9402262b in g_system_thread_new .../glib-2.50.2/glib/gthread-posix.c:1170 #2 0x7fde93fb531f in g_thread_new_internal .../glib-2.50.2/glib/gthread.c:874 #3 0x7fde93fb5179 in g_thread_new .../glib-2.50.2/glib/gthread.c:827 #4 0x7fde747d442f in e_ews_connection_init .../evolutionews/src/server/e-ews-connection.c:1801 #5 0x7fde9463a8ad in g_type_create_instance .../glib-2.50.2/gobject/gtype.c:1866 #6 0x7fde945f8e3d in g_object_constructor .../glib-2.50.2/gobject/gobject.c:2068 #7 0x7fde747d3845 in ews_connection_constructor .../evolutionews/src/server/e-ews-connection.c:1641 #8 0x7fde945f68b8 in g_object_new_with_custom_constructor .../glib-2.50.2/gobject/gobject.c:1701 #9 0x7fde945f6d70 in g_object_new_internal .../glib-2.50.2/gobject/gobject.c:1781 #10 0x7fde945f8c6c in g_object_new_valist .../glib-2.50.2/gobject/gobject.c:2042 #11 0x7fde945f63d3 in g_object_new .../glib-2.50.2/gobject/gobject.c:1626 #12 0x7fde747d6648 in e_ews_connection_new_full .../evolutionews/src/server/e-ews-connection.c:2173 #13 0x7fde747d6d4c in e_ews_connection_new .../evolutionews/src/server/e-ews-connection.c:2217 #14 0x7fde5f0482d2 in e_book_backend_ews_authenticate_sync .../evolutionews/src/addressbook/e-book-backend-ews.c:4256 #15 0x7fde930991ee in e_backend_authenticate_sync .../evolution-data-server/src/libebackend/e-backend.c:254 #16 0x7fde930998d9 in backend_source_authenticate_thread .../evolution-data-server/src/libebackend/e-backend.c:315 #17 0x7fde93fb5049 in g_thread_proxy .../glib-2.50.2/glib/gthread.c:784 #18 0x7fde95ec66c9 in start_thread (/lib64/libpthread.so.0+0x76c9) Thread T43 created by T5 here: #0 0x7fde96e26488 in __interceptor_pthread_create (/usr/lib64/libasan.so.3+0x31488) #1 0x7fde9402262b in g_system_thread_new .../glib-2.50.2/glib/gthread-posix.c:1170 #2 0x7fde93fb531f in g_thread_new_internal .../glib-2.50.2/glib/gthread.c:874 #3 0x7fde93fb5179 in g_thread_new .../glib-2.50.2/glib/gthread.c:827 #4 0x7fde9309f5db in e_backend_schedule_authenticate .../evolution-data-server/src/libebackend/e-backend.c:1224 #5 0x7fde9309a099 in backend_source_authenticate_cb .../evolution-data-server/src/libebackend/e-backend.c:403 #6 0x7fde945ebd33 in g_cclosure_marshal_VOID__BOXED .../glib-2.50.2/gobject/gmarshal.c:1910 #7 0x7fde945deb48 in g_closure_invoke .../glib-2.50.2/gobject/gclosure.c:804 #8 0x7fde9462b658 in signal_emit_unlocked_R .../glib-2.50.2/gobject/gsignal.c:3635 #9 0x7fde9462941b in g_signal_emit_valist .../glib-2.50.2/gobject/gsignal.c:3391 #10 0x7fde9462a217 in g_signal_emit .../glib-2.50.2/gobject/gsignal.c:3447 #11 0x7fde91384b31 in source_dbus_authenticate_cb .../evolution-data-server/src/libedataserver/e-source.c:1021 #12 0x7fde90fc6c57 in ffi_call_unix64 (/lib64/libffi.so.6+0x5c57) #13 0x7fde76bf81ff (<unknown module>) Thread T5 created by T0 here: #0 0x7fde96e26488 in __interceptor_pthread_create (/usr/lib64/libasan.so.3+0x31488) #1 0x7fde9402262b in g_system_thread_new .../glib-2.50.2/glib/gthread-posix.c:1170 #2 0x7fde93fb531f in g_thread_new_internal .../glib-2.50.2/glib/gthread.c:874 #3 0x7fde93fb5179 in g_thread_new .../glib-2.50.2/glib/gthread.c:827 #4 0x7fde913e4706 in source_registry_initable_init .../evolution-data-server/src/libedataserver/e-source-registry.c:1385 #5 0x7fde94db7473 in g_initable_init .../glib-2.50.2/gio/ginitable.c:112 #6 0x7fde913e5ab2 in e_source_registry_new_sync .../evolution-data-server/src/libedataserver/e-source-registry.c:1767 #7 0x7fde930e8240 in subprocess_factory_initable_init .../evolution-data-server/src/libebackend/e-subprocess-factory.c:160 #8 0x7fde9595a563 in subprocess_book_factory_initable_init .../evolution-data-server/src/addressbook/libedata-book/e-subprocess-book-factory.c:394 #9 0x7fde94db7473 in g_initable_init .../glib-2.50.2/gio/ginitable.c:112 #10 0x7fde94db7732 in g_initable_new_valist .../glib-2.50.2/gio/ginitable.c:228 #11 0x7fde94db75a4 in g_initable_new .../glib-2.50.2/gio/ginitable.c:146 #12 0x7fde9595a68c in e_subprocess_book_factory_new .../evolution-data-server/src/addressbook/libedata-book/e-subprocess-book-factory.c:415 #13 0x40238b in main .../evolution-data-server/src/addressbook/libedata-book/evolution-addressbook-factory-subprocess.c:191 #14 0x7fde928ea400 in __libc_start_main (/lib64/libc.so.6+0x20400) Thread T58 created by T5 here: #0 0x7fde96e26488 in __interceptor_pthread_create (/usr/lib64/libasan.so.3+0x31488) #1 0x7fde9402262b in g_system_thread_new .../glib-2.50.2/glib/gthread-posix.c:1170 #2 0x7fde93fb531f in g_thread_new_internal .../glib-2.50.2/glib/gthread.c:874 #3 0x7fde93fb5179 in g_thread_new .../glib-2.50.2/glib/gthread.c:827 #4 0x7fde9309f5db in e_backend_schedule_authenticate .../evolution-data-server/src/libebackend/e-backend.c:1224 #5 0x7fde9309a099 in backend_source_authenticate_cb .../evolution-data-server/src/libebackend/e-backend.c:403 #6 0x7fde945ebd33 in g_cclosure_marshal_VOID__BOXED .../glib-2.50.2/gobject/gmarshal.c:1910 #7 0x7fde945deb48 in g_closure_invoke .../glib-2.50.2/gobject/gclosure.c:804 #8 0x7fde9462b658 in signal_emit_unlocked_R .../glib-2.50.2/gobject/gsignal.c:3635 #9 0x7fde9462941b in g_signal_emit_valist .../glib-2.50.2/gobject/gsignal.c:3391 #10 0x7fde9462a217 in g_signal_emit .../glib-2.50.2/gobject/gsignal.c:3447 #11 0x7fde91384b31 in source_dbus_authenticate_cb .../evolution-data-server/src/libedataserver/e-source.c:1021 #12 0x7fde90fc6c57 in ffi_call_unix64 (/lib64/libffi.so.6+0x5c57) #13 0x7fde76bf81ff (<unknown module>) SUMMARY: AddressSanitizer: heap-use-after-free .../libsoup/soup-connection.c:396 in soup_connection_connect_async Shadow bytes around the buggy address: 0x0c168004a9d0: fa fa fa fa fa fa 00 00 00 00 00 00 00 00 00 00 0x0c168004a9e0: 00 00 05 fa fa fa fa fa fa fa fa fa fd fd fd fd 0x0c168004a9f0: fd fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa 0x0c168004aa00: fa fa fd fd fd fd fd fd fd fd fd fd fd fd fd fa 0x0c168004aa10: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd =>0x0c168004aa20: fd fd fd fd fd fd fa fa fa fa fa fa fa fa[fd]fd 0x0c168004aa30: fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa 0x0c168004aa40: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd 0x0c168004aa50: fd fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c168004aa60: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c168004aa70: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Heap right redzone: fb Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack partial redzone: f4 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb ==12235==ABORTING Backtrace:
+ Trace 237393
Thread 8 (Thread 0x7fde54bf1700 (LWP 12411))
After commit 8d337030b, I think this shouldn't be reproducible. Can you confirm this? I don't see the soup_session_abort() call there anymore so this shouldn't be happening ...
I see, that change had been done 5 days after the commit mentioned at comment #0. I'll try to reproduce it here.
Okay, I cannot reproduce with git gnome-3-28 at commit 578f7d80452976 (which denotes 2.62.3).