Check failed: mdb_status == 0 (5 vs. 0) Input/output error错误解决

在使用Caffe制作lmdb数据集时遇到Input/output error错误,通过检查磁盘空间并清理,成功解决了问题。

Check failed: mdb_status == 0 (5 vs. 0) Input/output error错误解决

在制作caffe的lmdb数据时,数据生成到一半报错:
信息如下:

I0305 20:57:55.481330 19131 convert_imageset.cpp:147] Processed 302000 files.
F0305 20:58:08.753790 19131 db_lmdb.hpp:15] Check failed: mdb_status == 0 (5 vs. 0) Input/output error
*** Check failure stack trace: ***
    @     0x7f432e40c624  google::LogMessage::Fail()
    @     0x7f432e40c56b  google::LogMessage::SendToLog()
    @     0x7f432e40bf3f  google::LogMessage::Flush()
    @     0x7f432e40f2a5  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f432e8fd767  caffe::db::LMDBTransaction::Commit()
    @           0x403fa3  main
    @     0x7f432d412830  (unknown)
    @           0x404cd9  _start
Aborted (core dumped)

后来用

df -hl

命令查看linux磁盘空间,发现磁盘空间已满,删除掉一些东西,留下足够空间,就可以正常跑程序了。

以下是针对 `Failed to load module` 和 `Failed to start service` 错误可能的解决方法: ### 未定义符号问题(`undefined symbol: _Z22bsf_fk_sc_update_zgbzbPKcS0_S0_S0_xxi`) - **检查依赖库**:未定义符号错误通常意味着程序在运行时找不到某个函数的实现。可以使用 `ldd` 命令检查 `hts_sc_s_mdb_risk_manager_self.so` 模块依赖的库是否都已正确安装和链接。 ```bash ldd hts_sc_s_mdb_risk_manager_self.so ``` 如果有库显示为 `not found`,则需要安装相应的库或者确保库的路径已正确配置。 - **检查编译选项**:确保在编译 `hts_sc_s_mdb_risk_manager_self.so` 模块时,所有必要的源文件都被包含,并且链接了正确的库。可能是在编译过程中遗漏了某些源文件或者库。 - **符号混淆**:`_Z22bsf_fk_sc_update_zgbzbPKcS0_S0_S0_xxi` 是一个经过 C++ 名称修饰(name mangling)后的符号。可以使用 `c++filt` 命令将其还原为原始的函数名: ```bash c++filt _Z22bsf_fk_sc_update_zgbzbPKcS0_S0_S0_xxi ``` 然后检查该函数是否在相应的源文件中正确定义,并且在编译时是否被正确链接。 ### 模块加载失败问题(`Failed to load module. return false`) - **权限问题**:确保 `hts_sc_s_mdb_risk_manager_self.so` 模块文件具有正确的权限。可以使用 `chmod` 命令修改文件权限: ```bash chmod +x hts_sc_s_mdb_risk_manager_self.so ``` - **库路径问题**:如果模块依赖的库不在系统默认的库搜索路径中,需要将库所在的路径添加到 `LD_LIBRARY_PATH` 环境变量中。例如: ```bash export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/library ``` 可以将此命令添加到 `~/.bashrc` 或者 `/etc/profile` 文件中,使其在每次登录时自动生效。 ### 服务启动失败问题(`Failed to start service`) - **检查服务配置文件**:确保服务的配置文件(如 systemd 服务文件)中指定的模块路径、依赖项等信息正确。可以查看服务配置文件(通常位于 `/etc/systemd/system/` 目录下),检查其中的 `ExecStart` 等参数是否正确。 - **日志信息**:查看系统日志文件(如 `/var/log/syslog` 或者 `/var/log/messages`),获取更多关于服务启动失败的详细信息,以便进一步排查问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值