{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:10:37Z","timestamp":1750306237255,"version":"3.41.0"},"reference-count":18,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2017,2,1]],"date-time":"2017-02-01T00:00:00Z","timestamp":1485907200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Queue"],"published-print":{"date-parts":[[2017,2]]},"abstract":"<jats:p>As MongoDB becomes more feature-rich and complex with time, the need to develop more sophisticated methods for finding bugs grows as well. Three years ago, MongDB added a home-grown JavaScript fuzzer to its toolkit, and it is now our most prolific bug-finding tool, responsible for detecting almost 200 bugs over the course of two release cycles. These bugs span a range of MongoDB components from sharding to the storage engine, with symptoms ranging from deadlocks to data inconsistency. The fuzzer runs as part of the CI (continuous integration) system, where it frequently catches bugs in newly committed code.<\/jats:p>","DOI":"10.1145\/3055301.3059007","type":"journal-article","created":{"date-parts":[[2019,4,29]],"date-time":"2019-04-29T18:25:04Z","timestamp":1556562304000},"page":"38-56","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["MongoDB\u2019s JavaScript Fuzzer"],"prefix":"10.1145","volume":"15","author":[{"given":"Robert","family":"Guo","sequence":"first","affiliation":[{"name":"MongoDB"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2017,2]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Acorn; https:\/\/github.com\/ternjs\/acorn.  Acorn; https:\/\/github.com\/ternjs\/acorn."},{"key":"e_1_2_1_2_1","unstructured":"Chacon S. Straub B.. Git-bisect; https:\/\/git-scm.com\/book\/en\/v2.  Chacon S. Straub B.. Git-bisect; https:\/\/git-scm.com\/book\/en\/v2."},{"key":"e_1_2_1_3_1","unstructured":"Clang 3.8 Documentation. Using Clang as a compiler; http:\/\/releases.llvm.org\/3.8.0\/tools\/clang\/docs\/index.html#using-clang-as-a-compiler.  Clang 3.8 Documentation. Using Clang as a compiler; http:\/\/releases.llvm.org\/3.8.0\/tools\/clang\/docs\/index.html#using-clang-as-a-compiler."},{"key":"e_1_2_1_4_1","unstructured":"Clang 3.8 Documentation. AddressSanitizer; http:\/\/releases.llvm.org\/3.8.0\/tools\/clang\/docs\/AddressSanitizer.html.  Clang 3.8 Documentation. AddressSanitizer; http:\/\/releases.llvm.org\/3.8.0\/tools\/clang\/docs\/AddressSanitizer.html."},{"key":"e_1_2_1_5_1","unstructured":"Clang 3.8 Documentation. UndefinedBehaviorSanitizer; http:\/\/releases.llvm.org\/3.8.0\/tools\/clang\/docs\/UndefinedBehaviorSanitizer.html.  Clang 3.8 Documentation. UndefinedBehaviorSanitizer; http:\/\/releases.llvm.org\/3.8.0\/tools\/clang\/docs\/UndefinedBehaviorSanitizer.html."},{"key":"e_1_2_1_6_1","unstructured":"Cursor.explain(). MongoDB Documentation; https:\/\/docs.mongodb.com\/manual\/reference\/method\/cursor.explain\/.  Cursor.explain(). MongoDB Documentation; https:\/\/docs.mongodb.com\/manual\/reference\/method\/cursor.explain\/."},{"key":"e_1_2_1_7_1","unstructured":"D\u00e9j\u00e0 vu Security. 2014. Generation fuzzing. Peach Fuzzer; http:\/\/community.peachfuzzer.com\/GenerationMutationFuzzing.html.  D\u00e9j\u00e0 vu Security. 2014. Generation fuzzing. Peach Fuzzer; http:\/\/community.peachfuzzer.com\/GenerationMutationFuzzing.html."},{"key":"e_1_2_1_8_1","unstructured":"Erf K. 2016. Evergreen continuous integration: why we reinvented the wheel. MongoDB Engineering Journal; https:\/\/engineering.mongodb.com\/post\/evergreen-continuous-integration-why-we-reinvented-the-wheel\/.  Erf K. 2016. Evergreen continuous integration: why we reinvented the wheel. MongoDB Engineering Journal; https:\/\/engineering.mongodb.com\/post\/evergreen-continuous-integration-why-we-reinvented-the-wheel\/."},{"key":"e_1_2_1_9_1","unstructured":"GitHub. MongoDB; https:\/\/github.com\/mongodb\/mongo\/blob\/f5c9d27ca6f0f4e1e2673c64b84b628ac29493ec\/src\/mongo\/db\/repl\/sync_tail.cpp#L1042.  GitHub. MongoDB; https:\/\/github.com\/mongodb\/mongo\/blob\/f5c9d27ca6f0f4e1e2673c64b84b628ac29493ec\/src\/mongo\/db\/repl\/sync_tail.cpp#L1042."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2093548.2093564"},{"key":"e_1_2_1_11_1","unstructured":"Guo R. 2016. Mongos segfault when invoking .explain() on certain operations. MongoDB; https:\/\/jira.mongodb.org\/browse\/SERVER-22767.  Guo R. 2016. Mongos segfault when invoking .explain() on certain operations. MongoDB; https:\/\/jira.mongodb.org\/browse\/SERVER-22767."},{"key":"e_1_2_1_12_1","unstructured":"Guo R. 2016. $push to a large array fasserts on secondaries. MongoDB; https:\/\/jira.mongodb.org\/browse\/SERVER-22635.  Guo R. 2016. $push to a large array fasserts on secondaries. MongoDB; https:\/\/jira.mongodb.org\/browse\/SERVER-22635."},{"key":"e_1_2_1_13_1","unstructured":"Kamsky A. 2016. Update considers a change in numerical type to be a noop. MongoDB; https:\/\/jira.mongodb.org\/browse\/SERVER-16801.  Kamsky A. 2016. Update considers a change in numerical type to be a noop. MongoDB; https:\/\/jira.mongodb.org\/browse\/SERVER-16801."},{"key":"e_1_2_1_14_1","unstructured":"McCloskey B. etal 2015. Parser API. Mozilla Developer Network; https:\/\/developer.mozilla.org\/en-US\/docs\/Mozilla\/Projects\/SpiderMonkey\/Parser_API#Expressions.  McCloskey B. et al. 2015. Parser API. Mozilla Developer Network; https:\/\/developer.mozilla.org\/en-US\/docs\/Mozilla\/Projects\/SpiderMonkey\/Parser_API#Expressions."},{"key":"e_1_2_1_15_1","unstructured":"Nossum V. Casasnovas Q. 2016. Filesystem fuzzing with American Fuzzy Lop. Oracle Linux and VM Development--Ksplice Team; https:\/\/events.linuxfoundation.org\/sites\/events\/files\/slides\/AFL filesystem fuzzing Vault 2016_0.pdf.  Nossum V. Casasnovas Q. 2016. Filesystem fuzzing with American Fuzzy Lop. Oracle Linux and VM Development--Ksplice Team; https:\/\/events.linuxfoundation.org\/sites\/events\/files\/slides\/AFL filesystem fuzzing Vault 2016_0.pdf."},{"key":"e_1_2_1_16_1","unstructured":"Ruderman J. 2007. Introducing jsfunfuzz. Indistinguishable from Jesse; https:\/\/www.squarefree.com\/2007\/08\/02\/introducing-jsfunfuzz\/.  Ruderman J. 2007. Introducing jsfunfuzz. Indistinguishable from Jesse; https:\/\/www.squarefree.com\/2007\/08\/02\/introducing-jsfunfuzz\/."},{"key":"e_1_2_1_17_1","unstructured":"Siu I. 2016. Explain(\"executionStats\") can attempt to access a collection after it has been dropped. MongoDB; https:\/\/jira.mongodb.org\/browse\/SERVER-24755.  Siu I. 2016. Explain(\"executionStats\") can attempt to access a collection after it has been dropped. MongoDB; https:\/\/jira.mongodb.org\/browse\/SERVER-24755."},{"key":"e_1_2_1_18_1","unstructured":"Storch D. 2016. MongoDB jstests. GitHub; https:\/\/github.com\/mongodb\/mongo\/tree\/r3.3.12\/jstests.  Storch D. 2016. MongoDB jstests. GitHub; https:\/\/github.com\/mongodb\/mongo\/tree\/r3.3.12\/jstests."}],"container-title":["Queue"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3055301.3059007","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3055301.3059007","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:23:26Z","timestamp":1750220606000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3055301.3059007"}},"subtitle":["The fuzzer is for those edge cases that your testing didn\u2019t catch."],"short-title":[],"issued":{"date-parts":[[2017,2]]},"references-count":18,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2017,2]]}},"alternative-id":["10.1145\/3055301.3059007"],"URL":"https:\/\/doi.org\/10.1145\/3055301.3059007","relation":{},"ISSN":["1542-7730","1542-7749"],"issn-type":[{"type":"print","value":"1542-7730"},{"type":"electronic","value":"1542-7749"}],"subject":[],"published":{"date-parts":[[2017,2]]},"assertion":[{"value":"2017-02-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}