|
Seems that this issue, SERVER-7617, and SERVER-7650 all appear to be related to mixing threads, isolates and scopes. Looks like tad has started on a solution with http://codereview.10gen.com/8843004/.
Note I occasionally get this segv in release mode, but in debug mode I always hit CHECK(isolate != NULL).
There appears to be an issue with how we access scopes globally in mongo::ScriptEngine::threadDone(), and possibly a few other places. This seems to allow destruction of scopes without entering into the isolate first (cf. engine.cpp ~L323). I can dig further and provide more details, but would need to review the globalScriptEngine functions that may violate v8's thread access rules.
Stack trace from GDB:
#0 0x00007fff8e16bce2 in __pthread_kill ()
|
No symbol table info available.
|
#1 0x00007fff90f027d2 in pthread_kill ()
|
No symbol table info available.
|
#2 0x00007fff90ef3a7a in abort ()
|
No symbol table info available.
|
#3 0x0000000100d99ff5 in v8::internal::OS::Abort () at platform-macos.cc:176
|
No locals.
|
#4 0x0000000100a8864e in V8_Fatal (file=0x1012c8540 "src/third_party/v8/src/isolate.h", line=442, format=0x1012e6200 "CHECK(%s) failed") at checks.cc:58
|
No locals.
|
#5 0x00000001009fc5dc in v8::internal::Isolate::Current () at isolate.h:442
|
isolate = ('v8::internal::Isolate' *) 0x0
|
#6 0x0000000100a88641 in V8_Fatal (file=0x1012c8540 "src/third_party/v8/src/isolate.h", line=442, format=0x1012e6200 "CHECK(%s) failed") at checks.cc:55
|
No locals.
|
#7 0x00000001009fc5dc in v8::internal::Isolate::Current () at isolate.h:442
|
isolate = ('v8::internal::Isolate' *) 0x0
|
#8 0x0000000100a88641 in V8_Fatal (file=0x1012c8540 "src/third_party/v8/src/isolate.h", line=442, format=0x1012e6200 "CHECK(%s) failed") at checks.cc:55
|
No locals.
|
#9 0x00000001009fc5dc in v8::internal::Isolate::Current () at isolate.h:442
|
isolate = ('v8::internal::Isolate' *) 0x0
|
#10 0x0000000100a9ebcb in v8::internal::Context::IsBootstrappingOrGlobalObject (object=0x2f5d94906361) at contexts.cc:324
|
isolate = ('v8::internal::Isolate' *) 0x2f5d94906361
|
#11 0x00000001009fe87f in v8::internal::Context::global (this=0x35fcc4f14679) at contexts.h:326
|
result = ('v8::internal::Object' *) 0x2f5d94906361
|
#12 0x0000000100a9ee98 in v8::internal::Context::global_context (this=0x35fcc4f14679) at contexts.cc:62
|
current = ('v8::internal::Context' *) 0x1038c3a00
|
#13 0x0000000100a439f0 in v8::internal::Context::has_out_of_memory (this=0x35fcc4f14679) at isolate.h:1443
|
No locals.
|
#14 0x0000000100a0afcb in v8::Context::HasOutOfMemoryException (this=0x1038c3a00) at api.cc:4459
|
env = {location_ = 0x1038c3a00}
|
#15 0x00000001007e6823 in mongo::V8Scope::hasOutOfMemoryException (this=0x10351b6a0) at engine_v8.cpp:501
|
No locals.
|
#16 0x00000001007d443f in mongo::ScopeCache::done (this=0x10351af20, pool=@0x10351ed40, s=0x10351b6a0) at engine.cpp:289
|
lk = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _l = {m = 0x10351b5a0, is_locked = true}}
|
l = ('std::list<mongo::Scope*,std::allocator<mongo::Scope*> >' &) @0x10351b688: {<std::_List_base<mongo::Scope*,std::allocator<mongo::Scope*> >> = {
|
_M_impl = {<std::allocator<std::_List_node<mongo::Scope*> >> = {<__gnu_cxx::new_allocator<std::_List_node<mongo::Scope*> >> = {<No data fields>}, <No data fields>}, _M_node = {
|
_M_next = 0x10351b688, _M_prev = 0x10351b688}}}, <No data fields>}
|
oom = false
|
#17 0x00000001007d466a in mongo::PooledScope::~PooledScope (this=0x10351ecc0) at engine.cpp:351
|
sc = ('mongo::ScopeCache' *) 0x10351af20
|
#18 0x000000010023d7ea in boost::checked_delete<mongo::Scope> (x=0x10351ecc0) at checked_delete.hpp:39
|
No locals.
|
#19 0x000000010023d80b in boost::scoped_ptr<mongo::Scope>::~scoped_ptr (this=0x10747dcb0) at scoped_ptr.hpp:80
|
No locals.
|
#20 0x000000010022c7cd in mongo::mr::State::~State (this=0x10747dc10) at mr.cpp:615
|
No locals.
|
#21 0x0000000100241fc3 in mongo::mr::MapReduceCommand::run (this=0x101776740, dbname=@0x10747eca8, cmd=@0x10747f100, unnamed_arg=0, errmsg=@0x10747e768, result=@0x10747f680, fromRepl=false)
|
at mr.cpp:1209
|
t = {_old = 1353053256909133}
|
holdCursor = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _c = 0x10351b070, _id = 22128569733724}
|
chunkManager = {px = 0x0, pn = {pi_ = 0x0}}
|
timingBuilder = {<mongo::BSONBuilderBase> = {_vptr$BSONBuilderBase = 0x101719bd0}, <boost::noncopyable_::noncopyable> = {<No data fields>}, _b = @0x10747dd18, _buf = {
|
al = {<No data fields>}, data = 0x10351b390 "", l = 8, size = 516}, _offset = 4, _s = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _fieldName = 0x0, _builder = 0x10747dd08,
|
_subobj = {_M_ptr = 0x0}}, _tracker = 0x0, _doneCalled = false}
|
op = ('mongo::CurOp' *) 0x10387fa00
|
shouldHaveData = false
|
num = 0
|
state = {_config = @0x10747ddf0, _db = {<mongo::DBClientBase> = {<mongo::DBClientWithCommands> = {<mongo::DBClientInterface> = {<boost::noncopyable_::noncopyable> = {<No data fields>},
|
_vptr$DBClientInterface = 0x10173f5d0}, _seenIndexes = {_M_t = {
|
_M_impl = {<std::allocator<std::_Rb_tree_node<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<No data fields>}, <No data fields>},
|
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x10747dc28, _M_right = 0x10747dc28}, _M_node_count = 0}}}, _logLevel = 0,
|
_cachedAvailableOptions = 0, _haveCachedAvailableOptions = false, _authTable = {_dbs = {_M_t = {
|
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, mongo::Auth> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, mongo::Auth> > >> = {<No data fields>}, <No data fields>},
|
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x10747dc68, _M_right = 0x10747dc68}, _M_node_count = 0}}}},
|
_hasAuthentication = false}, <mongo::DBConnector> = {_vptr$DBConnector = 0x10173f738}, _connectionId = 10, _writeConcern = mongo::W_NORMAL}, <No data fields>}, _scope = {
|
px = 0x10351ecc0}, _onDisk = true, _temp = {px = 0x10351a500}, _size = 0, _dupCount = 0, _numEmits = 0, _jsMode = 224, _reduceAll = 140735625154607, _reduceAndEmit = 4349891168,
|
_reduceAndFinalize = 33, _reduceAndFinalizeAndInsert = 0}
|
client = ('mongo::Client' &) @0x103519c80: {<mongo::ClientBasic> = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _vptr$ClientBasic = 0x10173e010, _authenticationSession = {
|
px = 0x0}, _authorizationManager = {px = 0x10351a000}, _messagingPort = 0x1059030b0}, _connectionId = 2, _threadId = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1035138f8 "0x107481000"}}, _curOp = 0x10387fa00, _context = 0x0,
|
_shutdown = false, _desc = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x103515308 "conn2"}}, _god = false,
|
_ai = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _isLocalHost = true, _isLocalHostAndLocalHostIsAuthorizedForAll = true,
|
_lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _mutex = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _lock = {__sig = 1297437784,
|
__opaque = "\000\000\000\000` ", '\0' <repeats 11 times>, "\017\000\000\000\017", '\0' <repeats 11 times>, "?Q\003\001\000\000\000\004?Q\003\001\000\000\000\000\000\000\000\000\000\000"}}}, _authTable = {_dbs = {_M_t = {
|
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, mongo::Auth> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, mongo::Auth> > >> = {<No data fields>}, <No data fields>},
|
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x103519d30, _M_right = 0x103519d30}, _M_node_count = 0}}}}, _tempAuthTable = {_dbs = {
|
_M_t = {
|
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, mongo::Auth> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, mongo::Auth> > >> = {<No data fields>}, <No data fields>},
|
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x103519d60, _M_right = 0x103519d60}, _M_node_count = 0}}}}, _usingTempAuth = false},
|
_lastOp = {i = 0, secs = 0}, _handshake = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, _remoteId = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, _hasWrittenThisPass = false,
|
_pageFaultRetryableSection = 0x0, _ls = {_batchWriter = false, _recursive = 0, _threadState = 0 '\0', _whichNestable = mongo::Lock::notnestable, _nestableCount = 0, _otherCount = 0,
|
_otherName = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x10351fad8 ""}}, _otherLock = 0x0, _scopedLk = 0x0,
|
_lockPending = false, _lockPendingParallelWriter = false}}
|
config = {dbname = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x10350e3d8 "test"}}, ns = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x10350bd38 "test.jstests_mr_killop"}}, verbose = false,
|
jsMode = false, splitInfo = 0, filter = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, sort = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, limit = 0, mapper = {
|
px = 0x10351ae00}, reducer = {px = 0x10351aea0}, finalizer = {px = 0x0}, mapParams = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, scopeSetup = {_objdata = 0x101718ce0 "\005",
|
_holder = {px = 0x0}}, incLong = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
|
_M_p = 0x10351a238 "test.tmp.mr.jstests_mr_killop_0_inc"}}, tempLong = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
|
_M_p = 0x10351a548 "test.tmp.mr.jstests_mr_killop_0"}}, finalShort = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
|
_M_p = 0x10351a838 "jstests_mr_killop_out"}}, finalLong = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
|
_M_p = 0x10351a298 "test.jstests_mr_killop_out"}}, outDB = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
|
_M_p = 0x7fff7d97e878 ""}}, jsMaxKeys = 500000, reduceTriggerRatio = 10, maxInMemSize = 512000, outType = mongo::mr::Config::REPLACE, outNonAtomic = false, shardedFirstPass = false,
|
static JOB_NUMBER = {x = 1}}
|
inReduce = 0
|
countsBuilder = {<mongo::BSONBuilderBase> = {_vptr$BSONBuilderBase = 0x101719bd0}, <boost::noncopyable_::noncopyable> = {<No data fields>}, _b = @0x10747dd70, _buf = {
|
al = {<No data fields>}, data = 0x10351b180 "", l = 8, size = 516}, _offset = 4, _s = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _fieldName = 0x0, _builder = 0x10747dd60,
|
_subobj = {_M_ptr = 0x0}}, _tracker = 0x0, _doneCalled = false}
|
#22 0x00000001002861de in mongo::_execCommand (c=0x101776740, dbname=@0x10747eca8, cmdObj=@0x10747f100, queryOptions=0, result=@0x10747f680, fromRepl=false) at dbcommands.cpp:1650
|
errmsg = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fff7d97e878 ""}}
|
#23 0x0000000100287f8f in mongo::execCommand (c=0x101776740, client=@0x103519c80, queryOptions=0, cmdns=0x103880014 "test.$cmd", cmdObj=@0x10747f100, result=@0x10747f680, fromRepl=false)
|
at dbcommands.cpp:1777
|
ai = ('mongo::AuthenticationInfo' *) 0x103519cd8
|
authRelease = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _ai = 0x103519cd8, _hadTempAuthFromStart = false}
|
retval = true
|
dbname = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x10350e3d8 "test"}}
|
canRunHere = true
|
#24 0x00000001002892a0 in mongo::_runCommands (ns=0x103880014 "test.$cmd", _cmdobj=@0x10747f760, b=@0x10747f6d8, anObjBuilder=@0x10747f680, fromRepl=false, queryOptions=0) at dbcommands.cpp:1864
|
ok = false
|
e = {data = 0x10388002a "\002mapreduce", fieldNameSize_ = -1, totalSize = -1}
|
c = ('mongo::Command' *) 0x101776740
|
dbname = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x103515478 "test"}}
|
p = 0x103880018 ".$cmd"
|
jsobj = {_objdata = 0x103880026 "?", _holder = {px = 0x0}}
|
client = ('mongo::Client' &) @0x103519c80: {<mongo::ClientBasic> = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _vptr$ClientBasic = 0x10173e010, _authenticationSession = {
|
px = 0x0}, _authorizationManager = {px = 0x10351a000}, _messagingPort = 0x1059030b0}, _connectionId = 2, _threadId = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1035138f8 "0x107481000"}}, _curOp = 0x10387fa00, _context = 0x0,
|
_shutdown = false, _desc = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x103515308 "conn2"}}, _god = false,
|
_ai = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _isLocalHost = true, _isLocalHostAndLocalHostIsAuthorizedForAll = true,
|
---Type <return> to continue, or q <return> to quit---q
|
_lock = {<boost::noncopyable_::noncopyable> = {<No data fie#25 0x00000001004766d5 in mongo::runCommands (ns=0x103880014 "test.$cmd", jsobj=@0x10747f760, curop=@0x10387fa00, b=@0x10747f6d8, anObjBuilder=@0x10747f680, fromRepl=false, queryOptions=0)
|
at query.cpp:43
|
x = {_objdata = 0x40351abf0 <Address 0x40351abf0 out of bounds>, _holder = {px = 0x10747f690}}
|
#26 0x00000001004771b7 in mongo::runQuery (m=@0x107480ae0, q=@0x10747fef8, curop=@0x10387fa00, result=@0x10351a6e0) at query.cpp:940
|
bb = {al = {<No data fields>}, data = 0x10351a300 "", l = 36, size = 512}
|
cmdResBuf = {<mongo::BSONBuilderBase> = {_vptr$BSONBuilderBase = 0x101719bd0}, <boost::noncopyable_::noncopyable> = {<No data fields>}, _b = @0x10747f690, _buf = {al = {<No data fields>},
|
data = 0x10351abf0 "", l = 8, size = 516}, _offset = 4, _s = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _fieldName = 0x0, _builder = 0x10747f680, _subobj = {_M_ptr = 0x0}},
|
_tracker = 0x0, _doneCalled = false}
|
pq = ('mongo::ParsedQuery' &) @0x10351a790: {<boost::noncopyable_::noncopyable> = {<No data fields>}, _ns = 0x103880014 "test.$cmd", _ntoskip = 0, _ntoreturn = 1, _filter = {
|
_objdata = 0x10351a614 "?", _holder = {px = 0x10351a610}}, _order = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, _options = 0, _fields = {px = 0x0, pn = {pi_ = 0x0}},
|
_wantMore = false, _explain = false, _snapshot = false, _returnKey = false, _showDiskLoc = false, _hasReadPref = false, _min = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, _max = {
|
_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, _hint = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, _maxScan = 0}
|
ns = 0x103880014 "test.$cmd"
|
explain = false
|
order = {_objdata = 0xffffffff <Address 0xffffffff out of bounds>, _holder = {px = 0x10747fb70}}
|
pq_shared = {px = 0x10351a790, pn = {pi_ = 0x103518910}}
|
queryOptions = 0
|
nsString = {db = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x103513c88 "test"}}, coll = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x103513d58 "$cmd"}}}
|
query = {_objdata = 0x7fff90ef8947 "??Dž????", _holder = {px = 0x1}}
|
hasRetried = false
|
npfe = {px = 0x2}
|
jsobj = {_objdata = 0x103880026 "?", _holder = {px = 0x0}}
|
pgfs = {px = 0x0}
|
#27 0x00000001003a2d32 in receivedQuery (c=@0x103519c80, dbresponse=@0x1074807e0, m=@0x107480ae0) at instance.cpp:245
|
ok = true
|
responseTo = {x = 1}
|
q = {ns = 0x103880014 "test.$cmd", ntoskip = 0, ntoreturn = -1, queryOptions = 0, query = {_objdata = 0x103880026 "?", _holder = {px = 0x0}}, fields = {_objdata = 0x101718ce0 "\005",
|
_holder = {px = 0x0}}}
|
resp = {_M_ptr = 0x10351a6e0}
|
d = {m = @0x107480ae0, reserved = 0x103880010, data = 0x103880014 "test.$cmd", nextjsobj = 0x0, theEnd = 0x1038800d6 "", mark = 0x0}
|
op = ('mongo::CurOp' &) @0x10387fa00: {<boost::noncopyable_::noncopyable> = {<No data fields>}, _client = 0x103519c80, _wrapped = 0x0, _start = 1353053256909133, _end = 0, _active = true,
|
_suppressFromCurop = false, _op = 2004, _command = true, _dbprofile = 0, _opNum = {x = 17}, _ns = "test.system.namespaces", '\0' <repeats 107 times>, _remote = {_host = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x103514b48 "127.0.0.1"}}, _port = 61413}, _query = {
|
_lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _mutex = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _lock = {__sig = 1297437784,
|
__opaque = "\000\000\000\000` ", '\0' <repeats 11 times>, "\t\000\000\000\t\000\000\000\000\000\000\000\000\000\000???\003\001\000\000\000???\003\001\000\000\000!\\d\000\000\000\000"}}}, _size = 0x10387fb18,
|
_buf = "?\000\000\000\002mapreduce\000\022\000\000\000jstests_mr_killop\000\002out\000\026\000\000\000jstests_mr_killop_out\000\rmap\0001\000\000\000function () { while( 1 ) { ; } }\000\rreduce\000%\000\000\000function ( k, v ) { return v[ 0 ]; }\000\000t.0\000lock\a?b\000\000\000\000\000\020\000\000\000%?b\000"...}, _debug = {extra = {_buf = {al = {<No data fields>},
|
data = 0x103519e00 "", l = 0, size = 512}}, op = 2004, iscommand = false, ns = {buf = "test.$cmd", '\0' <repeats 118 times>}, query = {_objdata = 0x103880026 "?", _holder = {px = 0x0}},
|
updateobj = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, cursorid = -1, ntoreturn = 1, ntoskip = -1, exhaust = false, nscanned = -1, idhack = false, scanAndOrder = false,
|
nupdated = -1, nmoved = -1, fastmod = false, fastmodinsert = false, upsert = false, keyUpdates = 0, exceptionInfo = {msg = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fff7d97e878 ""}}, code = -1}, executionTime = 0,
|
nreturned = -1, responseLength = -1}, _message = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _size = 256, _buf = 0x10351a080 ""},
|
_progressMeter = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _active = false, _total = 0, _secondsBetween = 0, _checkInterval = 0, _done = 0, _hits = 0, _lastTime = 0, _units = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fff7d97e878 ""}}}, _killPending = {_value = 1}, _numYields = 0,
|
_lockStat = {timeAcquiring = {{_value = 0}, {_value = 0}, {_value = 8}, {_value = 0}}, timeLocked = {{_value = 0}, {_value = 0}, {_value = 242}, {_value = 0}}},
|
_notifyList = {<std::_Vector_base<bool*,std::allocator<bool*> >> = {_M_impl = {<std::allocator<bool*>> = {<__gnu_cxx::new_allocator<bool*>> = {<No data fields>}, <No data fields>},
|
_M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, _expectedLatencyMs = 0}
|
ex = {px = 0x0, pn = {pi_ = 0x0}}
|
#28 0x00000001003a64a2 in mongo::assembleResponse (m=@0x107480ae0, dbresponse=@0x1074807e0, remote=@0x107480810) at instance.cpp:391
|
ns = 0x103880014 "test.$cmd"
|
nestedOp = {_M_ptr = 0x0}
|
debug = ('mongo::OpDebug' &) @0x10387fd18: {extra = {_buf = {al = {<No data fields>}, data = 0x103519e00 "", l = 0, size = 512}}, op = 2004, iscommand = false, ns = {
|
buf = "test.$cmd", '\0' <repeats 118 times>}, query = {_objdata = 0x103880026 "?", _holder = {px = 0x0}}, updateobj = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, cursorid = -1,
|
ntoreturn = 1, ntoskip = -1, exhaust = false, nscanned = -1, idhack = false, scanAndOrder = false, nupdated = -1, nmoved = -1, fastmod = false, fastmodinsert = false, upsert = false,
|
keyUpdates = 0, exceptionInfo = {msg = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fff7d97e878 ""}},
|
code = -1}, executionTime = 0, nreturned = -1, responseLength = -1}
|
shouldLog = true
|
op = 2004
|
isCommand = true
|
currentOpP = ('mongo::CurOp' *) 0x10387fa00
|
currentOp = ('mongo::CurOp' &) @0x10387fa00: {<boost::noncopyable_::noncopyable> = {<No data fields>}, _client = 0x103519c80, _wrapped = 0x0, _start = 1353053256909133, _end = 0,
|
_active = true, _suppressFromCurop = false, _op = 2004, _command = true, _dbprofile = 0, _opNum = {x = 17}, _ns = "test.system.namespaces", '\0' <repeats 107 times>, _remote = {_host = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x103514b48 "127.0.0.1"}}, _port = 61413}, _query = {
|
_lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _mutex = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _lock = {__sig = 1297437784,
|
__opaque = "\000\000\000\000` ", '\0' <repeats 11 times>, "\t\000\000\000\t\000\000\000\000\000\000\000\000\000\000???\003\001\000\000\000???\003\001\000\000\000!\\d\000\000\000\000"}}}, _size = 0x10387fb18,
|
_buf = "?\000\000\000\002mapreduce\000\022\000\000\000jstests_mr_killop\000\002out\000\026\000\000\000jstests_mr_killop_out\000\rmap\0001\000\000\000function () { while( 1 ) { ; } }\000\rreduce\000%\000\000\000function ( k, v ) { return v[ 0 ]; }\000\000t.0\000lock\a?b\000\000\000\000\000\020\000\000\000%?b\000"...}, _debug = {extra = {_buf = {al = {<No data fields>},
|
data = 0x103519e00 "", l = 0, size = 512}}, op = 2004, iscommand = false, ns = {buf = "test.$cmd", '\0' <repeats 118 times>}, query = {_objdata = 0x103880026 "?", _holder = {px = 0x0}},
|
updateobj = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, cursorid = -1, ntoreturn = 1, ntoskip = -1, exhaust = false, nscanned = -1, idhack = false, scanAndOrder = false,
|
nupdated = -1, nmoved = -1, fastmod = false, fastmodinsert = false, upsert = false, keyUpdates = 0, exceptionInfo = {msg = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fff7d97e878 ""}}, code = -1}, executionTime = 0,
|
nreturned = -1, responseLength = -1}, _message = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _size = 256, _buf = 0x10351a080 ""},
|
_progressMeter = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _active = false, _total = 0, _secondsBetween = 0, _checkInterval = 0, _done = 0, _hits = 0, _lastTime = 0, _units = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fff7d97e878 ""}}}, _killPending = {_value = 1}, _numYields = 0,
|
_lockStat = {timeAcquiring = {{_value = 0}, {_value = 0}, {_value = 8}, {_value = 0}}, timeLocked = {{_value = 0}, {_value = 0}, {_value = 242}, {_value = 0}}},
|
_notifyList = {<std::_Vector_base<bool*,std::allocator<bool*> >> = {_M_impl = {<std::allocator<bool*>> = {<__gnu_cxx::new_allocator<bool*>> = {<No data fields>}, <No data fields>},
|
_M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, _expectedLatencyMs = 0}
|
logThreshold = 100
|
c = ('mongo::Client' &) @0x103519c80: {<mongo::ClientBasic> = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _vptr$ClientBasic = 0x10173e010, _authenticationSession = {
|
px = 0x0}, _authorizationManager = {px = 0x10351a000}, _messagingPort = 0x1059030b0}, _connectionId = 2, _threadId = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1035138f8 "0x107481000"}}, _curOp = 0x10387fa00, _context = 0x0,
|
_shutdown = false, _desc = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x103515308 "conn2"}}, _god = false,
|
_ai = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _isLocalHost = true, _isLocalHostAndLocalHostIsAuthorizedForAll = true,
|
_lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _mutex = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _lock = {__sig = 1297437784,
|
__opaque = "\000\000\000\000` ", '\0' <repeats 11 times>, "\017\000\000\000\017", '\0' <repeats 11 times>, "?Q\003\001\000\000\000\004?Q\003\001\000\000\000\000\000\000\000\000\000\000"}}}, _authTable = {_dbs = {_M_t = {
|
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, mongo::Auth> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, mongo::Auth> > >> = {<No data fields>}, <No data fields>},
|
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x103519d30, _M_right = 0x103519d30}, _M_node_count = 0}}}}, _tempAuthTable = {_dbs = {
|
_M_t = {
|
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, mongo::Auth> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, mongo::Auth> > >> = {<No data fields>}, <No data fields>},
|
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x103519d60, _M_right = 0x103519d60}, _M_node_count = 0}}}}, _usingTempAuth = false},
|
_lastOp = {i = 0, secs = 0, static notifier = {internal_mutex = {__sig = 1297437784,
|
__opaque = "\000\000\000\000` ", '\0' <repeats 11 times>, "\n\000\000\000\n\000\000\000\000\000\000\000\000\000\000\030vw\001\001\000\000\000\034vw\001\001\000\000\000\000\000\000\000\000\000\000"}, cond = {__sig = 1129270852, __opaque = "\000\000\000\000\000\000\000?", '\0' <repeats 12 times>, "\001", '\0' <repeats 18 times>}},
|
static m = {<boost::noncopyable_::noncopyable> = {<No data fields>}, _name = 0x101296d8e "optime", _m = 0x103508930}}, _handshake = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}},
|
_remoteId = {_objdata = 0x101718ce0 "\005", _holder = {px = 0x0}}, _hasWrittenThisPass = false, _pageFaultRetryableSection = 0x0, _ls = {_batchWriter = false, _recursive = 0,
|
_threadState = 0 '\0', _whichNestable = mongo::Lock::notnestable, _nestableCount = 0, _otherCount = 0, _otherName = {
|
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x10351fad8 ""}}, _otherLock = 0x0, _scopedLk = 0x0,
|
_lockPending = false, _lockPendingParallelWriter = false}}
|
#29 0x0000000100017327 in mongo::MyMessageHandler::process (this=0x1035170a0, m=@0x107480ae0, port=0x1059030b0, le=0x1035138a0) at db.cpp:197
|
dbresponse = {response = 0x0, responseTo = {x = 0}, exhaustNS = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
|
_M_p = 0x7fff7d97e878 ""}}}
|
#30 0x0000000100867323 in mongo::pms::threadRun (inPort=0x1059030b0) at message_server_port.cpp:85
|
le = ('mongo::LastError' *) 0x1035138a0
|
connTicketReleaser = {_holder = 0x101b4a180}
|
p = {px = 0x1059030b0}
|
otherSide = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1035133c8 "127.0.0.1:61413"}}
|
m = {_from = {addressSize = 128, sa = {ss_len = 0 '\0', ss_family = 0 '\0', __ss_pad1 = "\000\000\000\000\000", __ss_align = 0, __ss_pad2 = '\0' <repeats 111 times>}}, _buf = 0x103880000,
|
_data = {<std::_Vector_base<std::pair<char*, int>,std::allocator<std::pair<char*, int> > >> = {
|
_M_impl = {<std::allocator<std::pair<char*, int> >> = {<__gnu_cxx::new_allocator<std::pair<char*, int> >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0,
|
_M_end_of_storage = 0x0}}, <No data fields>}, _freeIt = true}
|
#31 0x0000000100868860 in boost::_bi::list1<boost::_bi::value<mongo::MessagingPort*> >::operator()<void (*)(mongo::MessagingPort*), boost::_bi::list0> (this=0x105902c40, f=@0x105902c38,
|
a=@0x107480e20, unnamed_arg=0) at bind.hpp:253
|
No locals.
|
#32 0x00000001008688c2 in boost::_bi::bind_t<void, void (*)(mongo::MessagingPort*), boost::_bi::list1<boost::_bi::value<mongo::MessagingPort*> > >::operator() (this=0x105902c38)
|
at bind_template.hpp:20
|
a = {<No data fields>}
|
#33 0x00000001008688ed in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(mongo::MessagingPort*), boost::_bi::list1<boost::_bi::value<mongo::MessagingPort*> > > >::run (
|
this=0x105902a50) at thread.hpp:62
|
No locals.
|
#34 0x00000001008f7e19 in thread_proxy (param=0x105902a50) at thread.cpp:121
|
---Type <return> to continue, or q <return> to quit---y
|
thread_info = {px = 0x105902a50, pn = {pi_ = 0x105903170}}
|
lock = {m = @0x0}
|
#35 0x00007fff90f008bf in _pthread_start ()
|
No symbol table info available.
|
#36 0x00007fff90f03b75 in thread_start ()
|
No symbol table info available.
|
|