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 611663 - CALDAV_DEBUG=all and authenticating proxy causes segfault
CALDAV_DEBUG=all and authenticating proxy causes segfault
Status: RESOLVED FIXED
Product: libsoup
Classification: Core
Component: Misc
2.28.x
Other Linux
: Normal critical
: ---
Assigned To: libsoup-maint@gnome.bugs
libsoup-maint@gnome.bugs
evolution[caldav]
Depends on:
Blocks:
 
 
Reported: 2010-03-03 01:38 UTC by Brian J. Murrell
Modified: 2010-04-10 16:19 UTC
See Also:
GNOME target: ---
GNOME version: 2.27/2.28



Description Brian J. Murrell 2010-03-03 01:38:13 UTC
Using gnome-2-28 in fact.

I am trying to debug proxies and CalDAV.  I got some wonderful help on #evolution regarding http://wiki.davical.org/w/CalDAV_Clients/Evolution which showed me:

$ export CALDAV_DEBUG=all

and that is great with one exception.  If the proxy one wants to use allows the SOUP connection through the proxy without authorization, all goes fine and in fact CalDAV (using Google's calendar as the sample server) through a proxy works fine.

When the proxy requires authorization, it doesn't work (but this is not the bug I am filing -- that one is filed already) so I was going to use "CALDAV_DEBUG=all" to help debug, but e-d-s segfaults after displaying the "407" (authorization required) response from the proxy server.

Witness:

> CONNECT www.google.com:443 HTTP/1.1
> Soup-Debug-Timestamp: 1267579836
> Soup-Debug: SoupSessionSync 1 (0x8548808), SoupMessage 1 (0x86ad750), SoupSocket 1 (0x85488b8)
> Host: www.google.com
  
< HTTP/1.0 407 Proxy Authentication Required
< Soup-Debug-Timestamp: 1267579836
< Soup-Debug: SoupMessage 1 (0x86ad750)
< Server: squid/3.1.0.14
< Mime-Version: 1.0
< Date: Wed, 03 Mar 2010 01:30:36 GMT
< Content-Type: text/html
< Content-Length: 3048
< X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0
< Vary: Accept-Language
< Content-Language: en
< Proxy-Authenticate: Negotiate
< Proxy-Authenticate: Basic realm="Squid proxy-caching web server"
< X-Cache: MISS from proxy
< X-Cache-Lookup: NONE from proxy:3128
< Via: 1.0 proxy (squid/3.1.0.14)
< Proxy-Connection: close
< 
< <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
< <html><head>
< <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
< <title>ERROR: Cache Access Denied</title>
[ HTML body content informing the user of the cache access being denied deleted ]
< 
< <br>
< </div>
< 
< <hr> 
< <div id="footer">
< <p>Generated Wed, 03 Mar 2010 01:30:36 GMT by proxy (squid/3.1.0.14)</p>
< <!-- ERR_CACHE_ACCESS_DENIED -->
< </div>
< </body></html>
  
in server_log_handler

(process:18635): GLib-GObject-CRITICAL **: g_object_get_qdata: assertion `G_IS_OBJECT (object)' failed
Segmentation fault (core dumped)

The stacktrace of the segfault:

  • #0 soup_logger_set_id
    at soup-logger.c line 339
  • #1 request_started
    at soup-logger.c line 652
  • #2 request_started
    at soup-session-feature.c line 106
  • #3 soup_marshal_VOID__OBJECT_OBJECT
    at soup-marshal.c line 90
  • #4 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.22.3/gobject/gclosure.c line 767
  • #5 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c line 3247
  • #6 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c line 2980
  • #7 IA__g_signal_emit
    at /build/buildd/glib2.0-2.22.3/gobject/gsignal.c line 3037
  • #8 soup_session_send_queue_item
    at soup-session.c line 957
  • #9 tunnel_connect
    at soup-session-sync.c line 147
  • #10 wait_for_connection
    at soup-session-sync.c line 224
  • #11 process_queue_item
    at soup-session-sync.c line 258
  • #12 send_message
    at soup-session-sync.c line 322
  • #13 soup_session_send_message
    at soup-session.c line 1366
  • #14 send_and_handle_redirection
    at e-cal-backend-caldav.c line 897
  • #15 caldav_server_open_calendar
    at e-cal-backend-caldav.c line 950
  • #16 caldav_do_open
    at e-cal-backend-caldav.c line 2365
  • #17 e_cal_backend_sync_open
    at e-cal-backend-sync.c line 187
  • #18 _e_cal_backend_open
    at e-cal-backend-sync.c line 707
  • #19 e_cal_backend_open
    at e-cal-backend.c line 650
  • #20 impl_Cal_open
    at e-data-cal.c line 80
  • #21 _ORBIT_skel_small_GNOME_Evolution_Calendar_Cal_open
    at Evolution-DataServer-Calendar-common.c line 44
  • #22 ORBit_POAObject_invoke
    at poa.c line 1148
  • #23 ORBit_OAObject_invoke
    at orbit-adaptor.c line 340
  • #24 ORBit_small_invoke_adaptor
    at orbit-small.c line 846
  • #25 ORBit_POAObject_handle_request
    at poa.c line 1357
  • #26 ORBit_POAObject_invoke_incoming_request
    at poa.c line 1427
  • #27 giop_thread_queue_process
    at giop.c line 792
  • #28 giop_request_handler_thread
    at giop.c line 502
  • #29 g_thread_pool_thread_proxy
    at /build/buildd/glib2.0-2.22.3/glib/gthreadpool.c line 265
  • #30 g_thread_create_proxy
    at /build/buildd/glib2.0-2.22.3/glib/gthread.c line 635
  • #31 start_thread
    at pthread_create.c line 300
  • #32 clone
    at ../sysdeps/unix/sysv/linux/i386/clone.S line 130

The socket=0x0 in frame 2 and frame 1 becomes an object=0x0 in frame 0 which is what causes the segfault.
Comment 1 Milan Crha 2010-03-19 18:47:22 UTC
Thanks for a bug report. The crash itself is in a soup logger, the object eds is using, but not controlling, thus I'm moving this bug to libsoup.
Comment 2 Dan Winship 2010-04-10 16:19:23 UTC
fixed in master. will go into libsoup 2.30.1