|
Most of the time, I can also get the mongod process to crash. The crash occurs on the same line as above:
|
==14376== Invalid read of size 4
|
==14376== at 0x7F6D73: mongo::unwrapBSONObj(v8::Handle<v8::Object> const&) (atomic_int.h:87)
|
==14376== by 0x800043: mongo::V8Scope::v8ToMongo(v8::Handle<v8::Object>, int) (engine_v8.cpp:1497)
|
==14376== by 0x802291: mongo::V8Scope::v8ToMongoElement(mongo::BSONObjBuilder&, std::string, v8::Handle<v8::Value>, int, mongo::BSONObj*) (engine_v8.cpp:1470)
|
==14376== by 0x800241: mongo::V8Scope::v8ToMongo(v8::Handle<v8::Object>, int) (engine_v8.cpp:1527)
|
==14376== by 0x802291: mongo::V8Scope::v8ToMongoElement(mongo::BSONObjBuilder&, std::string, v8::Handle<v8::Value>, int, mongo::BSONObj*) (engine_v8.cpp:1470)
|
==14376== by 0x802F8A: mongo::V8Scope::append(mongo::BSONObjBuilder&, char const*, char const*) (engine_v8.cpp:1348)
|
==14376== by 0x7C851C: mongo::dbEval(std::string const&, mongo::BSONObj&, mongo::BSONObjBuilder&, std::string&) (dbeval.cpp:104)
|
==14376== by 0x7C9515: mongo::CmdEval::run(std::string const&, mongo::BSONObj&, int, std::string&, mongo::BSONObjBuilder&, bool) (dbeval.cpp:132)
|
==14376== by 0x8B4DA5: mongo::_execCommand(mongo::Command*, std::string const&, mongo::BSONObj&, int, mongo::BSONObjBuilder&, bool) (dbcommands.cpp:1774)
|
==14376== by 0x8B5A03: mongo::execCommand(mongo::Command*, mongo::Client&, int, char const*, mongo::BSONObj&, mongo::BSONObjBuilder&, bool) (dbcommands.cpp:1878)
|
==14376== by 0x8B76E6: mongo::_runCommands(char const*, mongo::BSONObj&, mongo::_BufBuilder<mongo::TrivialAllocator>&, mongo::BSONObjBuilder&, bool, int) (dbcommands.cpp:1947)
|
==14376== by 0x9724E4: mongo::runCommands(char const*, mongo::BSONObj&, mongo::CurOp&, mongo::_BufBuilder<mongo::TrivialAllocator>&, mongo::BSONObjBuilder&, bool, int) (query.cpp:56)
|
==14376== Address 0xFFFFFFFF is not stack'd, malloc'd or (recently) free'd
|
I tried to run using the debugger but I am hitting some bugs in gdb or valgrind (on the V8 buildslave, both are out of date and need to be upgraded).
I haven't set up a V8 build on my local machine yet. But here's what I'm using to test:
valgrind --leak-check=no --db-attach=yes --db-command="gdbtui %f %p" ./mongod --nojournal
and then in another terminal:
./mongo jstests/eval9.js
|
|
Hi Antoine,
I got some uninitialized branch/jump errors on the server while running eval9.js; maybe they are related to the crashes?
|
==10280== Thread 10:
|
==10280== Conditional jump or move depends on uninitialised value(s)
|
==10280== at 0x7F6D6C: mongo::unwrapBSONObj(v8::Handle<v8::Object> const&) (intrusive_ptr.hpp:96)
|
==10280== by 0x800043: mongo::V8Scope::v8ToMongo(v8::Handle<v8::Object>, int) (engine_v8.cpp:1497)
|
==10280== by 0x802291: mongo::V8Scope::v8ToMongoElement(mongo::BSONObjBuilder&, std::string, v8::Handle<v8::Value>, int, mongo::BSONObj*) (engine_v8.cpp:1470)
|
==10280== by 0x800241: mongo::V8Scope::v8ToMongo(v8::Handle<v8::Object>, int) (engine_v8.cpp:1527)
|
==10280== by 0x802291: mongo::V8Scope::v8ToMongoElement(mongo::BSONObjBuilder&, std::string, v8::Handle<v8::Value>, int, mongo::BSONObj*) (engine_v8.cpp:1470)
|
==10280== by 0x802F8A: mongo::V8Scope::append(mongo::BSONObjBuilder&, char const*, char const*) (engine_v8.cpp:1348)
|
==10280== by 0x7C851C: mongo::dbEval(std::string const&, mongo::BSONObj&, mongo::BSONObjBuilder&, std::string&) (dbeval.cpp:104)
|
==10280== by 0x7C9515: mongo::CmdEval::run(std::string const&, mongo::BSONObj&, int, std::string&, mongo::BSONObjBuilder&, bool) (dbeval.cpp:132)
|
==10280== by 0x8B4DA5: mongo::_execCommand(mongo::Command*, std::string const&, mongo::BSONObj&, int, mongo::BSONObjBuilder&, bool) (dbcommands.cpp:1774)
|
==10280== by 0x8B5A03: mongo::execCommand(mongo::Command*, mongo::Client&, int, char const*, mongo::BSONObj&, mongo::BSONObjBuilder&, bool) (dbcommands.cpp:1878)
|
==10280== by 0x8B76E6: mongo::_runCommands(char const*, mongo::BSONObj&, mongo::_BufBuilder<mongo::TrivialAllocator>&, mongo::BSONObjBuilder&, bool, int) (dbcommands.cpp:1947)
|
==10280== by 0x9724E4: mongo::runCommands(char const*, mongo::BSONObj&, mongo::CurOp&, mongo::_BufBuilder<mongo::TrivialAllocator>&, mongo::BSONObjBuilder&, bool, int) (query.cpp:56)
|
|