Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Cannot Reproduce
-
Affects Version/s: 2.0.1
-
Fix Version/s: None
-
Component/s: library
-
Security Level: Public
-
Labels:None
-
Environment:2 VMs running Couchbase 2.0 enterprise, with 2 buckets of 256MB each. libcouchbase from git ( latest pull 1/1/2013 ). Running own event loop calling event_base_loop in a separate thread
Description
When executing 1M lcb_store calls in a loop, storing items like "user0000001 = <16 hex bytes>" in the default bucket, I get a number of error callbacks saying "Internal error (0x6), Unknown implicit send message op=1" ( opcode 0x1 = PROTOCOL_BINARY_CMD_SET ). Finally, after a last "Internal error (0x6), Unknown implicit send message op=46" the process gets killed
.
Unfortunately I cannot tell where the crash happens, as running with gdb results in:
Couchbase event loop starting/build/buildd/gdb-7.4-2012.04/gdb/infrun.c:3189: internal-error: handle_inferior_event: Assertion `inf' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
After a number of attempts in both debug and release mode, I ended up with almost 350K out of 1M items entered. However, I don't manage to run the loop to its completion; something always breaks before it completes
.
Unfortunately I cannot tell where the crash happens, as running with gdb results in:
Couchbase event loop starting/build/buildd/gdb-7.4-2012.04/gdb/infrun.c:3189: internal-error: handle_inferior_event: Assertion `inf' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
After a number of attempts in both debug and release mode, I ended up with almost 350K out of 1M items entered. However, I don't manage to run the loop to its completion; something always breaks before it completes
Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff7fe4700 (LWP 32200)]
0x00007ffff635a425 in raise () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) backtrace
#0 0x00007ffff635a425 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff635db8b in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff7bc2501 in ringbuffer_consumed (buffer=0x7d0048, nb=180) at src/ringbuffer.c:263
#3 0x00007ffff7bb73af in do_send_data (c=0x7d0000) at src/event.c:270
#4 0x00007ffff7bb74af in lcb_server_event_handler (sock=10, which=4, arg=0x7d0000) at src/event.c:308
#5 0x00007ffff777af64 in event_process_active_single_queue (activeq=0x79c010, base=0x7a0000) at event.c:1350
#6 event_process_active (base=<optimized out>) at event.c:1420
#7 event_base_loop (base=0x7a0000, flags=0) at event.c:1621
#8 0x000000000040cf12 in RegistrationDb::authDbEventThread(void*) ()
#9 0x00007ffff734de9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#10 0x00007ffff6417cbd in clone () from /lib/x86_64-linux-gnu/libc.so.6
The abort at src/ringbuffer.c:263 is triggered:
void ringbuffer_consumed(ringbuffer_t *buffer, lcb_size_t nb)
{
lcb_size_t n = ringbuffer_read(buffer, NULL, nb);
if (n != nb) {
abort();
}
}