Description
While trying to simplify a customer test cast I came across this bug:
#! /usr/bin/env python
import couchbase
cb = couchbase.Couchbase.connect(bucket='default', host='192.168.63.101')
set_result=["key1", "key2", "key2"]
cb.endure_multi(set_result,persist_to=-1,replicate_to=-1,timeout=10)
./endure_multi_test.py
python-couchbase: self->nremaining == 0 at src/oputil.c:77. AbortAborted (core dumped)
Back trace from the core:
(gdb) thread apply all bt
Thread 1 (Thread 0x7fe75e889700 (LWP 3717)):
#0 0x0000003f3e832925 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x0000003f3e834105 in abort () at abort.c:92
#2 0x00007fe7574a7a79 in pycbc_handle_assert (msg=0x7fe7574baba8 "self->nremaining == 0", file=0x7fe7574bab04 "src/oputil.c", line=77) at src/exceptions.c:25
#3 0x00007fe7574b13b4 in pycbc_common_vars_wait (cv=0x7fffe7752110, self=0x14c0c80) at src/oputil.c:77
#4 0x00007fe7574b02db in pycbc_Connection_endure_multi (self=0x14c0c80, args=<value optimized out>, kwargs=<value optimized out>) at src/miscops.c:314
#5 0x00007fe75e8d0c63 in PyObject_Call (func=<built-in method endure_multi of Connection object at remote 0x14c0c80>, arg=<value optimized out>, kw=<value optimized out>) at Objects/abstract.c:2492
#6 0x00007fe75e95cc93 in PyEval_CallObjectWithKeywords (func=<built-in method endure_multi of Connection object at remote 0x14c0c80>, arg=(['key1', 'key2', 'key2'], -1, -1), kw=<value optimized out>) at Python/ceval.c:3663
#7 0x00007fe75e8e8b5c in methoddescr_call (descr=<value optimized out>, args=(['key1', 'key2', 'key2'], -1, -1), kwds=
) at Objects/descrobject.c:246
#8 0x00007fe75e8d0c63 in PyObject_Call (func=<method_descriptor at remote 0x1495ea8>, arg=<value optimized out>, kw=<value optimized out>) at Objects/abstract.c:2492
#9 0x00007fe75e961f74 in do_call (f=<value optimized out>, throwflag=<value optimized out>) at Python/ceval.c:4012
#10 call_function (f=<value optimized out>, throwflag=<value optimized out>) at Python/ceval.c:3817
#11 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value optimized out>) at Python/ceval.c:2453
#12 0x00007fe75e964657 in PyEval_EvalCodeEx (co=0x7fe75e7c2d50, globals=<value optimized out>, locals=<value optimized out>, args=<value optimized out>, argcount=2, kws=0x13e2a08, kwcount=3, defs=0x1638a88, defcount=5, closure=0x0) at Python/ceval.c:3044
#13 0x00007fe75e962aa4 in fast_function (f=<value optimized out>, throwflag=<value optimized out>) at Python/ceval.c:3890
#14 call_function (f=<value optimized out>, throwflag=<value optimized out>) at Python/ceval.c:3815
#15 PyEval_EvalFrameEx (f=<value optimized out>, throwflag=<value optimized out>) at Python/ceval.c:2453
#16 0x00007fe75e964657 in PyEval_EvalCodeEx (co=0x7fe75e7a8cd8, globals=<value optimized out>, locals=<value optimized out>, args=<value optimized out>, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3044
#17 0x00007fe75e964732 in PyEval_EvalCode (co=<value optimized out>, globals=<value optimized out>, locals=<value optimized out>) at Python/ceval.c:545
#18 0x00007fe75e97ebac in run_mod (mod=<value optimized out>, filename=<value optimized out>, globals=
, locals=
, flags=<value optimized out>,
arena=<value optimized out>) at Python/pythonrun.c:1358
#19 0x00007fe75e97ec80 in PyRun_FileExFlags (fp=0x13e1fb0, filename=0x7fffe77538df "./endure_multi_test.py", start=<value optimized out>, globals=
, locals=
, closeit=1, flags=
0x7fffe77529c0) at Python/pythonrun.c:1344
#20 0x00007fe75e98016c in PyRun_SimpleFileExFlags (fp=0x13e1fb0, filename=0x7fffe77538df "./endure_multi_test.py", closeit=1, flags=0x7fffe77529c0) at Python/pythonrun.c:948
#21 0x00007fe75e98c8a2 in Py_Main (argc=<value optimized out>, argv=<value optimized out>) at Modules/main.c:618
#22 0x0000003f3e81ed1d in __libc_start_main (main=0x400710 <main>, argc=2, ubp_av=0x7fffe7752ae8, init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value optimized out>, stack_end=0x7fffe7752ad8) at libc-start.c:226
#23 0x0000000000400649 in _start ()