This is a regression to ConnectionRegistry::killOperationsOnAllConnections() introduced by the changes from SERVER-7775 with the addition of the "killOp" command: https://github.com/mongodb/mongo/commit/d6cd29d1fc0594657fcb2b69ce8334df85f9ba54#diff-629362cc5e412256e6879e87f489a3a6.
In verisons of the mongo shell prior to 3.1.2, the arguments sent to the server were constructed using
QUERY("op"<< op["opid"]) // which expands to BSON("op"<< op["opid"]) // which expands to (::mongo::BSONObjBuilder(64) << "op"<< op["opid"]).obj() // which makes the following chain of function calls BSONObjBuilder::BSONObjBuilder(int initsize); BSONObjBuilder::operator<<(StringData name); BSONObjBuilderValueStream::operator<<(const BSONElement& e); BSONObjBuilder::appendAs(const BSONElement& e, StringData fieldName); ...
However, in versions of the mongo shell 3.1.2 and later, the arguments sent to the server were constructed using
BSONObjBuilder::BSONObjBuilder(int initsize); BSONObjBuilder::append(StringData fieldName, const std::string& str);
by implicitly calling BSONElement::operator std::string() and thus creating an object of the form {op: "opid: <opid>"} instead of {op: <opid>}.