[SERVER-16615] Long database names will crash server during repair on mmapv1 when using directoryperdb Created: 19/Dec/14  Updated: 29/Apr/15  Resolved: 29/Dec/14

Status: Closed
Project: Core Server
Component/s: Storage
Affects Version/s: None
Fix Version/s: 2.8.0-rc5

Type: Bug Priority: Major - P3
Reporter: Spencer Jackson Assignee: Spencer Jackson
Resolution: Done Votes: 0
Labels: 28qa, mmapv1
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-18256 mongod crashes with assert when tryin... Closed
Backwards Compatibility: Fully Compatible
Operating System: ALL
Steps To Reproduce:

Start a fresh database with:
./mongod --directoryperdb
and run in the shell:

> use aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
switched to db aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> db.u.insert({})
WriteResult(

{ "nInserted" : 1 }

)
> db.runCommand(

{repairDatabase: 1}

)

Participants:

 Description   

A document inserted into a mmapv1 database using directoryperdb with a sufficiently long name will terminate the server and cause a backtrace when repairDatabase is executed. This behavior was not observed under WiredTiger.

2014-12-19T18:04:26.157-0500 I INDEX [conn1] build index on: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.u properties: { v: 1, key:

{ _id: 1 }

, name: "id", ns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.u" }
2014-12-19T18:04:26.157-0500 I INDEX [conn1] building index using bulk method
2014-12-19T18:04:26.157-0500 D STORAGE [conn1] aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.u: clearing plan cache - collection info cache reset
2014-12-19T18:04:26.157-0500 D INDEX [conn1] bulk commit starting for index: id
2014-12-19T18:04:26.157-0500 D INDEX [conn1] done building bottom layer, going to commit
2014-12-19T18:04:26.157-0500 D STORAGE [conn1] aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.u: clearing plan cache - collection info cache reset
2014-12-19T18:04:26.157-0500 D STORAGE [conn1] aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.u: clearing plan cache - collection info cache reset
2014-12-19T18:04:26.158-0500 D JOURNAL [journal] _groupCommit
2014-12-19T18:04:26.158-0500 D STORAGE [journal] flushing directory /data/db/journal
2014-12-19T18:04:26.162-0500 D STORAGE [journal] flushing directory /data/db/journal
2014-12-19T18:04:26.177-0500 D JOURNAL [journal] lsn set 13651
2014-12-19T18:04:26.177-0500 D JOURNAL [journal] journal WRITETODATAFILES 1
2014-12-19T18:04:26.177-0500 I JOURNAL [journal] problem processing journal file during recovery
2014-12-19T18:04:26.177-0500 I JOURNAL [journal] unhandled exception in durThread causing immediate shutdown
2014-12-19T18:04:26.177-0500 F COMMAND [journal] unhandled exception in durThread
2014-12-19T18:04:26.184-0500 F - [journal] Got signal: 6 (Aborted).

0x19a1e53 0x19a1d15 0x19a1823 0x7f7a015ae550 0x7f7a015ae4c9 0x7f7a015af958 0x136ef84 0x16d309d 0x1596cc6 0x19e9084 0x7f7a022be0db 0x7f7a0166058d
----- BEGIN BACKTRACE -----
{"backtrace":[

{"b":"400000","o":"15A1E53"}

,

{"b":"400000","o":"15A1D15"}

,

{"b":"400000","o":"15A1823"}

,

{"b":"7F7A01579000","o":"35550"}

,

{"b":"7F7A01579000","o":"354C9"}

,

{"b":"7F7A01579000","o":"36958"}

,

{"b":"400000","o":"F6EF84"}

,

{"b":"400000","o":"12D309D"}

,

{"b":"400000","o":"1196CC6"}

,

{"b":"400000","o":"15E9084"}

,

{"b":"7F7A022B6000","o":"80DB"}

,

{"b":"7F7A01579000","o":"E758D"}

],"processInfo":{ "mongodbVersion" : "2.8.0-rc4-pre-", "gitVersion" : "e7b514171c2bfbd6029e9cfc5daf3ac2a699e293 modules: subscription", "uname" :

{ "sysname" : "Linux", "release" : "3.17.4-2.g2d23787-desktop", "version" : "#1 SMP PREEMPT Tue Nov 25 20:17:30 UTC 2014 (2d23787)", "machine" : "x86_64" }

, "somap" : [

{ "elfType" : 2, "b" : "400000", "buildId" : "127F808698F4CA62F7627FF75D7EA3C5A552321D" }

,

{ "b" : "7FFF925FE000", "path" : "linux-vdso.so.1", "elfType" : 3, "buildId" : "6B2E43D38205BED52DFAD1887AC63806A7345757" }

,

{ "b" : "7F7A04456000", "path" : "/usr/lib64/libsasl2.so.2", "elfType" : 3, "buildId" : "BE3019C7B6BB3BB0312613871673857E98EBF34E" }

,

{ "b" : "7F7A03F9E000", "path" : "/usr/lib64/libnetsnmpmibs.so.30", "elfType" : 3, "buildId" : "6BAB066098313A5B6F6E503B3E5CA738EC00A3EF" }

,

{ "b" : "7F7A03D8F000", "path" : "/usr/lib64/libsensors.so.4", "elfType" : 3, "buildId" : "FB719500964D1833D52CE8DD730849E89D96BA05" }

,

{ "b" : "7F7A03B8B000", "path" : "/lib64/libdl.so.2", "elfType" : 3, "buildId" : "666913EC064C25FDE1720DB77B1F57BDEB5D9B3A" }

,

{ "b" : "7F7A037B7000", "path" : "/usr/lib64/librpm.so.3", "elfType" : 3, "buildId" : "038922E310A8B00BE9E9BA564CDAA47C87A184AA" }

,

{ "b" : "7F7A03566000", "path" : "/usr/lib64/librpmio.so.3", "elfType" : 3, "buildId" : "B42C339BCC9D9CB51416716F080F1A32013C92BC" }

,

{ "b" : "7F7A032F7000", "path" : "/usr/lib64/libnetsnmpagent.so.30", "elfType" : 3, "buildId" : "AB25E6A40B2BFE5F7EE213E271A496F7724A5821" }

,

{ "b" : "7F7A030EC000", "path" : "/lib64/libwrap.so.0", "elfType" : 3, "buildId" : "1B986139DE9922CBAD77FD86BBBEDD752844FEAF" }

,

{ "b" : "7F7A02E09000", "path" : "/usr/lib64/libnetsnmp.so.30", "elfType" : 3, "buildId" : "B7518EBA89C271B322A57A42E3427E52AF54EB74" }

,

{ "b" : "7F7A02A1D000", "path" : "/lib64/libcrypto.so.1.0.0", "elfType" : 3, "buildId" : "D781931A27CC80C55A27B8448944BA7F5B0C3E08" }

,

{ "b" : "7F7A0271A000", "path" : "/lib64/libm.so.6", "elfType" : 3, "buildId" : "35D35D9CE781BE3A140A34242D998498615B021F" }

,

{ "b" : "7F7A024D4000", "path" : "/usr/lib64/libgssapi_krb5.so.2", "elfType" : 3, "buildId" : "4500EFC6B03F2515A34C8CBFFEB536EAB625BFFA" }

,

{ "b" : "7F7A022B6000", "path" : "/lib64/libpthread.so.0", "elfType" : 3, "buildId" : "24A941B6C85E244BD2E4906928DC17AB63B0A38A" }

,

{ "b" : "7F7A0204E000", "path" : "/lib64/libssl.so.1.0.0", "elfType" : 3, "buildId" : "44F5AFDAB585C00E3E94A89882CBFDB9BAA60F06" }

,

{ "b" : "7F7A01E46000", "path" : "/lib64/librt.so.1", "elfType" : 3, "buildId" : "0913D5EA4659CFA3FFAD451ACC84A6ED62772141" }

,

{ "b" : "7F7A01B3E000", "path" : "/usr/lib64/libstdc++.so.6", "elfType" : 3, "buildId" : "893844CE9810835B76559F6EC3DC5A15E0D32A00" }

,

{ "b" : "7F7A01927000", "path" : "/lib64/libgcc_s.so.1", "elfType" : 3, "buildId" : "26253BEC1076626F73B8B13BED9510AE626E1EAD" }

,

{ "b" : "7F7A01579000", "path" : "/lib64/libc.so.6", "elfType" : 3, "buildId" : "71DBBED0200919BA751AD20A545B9266258CD5E5" }

,

{ "b" : "7F7A04673000", "path" : "/lib64/ld-linux-x86-64.so.2", "elfType" : 3, "buildId" : "AFA98667969782208459E394F8C8F87AC7510710" }

,

{ "b" : "7F7A0136D000", "path" : "/usr/lib64/libpopt.so.0", "elfType" : 3, "buildId" : "006D8E514AC130530294E6CFF5D8F77900DF869B" }

,

{ "b" : "7F7A01149000", "path" : "/lib64/libselinux.so.1", "elfType" : 3, "buildId" : "E2BBA1E6E7493C181AB4DA9F2C771C8DB0875872" }

,

{ "b" : "7F7A00F44000", "path" : "/lib64/libcap.so.2", "elfType" : 3, "buildId" : "6F5E67B736B349EBE34CC2196BD4342736278777" }

,

{ "b" : "7F7A00D3B000", "path" : "/lib64/libacl.so.1", "elfType" : 3, "buildId" : "684353207FA9BBA104A505EA9577DD10D74B9B51" }

,

{ "b" : "7F7A00B0B000", "path" : "/usr/lib64/liblua.so.5.1", "elfType" : 3, "buildId" : "8A9137F7CB106BDC6A51591F03AADABADB2088F9" }

,

{ "b" : "7F7A008FC000", "path" : "/usr/lib64/libbz2.so.1", "elfType" : 3, "buildId" : "0B6B84C801AD3C496B90FDA2D310259CEF812099" }

,

{ "b" : "7F7A006E6000", "path" : "/lib64/libz.so.1", "elfType" : 3, "buildId" : "9E815EF41BF59451F1855B91195B2124E2A95F9E" }

,

{ "b" : "7F7A004D0000", "path" : "/usr/lib64/libelf.so.1", "elfType" : 3, "buildId" : "984C530D8F881257D517CE19FCD80841F2230D80" }

,

{ "b" : "7F7A002AA000", "path" : "/usr/lib64/liblzma.so.5", "elfType" : 3, "buildId" : "8F2CBB2A0E341BEF4D5116EEDE8A83465DE6CA4B" }

,

{ "b" : "7F79FFF17000", "path" : "/usr/lib/perl5/5.18.1/x86_64-linux-thread-multi/CORE/libperl.so", "elfType" : 3, "buildId" : "217B4A7EA7DF2A7B46BC93993FD7630EC1175D0C" }

,

{ "b" : "7F79FFC48000", "path" : "/usr/lib64/libkrb5.so.3", "elfType" : 3, "buildId" : "43FCBEA839B52BDA91D5CC00AFA9EC4AE0E324DC" }

,

{ "b" : "7F79FFA15000", "path" : "/usr/lib64/libk5crypto.so.3", "elfType" : 3, "buildId" : "3EA89068D8F8FEE53C767950C64293B4D678FF61" }

,

{ "b" : "7F79FF811000", "path" : "/lib64/libcom_err.so.2", "elfType" : 3, "buildId" : "94324D6C48D39D04069706D01E6AF2D5D4429385" }

,

{ "b" : "7F79FF604000", "path" : "/usr/lib64/libkrb5support.so.0", "elfType" : 3, "buildId" : "BC48F2A6DC84F7475BCD61857A742D8F2FE27139" }

,

{ "b" : "7F79FF39E000", "path" : "/usr/lib64/libpcre.so.1", "elfType" : 3, "buildId" : "EF846533CF9AA9F40966FF8F2C1D120F1847BB45" }

,

{ "b" : "7F79FF199000", "path" : "/lib64/libattr.so.1", "elfType" : 3, "buildId" : "B6C7F251CBA059292F8892B74F4D2C167665C785" }

,

{ "b" : "7F79FEF5E000", "path" : "/lib64/libcrypt.so.1", "elfType" : 3, "buildId" : "355B60D4EFA51BB76FF03EB56A0986F555755453" }

,

{ "b" : "7F79FED5A000", "path" : "/lib64/libkeyutils.so.1", "elfType" : 3, "buildId" : "8EEA8B23F6DF125C66129A2DB29614A38300B77A" }

,

{ "b" : "7F79FEB43000", "path" : "/lib64/libresolv.so.2", "elfType" : 3, "buildId" : "799562EB36D9479DF11B4BB13D8C29D852484FE8" }

] }}
mongod(_ZN5mongo15printStackTraceERSo+0x23) [0x19a1e53]
mongod(+0x15A1D15) [0x19a1d15]
mongod(+0x15A1823) [0x19a1823]
libc.so.6(+0x35550) [0x7f7a015ae550]
libc.so.6(gsignal+0x39) [0x7f7a015ae4c9]
libc.so.6(abort+0x148) [0x7f7a015af958]
mongod(_ZN5mongo10mongoAbortEPKc+0x64) [0x136ef84]
mongod(+0x12D309D) [0x16d309d]
mongod(_ZN5boost6detail11thread_dataIPFvvEE3runEv+0x16) [0x1596cc6]
mongod(+0x15E9084) [0x19e9084]
libpthread.so.0(+0x80DB) [0x7f7a022be0db]
libc.so.6(clone+0x6D) [0x7f7a0166058d]
----- END BACKTRACE -----



 Comments   
Comment by Githook User [ 29/Dec/14 ]

Author:

{u'username': u'spencerjackson', u'name': u'Spencer Jackson', u'email': u'spencer.jackson@mongodb.com'}

Message: SERVER-16615: Fix mmapv1 repairDatabase for long db paths
Branch: master
https://github.com/mongodb/mongo/commit/d9ac3cfb459c5304f155effa0dc3b14f87868e7b

Comment by Spencer Jackson [ 19/Dec/14 ]

It turns out this issue is not related to unicode, and can be reproduced with a sufficiently large ASCII string.

Comment by Eric Milkie [ 19/Dec/14 ]

http://docs.mongodb.org/manual/reference/limits/#naming-restrictions

But I suppose you could craft a Unicode name that happened to have no null bytes in it?

Comment by Eric Milkie [ 19/Dec/14 ]

"Unicode" database names are prohibited; the character set allowed is basically the same character set that is allowed for Windows FAT-32 filenames.
There might be a bug here where we are not checking for illegal characters.

Generated at Thu Feb 08 03:41:40 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.