MongoDB服务器崩溃,显示以下错误

我有一个运行在Ubuntu Server 12.04的VMWare VM中的MongoDB实例。 突然,服务器崩溃了,当我尝试重新启动它,我得到以下错误:

jonathanong@ubuntu:~/mongodb/solo$ /usr/bin/mongod --fork --port 27027 --dbpath ~/mongodb/solo --logpath ~/mongodb/solo/mongodb.log Thu Jan 17 00:54:25 Assertion failure getcwd( buffer , 1000 ) src/mongo/db/cmdline.cpp 188 0xaffd31 0xac65cd 0x6878a8 0x55f070 0x565d39 0x7f2b226d176d 0x558149 /usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xaffd31] /usr/bin/mongod(_ZN5mongo12verifyFailedEPKcS1_j+0xfd) [0xac65cd] /usr/bin/mongod(_ZN5mongo7CmdLine5storeEiPPcRN5boost15program_options19options_descriptionES6_RNS4_30positional_options_descriptionERNS4_13variables_mapE+0x4a38) [0x6878a8] /usr/bin/mongod() [0x55f070] /usr/bin/mongod(main+0x9) [0x565d39] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f2b226d176d] /usr/bin/mongod(__gxx_personality_v0+0x471) [0x558149] Thu Jan 17 00:54:25 terminate() called, printing stack (if implemented for platform): 0xaffd31 0x55840e 0x7f2b23036846 0x7f2b23036873 0x7f2b2303696e 0xac6776 0x6878a8 0x55f070 0x565d39 0x7f2b226d176d 0x558149 /usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xaffd31] /usr/bin/mongod(_ZN5mongo11myterminateEv+0x3e) [0x55840e] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5846) [0x7f2b23036846] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5873) [0x7f2b23036873] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb596e) [0x7f2b2303696e] /usr/bin/mongod(_ZN5mongo12verifyFailedEPKcS1_j+0x2a6) [0xac6776] /usr/bin/mongod(_ZN5mongo7CmdLine5storeEiPPcRN5boost15program_options19options_descriptionES6_RNS4_30positional_options_descriptionERNS4_13variables_mapE+0x4a38) [0x6878a8] /usr/bin/mongod() [0x55f070] /usr/bin/mongod(main+0x9) [0x565d39] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f2b226d176d] /usr/bin/mongod(__gxx_personality_v0+0x471) [0x558149] Thu Jan 17 00:54:25 Got signal: 6 (Aborted). Thu Jan 17 00:54:25 Backtrace: 0xaffd31 0x558bb9 0x7f2b226e64a0 0x7f2b226e6425 0x7f2b226e9b8b 0x558413 0x7f2b23036846 0x7f2b23036873 0x7f2b2303696e 0xac6776 0x6878a8 0x55f070 0x565d39 0x7f2b226d176d 0x558149 /usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xaffd31] /usr/bin/mongod(_ZN5mongo10abruptQuitEi+0x399) [0x558bb9] /lib/x86_64-linux-gnu/libc.so.6(+0x364a0) [0x7f2b226e64a0] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7f2b226e6425] /lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x7f2b226e9b8b] /usr/bin/mongod(_ZN5mongo11myterminateEv+0x43) [0x558413] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5846) [0x7f2b23036846] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5873) [0x7f2b23036873] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb596e) [0x7f2b2303696e] /usr/bin/mongod(_ZN5mongo12verifyFailedEPKcS1_j+0x2a6) [0xac6776] /usr/bin/mongod(_ZN5mongo7CmdLine5storeEiPPcRN5boost15program_options19options_descriptionES6_RNS4_30positional_options_descriptionERNS4_13variables_mapE+0x4a38) [0x6878a8] /usr/bin/mongod() [0x55f070] /usr/bin/mongod(main+0x9) [0x565d39] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f2b226d176d] /usr/bin/mongod(__gxx_personality_v0+0x471) [0x558149] 

这是从mongodb-10gen下载的MongoDB 2.2.2: http : //docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

有任何想法吗?

编辑:所以我从头开始创build一个新的虚拟机,它是完全正常的。 所以,这不是一个展示我自己的计划,因为我打算使用托pipe托pipe。 不过,知道问题会很好!

看起来你可以,但是仅供参考:这只是发生在我身上。 几乎相同的堆栈跟踪。 问题是,当我重新启动mongod时,我当前在这个shell中的目录恰好是我刚刚删除(在另一个shell中)的目录。 这就是为什么getcwd失败了。

首先要看的是在崩溃顶部提供的代码行:

https://github.com/mongodb/mongo/blob/v2.2/src/mongo/db/cmdline.cpp#L188

这基本上是获取当前的工作目录。 一个奇怪的地方崩溃 – 这将在文件系统级别提示一个相当基本的问题 – 找不到目录,或以其他方式损坏。

根据addr2line(请参阅parsing堆栈跟踪 )第一个相关行(0x6878a8)在这里指出:

https://github.com/mongodb/mongo/blob/v2.2/src/mongo/db/cmdline.cpp#L349

这再次指向某些问题进入相关的mongod文件夹(可能是/ var / lib / mongodb或类似的)。 这次相关的错误是:

在分叉服务器进程的时候可以使用chdir()

在访问程序试图使用的文件系统/文件夹方面,再次指向类似的根本原因。

根据我的经验,我得到这样的错误:“SEVERE:终止()调用,打印堆栈”由于定位问题。 types:

导出LC_CTYPE =“en_US.UTF-8”

可能会解决这个问题。