Chunk::_getExtremeKey has this code:
if (doSplitAtLower) {
// Splitting close to the lower bound means that the split point will be the
// upper bound. Chunk range upper bounds are exclusive so skip a document to
// make the lower half of the split end up with a single document.
unique_ptr<DBClientCursor> cursor = conn->query(_manager->getns(),
q,
1, /* nToReturn */
1 /* nToSkip */);
if (cursor->more()) {
end = cursor->next().getOwned();
}
cursor can be NULL when conn->query fails to initialize a client cursor due to an unreachable node (in this case, the node has been killed).
Backtrace:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f79405f6700 (LWP 16290)]
0x00000000011d5f31 in mongo::Chunk::_getExtremeKey (this=0x7f79180048b0, doSplitAtLower=true) at src/mongo/s/chunk.cpp:252
252 if (cursor->more()) {
(gdb) p cursor.get()
$2 = (mongo::DBClientCursor *) 0x0
(gdb) bt
#0 0x00000000011d5f31 in mongo::Chunk::_getExtremeKey (this=0x7f79180048b0, doSplitAtLower=true) at src/mongo/s/chunk.cpp:252
#1 0x00000000011d7182 in mongo::Chunk::split (this=0x7f79180048b0, mode=mongo::Chunk::autoSplitInternal, resultingSplits=0x7f791f6fbda0, res=0x7f791f6fbdc0) at src/mongo/s/chunk.cpp:386
#2 0x00000000011d8f3d in mongo::Chunk::splitIfShould (this=0x7f79180048b0, dataWritten=35) at src/mongo/s/chunk.cpp:553
#3 0x000000000121213d in mongo::(anonymous namespace)::splitIfNeeded (nss=..., stats=...) at src/mongo/s/cluster_write.cpp:147
#4 0x0000000001213073 in mongo::ClusterWriter::write (this=0x7f791f6fc3b0, origRequest=..., response=0x7f791f6fc410) at src/mongo/s/cluster_write.cpp:263
#5 0x0000000001245a1a in mongo::(anonymous namespace)::ClusterWriteCmd::run (this=0x1adbd40 <mongo::(anonymous namespace)::clusterInsertCmd>, txn=0x7f78f8006130, dbname=..., cmdObj=..., options=0,
errmsg=..., result=...) at src/mongo/s/commands/cluster_write_cmd.cpp:150
#6 0x000000000126c99e in mongo::Command::execCommandClientBasic (txn=0x7f78f8006130, c=0x1adbd40 <mongo::(anonymous namespace)::clusterInsertCmd>, client=..., queryOptions=0,
ns=0x7f78f8000e64 "test.$cmd", cmdObj=..., result=...) at src/mongo/s/s_only.cpp:123
#7 0x000000000126ce3a in mongo::Command::runAgainstRegistered (ns=0x7f78f8000e64 "test.$cmd", jsobj=..., anObjBuilder=..., queryOptions=0) at src/mongo/s/s_only.cpp:164
#8 0x0000000001275c42 in mongo::Strategy::clientCommandOp (r=...) at src/mongo/s/strategy.cpp:309
#9 0x000000000126ba3f in mongo::Request::process (this=0x7f791f6fcb90, attempt=0) at src/mongo/s/request.cpp:112
#10 0x0000000000d92d44 in mongo::ShardedMessageHandler::process (this=0x7fff1692b920, m=..., p=0x3af5230) at src/mongo/s/server.cpp:142
#11 0x00000000012dc9dd in mongo::PortMessageServer::handleIncomingMsg (arg=0x3af5230) at src/mongo/util/net/message_server_port.cpp:229
#12 0x00007f79603a0182 in start_thread (arg=0x7f791f6fd700) at pthread_create.c:312
#13 0x00007f79600cd47d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
Version: 6c49d69bbae5d8807fc205dbca12eecf1a60258b