Uploaded image for project: 'Node.js Driver'
  1. Node.js Driver
  2. NODE-2409

Server v4.2.2 segfaults when calling mapReduce with a `query` that contains $ne

    XMLWordPrintable

Details

    • Bug
    • Status: Closed
    • Major - P3
    • Resolution: Done
    • 3.4.1
    • None
    • None
    • Ubuntu 18.04 (with XFCE). Node.js v10.17.0. MongoDB server v4.2.2. Node driver v3.4.1.

    Description

      The below script causes the MongoDB server v4.2.2 to segfault. If you change the server version to 4.2.1 or if you remove the `$ne` from `query`, the below script works fine.

      'use strict';
       
      const mongodb = require('mongodb');
       
      run().catch(err => {
          console.log(err);
          process.exit(1);
      });
       
      async function run() {
          const client = await mongodb.MongoClient.connect('mongodb://localhost:27017/test', {
            useNewUrlParser: true,
            useUnifiedTopology: true,
          });
       
          await client.db().collection('test').deleteMany({});
          await client.db().collection('test').insertOne({
            portalId: '1234',
            name: 'foo',
            reference: 'ref-1234',
            deleted: false
          });
       
          const o = {
            scope: {},
            out: { inline: 1 },
            map: String(function () {
              emit(this._id, this);
            }),
            reduce: String(function (k, vals) {
              return { data: vals };
            }),
            query: {
              deleted: { $ne: true },
            }
          };
       
          const res = await client.db().collection('test').mapReduce(null, null, o);
          console.log(res);
          process.exit(1);
      }
      

      Not sure whether this is a server bug or not. Output from the mongod server is shown below:

      2020-01-03T18:04:37.140-0500 I  NETWORK  [initandlisten] Listening on 127.0.0.1
      2020-01-03T18:04:37.140-0500 I  SHARDING [LogicalSessionCacheReap] Marking collection config.transactions as collection version: <unsharded>
      2020-01-03T18:04:37.140-0500 I  NETWORK  [initandlisten] waiting for connections on port 27017
      2020-01-03T18:04:38.000-0500 I  SHARDING [ftdc] Marking collection local.oplog.rs as collection version: <unsharded>
      2020-01-03T18:04:38.450-0500 I  NETWORK  [listener] connection accepted from 127.0.0.1:43500 #1 (1 connection now open)
      2020-01-03T18:04:38.453-0500 I  NETWORK  [conn1] received client metadata from 127.0.0.1:43500 conn1: { driver: { name: "nodejs", version: "3.4.1" }, os: { type: "Linux", name: "linux", architecture: "x64", version: "5.0.0-37-generic" }, platform: "'Node.js v10.17.0, LE (unified)" }
      2020-01-03T18:04:38.460-0500 I  SHARDING [conn1] Marking collection test.test as collection version: <unsharded>
      2020-01-03T18:04:38.477-0500 I  SHARDING [conn1] Marking collection test.system.js as collection version: <unsharded>
      2020-01-03T18:04:38.478-0500 F  -        [conn1] Invalid access at address: 0
      2020-01-03T18:04:38.492-0500 F  -        [conn1] Got signal: 11 (Segmentation fault).
       0x559e09fed5f1 0x559e09fecdee 0x559e09fecfcc 0x559e095ed674 0x7f957652a890 0x559e08a23afc 0x559e08a258a3 0x559e099ea9a6 0x559e099f04f4 0x559e089338e8 0x559e08935dd4 0x559e08936b3a 0x559e0892476c 0x559e08930cec 0x559e0892c4ef 0x559e0892f77c 0x559e09732a72 0x559e08929eed 0x559e0892d1a3 0x559e0892b5b7 0x559e0892c44b 0x559e0892f77c 0x559e09732edb 0x559e09d770b4 0x7f957651f6db 0x7f957624888f
      ----- BEGIN BACKTRACE -----
      {"backtrace":[{"b":"559E077ED000","o":"28005F1","s":"_ZN5mongo15printStackTraceERSo"},{"b":"559E077ED000","o":"27FFDEE"},{"b":"559E077ED000","o":"27FFFCC"},{"b":"559E077ED000","o":"1E00674"},{"b":"7F9576518000","o":"12890"},{"b":"559E077ED000","o":"1236AFC"},{"b":"559E077ED000","o":"12388A3","s":"_ZN5mongo2mr16MapReduceCommand9errmsgRunEPNS_16OperationContextERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_7BSONObjERS9_RNS_14BSONObjBuilderE"},{"b":"559E077ED000","o":"21FD9A6","s":"_ZN5mongo23ErrmsgCommandDeprecated3runEPNS_16OperationContextERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_7BSONObjERNS_14BSONObjBuilderE"},{"b":"559E077ED000","o":"22034F4","s":"_ZN5mongo12BasicCommand10Invocation3runEPNS_16OperationContextEPNS_3rpc21ReplyBuilderInterfaceE"},{"b":"559E077ED000","o":"11468E8"},{"b":"559E077ED000","o":"1148DD4"},{"b":"559E077ED000","o":"1149B3A","s":"_ZN5mongo23ServiceEntryPointCommon13handleRequestEPNS_16OperationContextERKNS_7MessageERKNS0_5HooksE"},{"b":"559E077ED000","o":"113776C","s":"_ZN5mongo23ServiceEntryPointMongod13handleRequestEPNS_16OperationContextERKNS_7MessageE"},{"b":"559E077ED000","o":"1143CEC","s":"_ZN5mongo19ServiceStateMachine15_processMessageENS0_11ThreadGuardE"},{"b":"559E077ED000","o":"113F4EF","s":"_ZN5mongo19ServiceStateMachine15_runNextInGuardENS0_11ThreadGuardE"},{"b":"559E077ED000","o":"114277C"},{"b":"559E077ED000","o":"1F45A72","s":"_ZN5mongo9transport26ServiceExecutorSynchronous8scheduleESt8functionIFvvEENS0_15ServiceExecutor13ScheduleFlagsENS0_23ServiceExecutorTaskNameE"},{"b":"559E077ED000","o":"113CEED","s":"_ZN5mongo19ServiceStateMachine22_scheduleNextWithGuardENS0_11ThreadGuardENS_9transport15ServiceExecutor13ScheduleFlagsENS2_23ServiceExecutorTaskNameENS0_9OwnershipE"},{"b":"559E077ED000","o":"11401A3","s":"_ZN5mongo19ServiceStateMachine15_sourceCallbackENS_6StatusE"},{"b":"559E077ED000","o":"113E5B7","s":"_ZN5mongo19ServiceStateMachine14_sourceMessageENS0_11ThreadGuardE"},{"b":"559E077ED000","o":"113F44B","s":"_ZN5mongo19ServiceStateMachine15_runNextInGuardENS0_11ThreadGuardE"},{"b":"559E077ED000","o":"114277C"},{"b":"559E077ED000","o":"1F45EDB"},{"b":"559E077ED000","o":"258A0B4"},{"b":"7F9576518000","o":"76DB"},{"b":"7F9576127000","o":"12188F","s":"clone"}],"processInfo":{ "mongodbVersion" : "4.2.2", "gitVersion" : "a0bbbff6ada159e19298d37946ac8dc4b497eadf", "compiledModules" : [], "uname" : { "sysname" : "Linux", "release" : "5.0.0-37-generic", "version" : "#40~18.04.1-Ubuntu SMP Thu Nov 14 12:06:39 UTC 2019", "machine" : "x86_64" }, "somap" : [ { "b" : "559E077ED000", "elfType" : 3, "buildId" : "5B5D26CB8531995BD4C22A22BD0C2657C9F3A2FB" }, { "b" : "7FFECD6A7000", "path" : "linux-vdso.so.1", "elfType" : 3, "buildId" : "D1AA39513462B997B99085F995A37B71714B8370" }, { "b" : "7F95779BF000", "path" : "/usr/lib/x86_64-linux-gnu/libcurl.so.4", "elfType" : 3, "buildId" : "683A1F6A8C6401C61D29715C7F38B4586A175873" }, { "b" : "7F95777A4000", "path" : "/lib/x86_64-linux-gnu/libresolv.so.2", "elfType" : 3, "buildId" : "390E9CC4C215314B6D8ADE6D6E28F8518418039C" }, { "b" : "7F9577361000", "path" : "/usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0", "elfType" : 3, "buildId" : "9C228817BA6E0730F4FCCFAC6E033BD1E0C5620A" }, { "b" : "7F95770F9000", "path" : "/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0", "elfType" : 3, "buildId" : "0D054641049B9747C05D030262295DFDFDD3055D" }, { "b" : "7F9576EF5000", "path" : "/lib/x86_64-linux-gnu/libdl.so.2", "elfType" : 3, "buildId" : "25AD56E902E23B490A9CCDB08A9744D89CB95BCC" }, { "b" : "7F9576CED000", "path" : "/lib/x86_64-linux-gnu/librt.so.1", "elfType" : 3, "buildId" : "9826FBDF57ED7D6965131074CB3C08B1009C1CD8" }, { "b" : "7F957694F000", "path" : "/lib/x86_64-linux-gnu/libm.so.6", "elfType" : 3, "buildId" : "A33761AB8FB485311B3C85BF4253099D7CABE653" }, { "b" : "7F9576737000", "path" : "/lib/x86_64-linux-gnu/libgcc_s.so.1", "elfType" : 3, "buildId" : "41BDC55C07D5E5B1D8AB38E2C19B1F535855E084" }, { "b" : "7F9576518000", "path" : "/lib/x86_64-linux-gnu/libpthread.so.0", "elfType" : 3, "buildId" : "28C6AADE70B2D40D1F0F3D0A1A0CAD1AB816448F" }, { "b" : "7F9576127000", "path" : "/lib/x86_64-linux-gnu/libc.so.6", "elfType" : 3, "buildId" : "B417C0BA7CC5CF06D1D1BED6652CEDB9253C60D0" }, { "b" : "7F9577C3E000", "path" : "/lib64/ld-linux-x86-64.so.2", "elfType" : 3, "buildId" : "64DF1B961228382FE18684249ED800AB1DCEAAD4" }, { "b" : "7F9575F02000", "path" : "/usr/lib/x86_64-linux-gnu/libnghttp2.so.14", "elfType" : 3, "buildId" : "4F00E5207693FDC249DA42EC6472ACA6A7B929AE" }, { "b" : "7F9575CE5000", "path" : "/usr/lib/x86_64-linux-gnu/libidn2.so.0", "elfType" : 3, "buildId" : "EE6E9462BA2491F4EE8C4E52C3323274A9366614" }, { "b" : "7F9575AC9000", "path" : "/usr/lib/x86_64-linux-gnu/librtmp.so.1", "elfType" : 3, "buildId" : "69465D8AA6B19086ABF2455A703F9168BF82A69F" }, { "b" : "7F95758BB000", "path" : "/usr/lib/x86_64-linux-gnu/libpsl.so.5", "elfType" : 3, "buildId" : "CDAF1F1946846941F9D06414EC8C812D131A168E" }, { "b" : "7F9575670000", "path" : "/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2", "elfType" : 3, "buildId" : "00F419F64B0E70D8C5EEF7050369AA40B2A6E090" }, { "b" : "7F957541E000", "path" : "/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2", "elfType" : 3, "buildId" : "70EEF126558D1559A0A4E334FB68E4E9AABE90CB" }, { "b" : "7F9575210000", "path" : "/usr/lib/x86_64-linux-gnu/liblber-2.4.so.2", "elfType" : 3, "buildId" : "C14042EC7BD22B9A07D2C16563FE3C2606F52AB7" }, { "b" : "7F9574FF3000", "path" : "/lib/x86_64-linux-gnu/libz.so.1", "elfType" : 3, "buildId" : "EF3E006DFE3132A41D4D4DC0E407D6EA658E11C4" }, { "b" : "7F9574C75000", "path" : "/usr/lib/x86_64-linux-gnu/libunistring.so.2", "elfType" : 3, "buildId" : "0E2784298E7D3F4D894FE130ACEFA77C3E624F72" }, { "b" : "7F9574910000", "path" : "/usr/lib/x86_64-linux-gnu/libgnutls.so.30", "elfType" : 3, "buildId" : "E5AE5C31F804BE96532D0DB2091F19E472F2D4A0" }, { "b" : "7F95746DC000", "path" : "/usr/lib/x86_64-linux-gnu/libhogweed.so.4", "elfType" : 3, "buildId" : "842BDF0B0EAAB82E19F1EABFC38769F4040FBE31" }, { "b" : "7F95744A6000", "path" : "/usr/lib/x86_64-linux-gnu/libnettle.so.6", "elfType" : 3, "buildId" : "C20D4B3BA13FCDCC3BF6857689BA9FC70BE3F6A5" }, { "b" : "7F9574225000", "path" : "/usr/lib/x86_64-linux-gnu/libgmp.so.10", "elfType" : 3, "buildId" : "D40EA9B5EC5BC46799E4A412319617BD38BE9341" }, { "b" : "7F9573F4F000", "path" : "/usr/lib/x86_64-linux-gnu/libkrb5.so.3", "elfType" : 3, "buildId" : "69FBCF425EE6DF03DE93B82FBC2FC33790E68A96" }, { "b" : "7F9573D1D000", "path" : "/usr/lib/x86_64-linux-gnu/libk5crypto.so.3", "elfType" : 3, "buildId" : "F400D5D643A7F9696DF0E6148FA99BEE6C1BDDF7" }, { "b" : "7F9573B19000", "path" : "/lib/x86_64-linux-gnu/libcom_err.so.2", "elfType" : 3, "buildId" : "17107881DF65C66B4C6D38CAB37C285FA44663BD" }, { "b" : "7F957390E000", "path" : "/usr/lib/x86_64-linux-gnu/libkrb5support.so.0", "elfType" : 3, "buildId" : "D78D71E8E016A534281B25B97CD7E5E9DB5FE00A" }, { "b" : "7F95736F3000", "path" : "/usr/lib/x86_64-linux-gnu/libsasl2.so.2", "elfType" : 3, "buildId" : "ABB7E3F40302E6509DAD1F91DFB1F04B6A5FD072" }, { "b" : "7F95734B2000", "path" : "/usr/lib/x86_64-linux-gnu/libgssapi.so.3", "elfType" : 3, "buildId" : "A1A98DB481968073636BBAECB561A3EA8ED198AE" }, { "b" : "7F9573183000", "path" : "/usr/lib/x86_64-linux-gnu/libp11-kit.so.0", "elfType" : 3, "buildId" : "8DBD451EA5651283905E16FA7DFA9908688893A3" }, { "b" : "7F9572F70000", "path" : "/usr/lib/x86_64-linux-gnu/libtasn1.so.6", "elfType" : 3, "buildId" : "6036B89A3BB671B32E01464C0C82BFA016186352" }, { "b" : "7F9572D6C000", "path" : "/lib/x86_64-linux-gnu/libkeyutils.so.1", "elfType" : 3, "buildId" : "F463E107B099910463BC32E837C73D341A52C27B" }, { "b" : "7F9572B63000", "path" : "/usr/lib/x86_64-linux-gnu/libheimntlm.so.0", "elfType" : 3, "buildId" : "C2376C5B831991591F1A67B976758185F86896D8" }, { "b" : "7F95728D6000", "path" : "/usr/lib/x86_64-linux-gnu/libkrb5.so.26", "elfType" : 3, "buildId" : "69BDEE5FA0FEEDF317308BE850F78761861D520A" }, { "b" : "7F9572634000", "path" : "/usr/lib/x86_64-linux-gnu/libasn1.so.8", "elfType" : 3, "buildId" : "315D74995AAA32DE4D15BA25F335066988B1B230" }, { "b" : "7F95723FE000", "path" : "/usr/lib/x86_64-linux-gnu/libhcrypto.so.4", "elfType" : 3, "buildId" : "6673972A1C24A89EBAFBAE696188A4CB26C6DDEB" }, { "b" : "7F95721E8000", "path" : "/usr/lib/x86_64-linux-gnu/libroken.so.18", "elfType" : 3, "buildId" : "430827C33259C12248CF44B91A9A9821114376F5" }, { "b" : "7F9571FE0000", "path" : "/usr/lib/x86_64-linux-gnu/libffi.so.6", "elfType" : 3, "buildId" : "3555B5F599C9787DFDDBF9E8DF6F706B9044D985" }, { "b" : "7F9571DB7000", "path" : "/usr/lib/x86_64-linux-gnu/libwind.so.0", "elfType" : 3, "buildId" : "93A0931B1C2818F0EA224CE6FE5E31E84A9B55BB" }, { "b" : "7F9571BA8000", "path" : "/usr/lib/x86_64-linux-gnu/libheimbase.so.1", "elfType" : 3, "buildId" : "669D4CCE42FA4382796EFFCF0C16F459F4382C4C" }, { "b" : "7F957195E000", "path" : "/usr/lib/x86_64-linux-gnu/libhx509.so.5", "elfType" : 3, "buildId" : "4B80C543356EE0AF9039EFE7C9EA1CC1F74C426A" }, { "b" : "7F9571655000", "path" : "/usr/lib/x86_64-linux-gnu/libsqlite3.so.0", "elfType" : 3, "buildId" : "A609DB077BDC3B54A8C64BBCF82C2B7BD1CC8B98" }, { "b" : "7F957141D000", "path" : "/lib/x86_64-linux-gnu/libcrypt.so.1", "elfType" : 3, "buildId" : "810686AF0D5FD350A4FB1CC4B5AFF44A05C102CB" } ] }}
       mongod(_ZN5mongo15printStackTraceERSo+0x41) [0x559e09fed5f1]
       mongod(+0x27FFDEE) [0x559e09fecdee]
       mongod(+0x27FFFCC) [0x559e09fecfcc]
       mongod(+0x1E00674) [0x559e095ed674]
       libpthread.so.0(+0x12890) [0x7f957652a890]
       mongod(+0x1236AFC) [0x559e08a23afc]
       mongod(_ZN5mongo2mr16MapReduceCommand9errmsgRunEPNS_16OperationContextERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_7BSONObjERS9_RNS_14BSONObjBuilderE+0x6B3) [0x559e08a258a3]
       mongod(_ZN5mongo23ErrmsgCommandDeprecated3runEPNS_16OperationContextERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_7BSONObjERNS_14BSONObjBuilderE+0x46) [0x559e099ea9a6]
       mongod(_ZN5mongo12BasicCommand10Invocation3runEPNS_16OperationContextEPNS_3rpc21ReplyBuilderInterfaceE+0x74) [0x559e099f04f4]
       mongod(+0x11468E8) [0x559e089338e8]
       mongod(+0x1148DD4) [0x559e08935dd4]
       mongod(_ZN5mongo23ServiceEntryPointCommon13handleRequestEPNS_16OperationContextERKNS_7MessageERKNS0_5HooksE+0x41A) [0x559e08936b3a]
       mongod(_ZN5mongo23ServiceEntryPointMongod13handleRequestEPNS_16OperationContextERKNS_7MessageE+0x3C) [0x559e0892476c]
       mongod(_ZN5mongo19ServiceStateMachine15_processMessageENS0_11ThreadGuardE+0xEC) [0x559e08930cec]
       mongod(_ZN5mongo19ServiceStateMachine15_runNextInGuardENS0_11ThreadGuardE+0x17F) [0x559e0892c4ef]
       mongod(+0x114277C) [0x559e0892f77c]
       mongod(_ZN5mongo9transport26ServiceExecutorSynchronous8scheduleESt8functionIFvvEENS0_15ServiceExecutor13ScheduleFlagsENS0_23ServiceExecutorTaskNameE+0x182) [0x559e09732a72]
       mongod(_ZN5mongo19ServiceStateMachine22_scheduleNextWithGuardENS0_11ThreadGuardENS_9transport15ServiceExecutor13ScheduleFlagsENS2_23ServiceExecutorTaskNameENS0_9OwnershipE+0x10D) [0x559e08929eed]
       mongod(_ZN5mongo19ServiceStateMachine15_sourceCallbackENS_6StatusE+0x843) [0x559e0892d1a3]
       mongod(_ZN5mongo19ServiceStateMachine14_sourceMessageENS0_11ThreadGuardE+0x2E7) [0x559e0892b5b7]
       mongod(_ZN5mongo19ServiceStateMachine15_runNextInGuardENS0_11ThreadGuardE+0xDB) [0x559e0892c44b]
       mongod(+0x114277C) [0x559e0892f77c]
       mongod(+0x1F45EDB) [0x559e09732edb]
       mongod(+0x258A0B4) [0x559e09d770b4]
       libpthread.so.0(+0x76DB) [0x7f957651f6db]
       libc.so.6(clone+0x3F) [0x7f957624888f]
      -----  END BACKTRACE  -----
      Segmentation fault (core dumped)
      
      

      Re: https://github.com/Automattic/mongoose/issues/8438

      Attachments

        Issue Links

          Activity

            People

              matt.broadstone@mongodb.com Matt Broadstone
              val@karpov.io Valeri Karpov
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: