Uploaded image for project: 'Couchbase C client library libcouchbase'
  1. Couchbase C client library libcouchbase
  2. CCBC-1215

Intermittent segfault using exists

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 3.0.2
    • 3.0.1
    • None
    • None
    • 1

    Description

      The python bindings call lcb_exists, and deep in there, at the end of the callback, we get a segfault when assembling the spans. Here's a stack trace from lldb, plus some relevant info on the frames:

      (lldb) thread backtrace
      * thread #2, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x1)
          frame #0: 0x00000001025bdba7 libcouchbase.2.dylib`::lcbtrace_span_add_tag_uint64(lcbtrace_SPAN *, const char *, uint64_t) [inlined] sllist_append(list=0x000000010060d3d8, item=0x000000010060d3d0) at sllist-inl.h:148:26
          frame #1: 0x00000001025bdb9e libcouchbase.2.dylib`::lcbtrace_span_add_tag_uint64(lcbtrace_SPAN *, const char *, uint64_t) [inlined] lcb::trace::Span::add_tag(this=0x000000010060d390, name="couchbase.context_info", copy=1, value=4404019552) at span.cc:409
        * frame #2: 0x00000001025bdb6e libcouchbase.2.dylib`::lcbtrace_span_add_tag_uint64(span=0x000000010060d390, name="couchbase.context_info", value=4404019552) at span.cc:99
          frame #3: 0x00000001024de043 _libcouchbase.cpython-37m-darwin.so`pycbc_propagate_context_info(span=0x00000001023422d0, dest=0x000000010060d390) at ext.c:2581:5
          frame #4: 0x00000001024de9e7 _libcouchbase.cpython-37m-darwin.so`pycbc_span_report(tracer=0x000000010234b940, span=0x00000001023422d0) at ext.c:2761:5
          frame #5: 0x00000001025bd826 libcouchbase.2.dylib`::lcbtrace_span_finish(lcbtrace_SPAN *, uint64_t) [inlined] lcb::trace::Span::finish(this=0x00000001023422d0, now=<unavailable>) at span.cc:366:9
          frame #6: 0x00000001025bd801 libcouchbase.2.dylib`::lcbtrace_span_finish(span=0x00000001023422d0, now=<unavailable>) at span.cc:71
          frame #7: 0x00000001025772be libcouchbase.2.dylib`::mcreq_dispatch_response(mc_PIPELINE *, mc_PACKET *, lcb::MemcachedResponse *, lcb_STATUS) at handler.cc:481:5
          frame #8: 0x0000000102577118 libcouchbase.2.dylib`::mcreq_dispatch_response(pipeline=0x0000000100462cd0, req=<unavailable>, res=0x00007ffeefbfdff0, immerr=LCB_SUCCESS) at handler.cc:1201
          frame #9: 0x00000001025aeaf9 libcouchbase.2.dylib`lcb::Server::try_read(this=0x0000000100462cd0, ctx=<unavailable>, ior=0x00000001021178f8) at mcserver.cc:0
          frame #10: 0x00000001025b02ae libcouchbase.2.dylib`on_read(ctx=0x00000001021178b0, (null)=<unavailable>) at mcserver.cc:579:26
          frame #11: 0x0000000102548cf9 libcouchbase.2.dylib`E_handler [inlined] invoke_read_cb(ctx=<unavailable>, nb=47) at ctx.c:255:5
          frame #12: 0x0000000102548cde libcouchbase.2.dylib`E_handler(sock=<unavailable>, which=2, arg=0x00000001021178b0) at ctx.c:282
          frame #13: 0x0000000102532122 libcouchbase.2.dylib`run_loop(io=0x00000001023426c0, is_tick=0) at plugin-select.c:309:17
          frame #14: 0x00000001025bd6dd libcouchbase.2.dylib`::lcb_wait(instance=0x0000000102342c00, flags=<unavailable>) at wait.cc:109:5
          frame #15: 0x00000001024f1624 _libcouchbase.cpython-37m-darwin.so`pycbc_oputil_wait_common(self=0x0000000104c78d70, context=0x000000010060bf20) at oputil.c:702:5
          frame #16: 0x00000001024f145c _libcouchbase.cpython-37m-darwin.so`pycbc_common_vars_wait(cv=0x00007ffeefbfe710, self=0x0000000104c78d70, context=0x000000010060bf20) at oputil.c:205:5
          frame #17: 0x00000001024e4709 _libcouchbase.cpython-37m-darwin.so`get_common(self=0x0000000104c78d70, args=0x0000000104cc8b10, kwargs=0x00000001020b7be0, optype=511, argopts=1, context=0x000000010060bf20) at get.c:420:15
          frame #18: 0x00000001024e4a8f _libcouchbase.cpython-37m-darwin.so`pycbc_Bucket_exists(self=0x0000000104c78d70, args=0x0000000104cc8b10,
       
      (lldb) f 0
      frame #0: 0x00000001025bdba7 libcouchbase.2.dylib`::lcbtrace_span_add_tag_uint64(lcbtrace_SPAN *, const char *, uint64_t) [inlined] sllist_append(list=0x000000010060d3d8, item=0x000000010060d3d0) at sllist-inl.h:148:26
         145 	        item->next = NULL;
         146 	    } else {
         147 	        slist_sanity_insert(list, item);
      -> 148 	        list->last->next = item;
         149 	        list->last = item;
         150 	    }
         151 	    item->next = NULL;
      (lldb) frame variable *list
      (sllist_root) *list = {
        first_prev = {
          next = 0x000000010060d410
        }
        last = 0x0000000000000001
      }
      

      Attachments

        For Gerrit Dashboard: CCBC-1215
        # Subject Branch Project Status CR V

        Activity

          People

            david.kelly David Kelly (Inactive)
            david.kelly David Kelly (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty