ArangoDB 3.4.milestone0存在ArangoSearch视图时崩溃问题
ArangoSearch 触发 arangod 进程 Segmentation Fault 崩溃问题
我最近在测试ArangoSearch新特性时,碰到了arangod进程直接触发**Segmentation Fault(段错误)**崩溃的问题,目前确认该问题会在以下两个场景中出现:
- 当目标集合已关联ArangoSearch视图,通过API上传数据时;
- 当集合数据加载完成后,尝试创建ArangoSearch视图时。
GDB生成的栈跟踪信息
2018-05-29T15:12:13Z [51783] INFO You are using a milestone/alpha/beta/preview version ('3.4.milestone0') of ArangoDB 2018-05-29T15:12:13Z [51783] INFO ArangoDB (version 3.4.milestone0 [linux]) is ready for business. Have fun! Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffe84a0700 (LWP 51798)] 0x0000000002062693 in ?? () Missing separate debuginfos, use: debuginfo-install glibc-2.17-196.el7_4.2.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-8.el7.x86_64 libcom_err-1.42.9-10.el7.x86_64 libselinux-2.5-11.el7.x86_64 openssl-libs-1.0.2k-8.el7.x86_64 pcre-8.32-17.el7.x86_64 zlib-1.2.7-17.el7.x86_64 (gdb) where #0 0x0000000002062693 in ?? () #1 0x0000000001f8ffef in ?? () #2 0x0000000001f18479 in arangodb::iresearch::IResearchView::insert(arangodb::transaction::Methods&, unsigned long, arangodb::LocalDocumentId const&, arangodb::velocypack::Slice const&, arangodb::iresearch::IResearchLinkMeta const&) () #3 0x0000000001ef8c78 in arangodb::iresearch::IResearchLink::insert(arangodb::transaction::Methods*, arangodb::LocalDocumentId const&, arangodb::velocypack::Slice const&, arangodb::Index::OperationMode) () #4 0x0000000001f0d59f in arangodb::iresearch::IResearchRocksDBLink::insertInternal(arangodb::transaction::Methods*, arangodb::RocksDBMethods*, arangodb::LocalDocumentId const&, arangodb::velocypack::Slice const&, arangodb::Index::OperationMode) () #5 0x00000000010ed2b0 in arangodb::RocksDBCollection::insertDocument(arangodb::transaction::Methods*, arangodb::LocalDocumentId const&, arangodb::velocypack::Slice const&, arangodb::OperationOptions&) const () #6 0x00000000010ed77a in arangodb::RocksDBCollection::insert(arangodb::transaction::Methods*, arangodb::velocypack::Slice, arangodb::ManagedDocumentResult&, arangodb::OperationOptions&, unsigned long&, bool, unsigned long&) () #7 0x0000000000c24a24 in arangodb::LogicalCollection::insert(arangodb::transaction::Methods*, arangodb::velocypack::Slice, arangodb::ManagedDocumentResult&, arangodb::OperationOptions&, unsigned long&, bool, unsigned long&) () #8 0x0000000000b83816 in ?? () #9 0x0000000000b8977c in arangodb::transaction::Methods::insertLocal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, arangodb::velocypack::Slice, arangodb::OperationOptions&) () #10 0x0000000000b8a5ad in arangodb::transaction::Methods::insert(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, arangodb::velocypack::Slice, arangodb::OperationOptions const&) () #11 0x0000000000ac38e7 in arangodb::RestImportHandler::performImport(arangodb::SingleCollectionTransaction&, arangodb::RestImportResult&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, arangodb::velocypack::Builder const&, bool, arangodb::OperationOptions const&) () #12 0x0000000000ac5abb in arangodb::RestImportHandler::createFromJson(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () #13 0x0000000000acaacc in arangodb::RestImportHandler::execute() () #14 0x0000000000f36e8c in arangodb::rest::RestHandler::executeEngine() () #15 0x0000000000f34e38 in arangodb::RestEngine::asyncRun(std::shared_ptr<arangodb::rest::RestHandler>) () #16 0x00000000011f07d2 in arangodb::rest::GeneralCommTask::handleRequestDirectly(bool, std::shared_ptr<arangodb::rest::RestHandler>) () #17 0x00000000011f0b43 in arangodb::rest::GeneralCommTask::handleRequestSync(std::shared_ptr<arangodb::rest::RestHandler>) () #18 0x00000000011f23aa in arangodb::rest::GeneralCommTask::executeRequest(std::unique_ptr<arangodb::GeneralRequest, std::default_delete<arangodb::GeneralRequest> >&&, std::unique_ptr<arangodb::GeneralResponse, std::default_delete<arangodb::GeneralResponse> >&&) () #19 0x0000000001182a91 in arangodb::rest::HttpCommTask::processRequest(std::unique_ptr<arangodb::HttpRequest, std::default_delete<arangodb::HttpRequest> >) () #20 0x0000000001186805 in arangodb::rest::HttpCommTask::processRead(double) () #21 0x00000000011cfcd9 in arangodb::rest::SocketTask::processAll() () #22 0x00000000011d1955 in ?? () #23 0x00000000011d66c3 in boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, std::function<void (boost::system::error_code const&, unsigned long)> >::do_complete(boost::asio::de
初步分析与解决建议
从栈跟踪能看出,崩溃发生在ArangoSearch视图的插入操作链路中,具体是从IResearchView::insert调用到RocksDB相关插入逻辑时出现的问题。另外注意到当前使用的是ArangoDB 3.4.milestone0版本,这属于预览/里程碑版本,本身就可能存在未修复的bug。
给你几个实用的排查方向:
- 优先升级版本:尝试切换到ArangoDB的最新稳定版,或者更新的预览版本,这类早期里程碑版本的bug通常会在后续迭代中被修复;
- 收集完整调试信息:按照GDB提示的命令安装对应的debuginfo包,这样能获取到完整的函数符号,进一步定位到具体的崩溃代码行,方便提交更精准的bug报告;
- 检查视图配置:确认ArangoSearch视图的配置是否符合当前版本要求,有没有使用该里程碑版本不支持的特性;
- 提交官方bug报告:如果升级后问题依然存在,整理好完整的复现步骤、系统环境信息和栈跟踪,提交给ArangoDB官方团队协助排查。
内容的提问来源于stack exchange,提问作者timeau
相关产品推荐
相关产品推荐

