Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-18136

Malformed query causes Assertion and shows backtrace

    • Service Arch
    • ALL
    • Hide

      1) Create a (ruby) client. I don't know of other clients that would allow a non-document object to be sent in a query.

      client = Mongo::Client.new(["localhost:27017"])
      

      2) Send a query with a non-document object:

      client['test'].find('user').to_a
      

      The server will print a long backtrace and raise an AssertionException
      https://gist.github.com/estolfo/b1893b747f5c2c3a29f4

      Show
      1) Create a (ruby) client. I don't know of other clients that would allow a non-document object to be sent in a query. client = Mongo::Client. new ([ "localhost:27017" ]) 2) Send a query with a non-document object: client[ 'test' ].find( 'user' ).to_a The server will print a long backtrace and raise an AssertionException https://gist.github.com/estolfo/b1893b747f5c2c3a29f4

      Sending an invalid object to the server in a query causes Assertion and backtrace to print out.

      I realize the Ruby driver shouldn't be sending malformed documents to the server in queries but it seems like the server should handle this better.

       I NETWORK  [initandlisten] connection accepted from 127.0.0.1:59406 #4 (2 connections now open)
      2015-04-20T17:31:30.738+0200 I -        [conn4] Assertion: 10307:Client Error: bad object in message: invalid bson type in object with unknown _id
      2015-04-20T17:31:30.742+0200 I CONTROL  [conn4] 
       0x10c137379 0x10c0eaba0 0x10c0d8d1a 0x10c0d8bda 0x10bbc5778 0x10ba2b41d 0x10bc8abd4 0x10b9cf0de 0x10c0fa73c 0x10c16ada1 0x7fff8e1d9899 0x7fff8e1d972a 0x7fff8e1ddfc9
      ----- BEGIN BACKTRACE -----
      {"backtrace":[{"b":"10B9C3000","o":"774379"},{"b":"10B9C3000","o":"727BA0"},{"b":"10B9C3000","o":"715D1A"},{"b":"10B9C3000","o":"715BDA"},{"b":"10B9C3000","o":"202778"},{"b":"10B9C3000","o":"6841D"},{"b":"10B9C3000","o":"2C7BD4"},{"b":"10B9C3000","o":"C0DE"},{"b":"10B9C3000","o":"73773C"},{"b":"10B9C3000","o":"7A7DA1"},{"b":"7FFF8E1D8000","o":"1899"},{"b":"7FFF8E1D8000","o":"172A"},{"b":"7FFF8E1D8000","o":"5FC9"}],"processInfo":{ "mongodbVersion" : "3.0.2", "gitVersion" : "6201872043ecbbc0a4cc169b5482dcf385fc464f", "uname" : { "sysname" : "Darwin", "release" : "13.4.0", "version" : "Darwin Kernel Version 13.4.0: Wed Mar 18 16:20:14 PDT 2015; root:xnu-2422.115.14~1/RELEASE_X86_64", "machine" : "x86_64" }, "somap" : [ { "path" : "/usr/local/mongodb-3.0.2/bin/./mongod", "machType" : 2, "b" : "10B9C3000", "buildId" : "8E598755AF9132CC9EFCB21310EE588B" }, { "path" : "/usr/lib/libSystem.B.dylib", "machType" : 6, "b" : "7FFF94822000", "buildId" : "E303F2F8A8CF3DF384B3F2D0EE41CCF6" }, { "path" : "/usr/lib/libc++.1.dylib", "machType" : 6, "b" : "7FFF9216E000", "buildId" : "4F68DFC5207739A8A449CAC5FDEE7BDE" }, { "path" : "/usr/lib/system/libcache.dylib", "machType" : 6, "b" : "7FFF93C51000", "buildId" : "BDC1E65B72A13DA3A57CB23159CAAD0B" }, { "path" : "/usr/lib/system/libcommonCrypto.dylib", "machType" : 6, "b" : "7FFF944FA000", "buildId" : "8C4F0CA0389C3EDCB155E62DD2187E1D" }, { "path" : "/usr/lib/system/libcompiler_rt.dylib", "machType" : 6, "b" : "7FFF97FD7000", "buildId" : "4CD916B21B17362AB403EF24A1DAC141" }, { "path" : "/usr/lib/system/libcopyfile.dylib", "machType" : 6, "b" : "7FFF9956A000", "buildId" : "CF29DFF605893590834C82E2316612E8" }, { "path" : "/usr/lib/system/libcorecrypto.dylib", "machType" : 6, "b" : "7FFF99493000", "buildId" : "F3973C2814B63006BB2B00DD7F09ABC7" }, { "path" : "/usr/lib/system/libdispatch.dylib", "machType" : 6, "b" : "7FFF94801000", "buildId" : "C4E4A18D3C3B3C9C8709A4270D998DE7" }, { "path" : "/usr/lib/system/libdyld.dylib", "machType" : 6, "b" : "7FFF911DC000", "buildId" : "7C9EC3B7DDE333FF953F4067C743951D" }, { "path" : "/usr/lib/system/libkeymgr.dylib", "machType" : 6, "b" : "7FFF99723000", "buildId" : "3AA8D85DCF003BD3A5A0E28E1A32A6D8" }, { "path" : "/usr/lib/system/liblaunch.dylib", "machType" : 6, "b" : "7FFF93A2B000", "buildId" : "A40A0C7B321639B48AE0B5D3BAF1DA8A" }, { "path" : "/usr/lib/system/libmacho.dylib", "machType" : 6, "b" : "7FFF926B6000", "buildId" : "1D2910DFC0363A82A3FD44FF73B5FF9B" }, { "path" : "/usr/lib/system/libquarantine.dylib", "machType" : 6, "b" : "7FFF8F918000", "buildId" : "7A1A2BCBC03D3A25BFA43E569B2D2C38" }, { "path" : "/usr/lib/system/libremovefile.dylib", "machType" : 6, "b" : "7FFF982D6000", "buildId" : "3543F917928E3DB2A2F47AB73B4970EF" }, { "path" : "/usr/lib/system/libsystem_asl.dylib", "machType" : 6, "b" : "7FFF94C71000", "buildId" : "655FB34352CF3E2FB14DBEBF5AAEF94D" }, { "path" : "/usr/lib/system/libsystem_blocks.dylib", "machType" : 6, "b" : "7FFF976A6000", "buildId" : "FB856CD12AEA39078E9B1E54B6827F82" }, { "path" : "/usr/lib/system/libsystem_c.dylib", "machType" : 6, "b" : "7FFF94DA2000", "buildId" : "6FD3A4004BB23B95B90CBE6E9D0D78FA" }, { "path" : "/usr/lib/system/libsystem_configuration.dylib", "machType" : 6, "b" : "7FFF98B24000", "buildId" : "4998CB6A9D54390A9F575D1AC53C135C" }, { "path" : "/usr/lib/system/libsystem_dnssd.dylib", "machType" : 6, "b" : "7FFF8DD6F000", "buildId" : "17B03FFD92C532829981EBB28B456207" }, { "path" : "/usr/lib/system/libsystem_info.dylib", "machType" : 6, "b" : "7FFF96A25000", "buildId" : "7D41A156D2853849A2C3C04ADE797D98" }, { "path" : "/usr/lib/system/libsystem_kernel.dylib", "machType" : 6, "b" : "7FFF96F0D000", "buildId" : "8116098DB3F13E50A934576DD6369234" }, { "path" : "/usr/lib/system/libsystem_m.dylib", "machType" : 6, "b" : "7FFF8E141000", "buildId" : "B7F0E2E4277733FCA787D6430B630D54" }, { "path" : "/usr/lib/system/libsystem_malloc.dylib", "machType" : 6, "b" : "7FFF96DDB000", "buildId" : "A695B4E438E9332EA77229D31E3F1385" }, { "path" : "/usr/lib/system/libsystem_network.dylib", "machType" : 6, "b" : "7FFF996FB000", "buildId" : "0D630D53C7723EC58257EFB0ACCE3153" }, { "path" : "/usr/lib/system/libsystem_notify.dylib", "machType" : 6, "b" : "7FFF98C04000", "buildId" : "9B34B4FEF5AD3F09A5F046AFF3571323" }, { "path" : "/usr/lib/system/libsystem_platform.dylib", "machType" : 6, "b" : "7FFF8DD78000", "buildId" : "3C3D3DA832B9324398ECD89B9A1670B3" }, { "path" : "/usr/lib/system/libsystem_pthread.dylib", "machType" : 6, "b" : "7FFF8E1D8000", "buildId" : "AB498556B555310E9041F67EC9E00E2C" }, { "path" : "/usr/lib/system/libsystem_sandbox.dylib", "machType" : 6, "b" : "7FFF8FA3D000", "buildId" : "0C93EB2373643670B511212A7A524695" }, { "path" : "/usr/lib/system/libsystem_stats.dylib", "machType" : 6, "b" : "7FFF991CD000", "buildId" : "4E51D5B092A03D0DB90E495A1ED3E391" }, { "path" : "/usr/lib/system/libunc.dylib", "machType" : 6, "b" : "7FFF93630000", "buildId" : "62682455186236FE8A047A6B91256438" }, { "path" : "/usr/lib/system/libunwind.dylib", "machType" : 6, "b" : "7FFF99BB8000", "buildId" : "78DCC3582FC1302EB3950155B47CB547" }, { "path" : "/usr/lib/system/libxpc.dylib", "machType" : 6, "b" : "7FFF94A6E000", "buildId" : "AB40CD57F4543FD4B41563B3C0D5C624" }, { "path" : "/usr/lib/libobjc.A.dylib", "machType" : 6, "b" : "7FFF8EAA4000", "buildId" : "AD7FD984271E30F4A3616B20319EC73B" }, { "path" : "/usr/lib/libauto.dylib", "machType" : 6, "b" : "7FFF935ED000", "buildId" : "F45C36E8B6063886B5B1B6745E757CA8" }, { "path" : "/usr/lib/libc++abi.dylib", "machType" : 6, "b" : "7FFF9727A000", "buildId" : "21A807D367323455B77F743E9F916DF0" }, { "path" : "/usr/lib/libDiagnosticMessagesClient.dylib", "machType" : 6, "b" : "7FFF98512000", "buildId" : "4CDB0F7BC0AF3424BC39495696F0DB1E" } ] }}
       mongod(_ZN5mongo15printStackTraceERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEE+0x39) [0x10c137379]
       mongod(_ZN5mongo10logContextEPKc+0x100) [0x10c0eaba0]
       mongod(_ZN5mongo11msgassertedEiPKc+0x13A) [0x10c0d8d1a]
       mongod(_ZN5mongo11msgassertedEiRKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE+0x1A) [0x10c0d8bda]
       mongod(_ZN5mongo9DbMessage9nextJsObjEv+0x2B8) [0x10bbc5778]
       mongod(_ZN5mongo12QueryMessageC2ERNS_9DbMessageE+0x5D) [0x10ba2b41d]
       mongod(_ZN5mongo16assembleResponseEPNS_16OperationContextERNS_7MessageERNS_10DbResponseERKNS_11HostAndPortE+0x3F4) [0x10bc8abd4]
       mongod(_ZN5mongo16MyMessageHandler7processERNS_7MessageEPNS_21AbstractMessagingPortEPNS_9LastErrorE+0xDE) [0x10b9cf0de]
       mongod(_ZN5mongo17PortMessageServer17handleIncomingMsgEPv+0x33C) [0x10c0fa73c]
       mongod(_ZN5boost12_GLOBAL__N_112thread_proxyEPv+0xB1) [0x10c16ada1]
       libsystem_pthread.dylib(_pthread_body+0x8A) [0x7fff8e1d9899]
       libsystem_pthread.dylib(_pthread_struct_init+0x0) [0x7fff8e1d972a]
       libsystem_pthread.dylib(thread_start+0xD) [0x7fff8e1ddfc9]
      -----  END BACKTRACE  -----
      2015-04-20T17:31:30.743+0200 I NETWORK  [conn4] AssertionException handling request, closing client connection: 10307 Client Error: bad object in message: invalid bson type in object with unknown _id
      

            Assignee:
            backlog-server-servicearch [DO NOT USE] Backlog - Service Architecture
            Reporter:
            emily.stolfo Emily Stolfo
            Votes:
            0 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated: