CentOS7环境执行did new seed命令时Indy-cli崩溃问题求助
报错诱因
该Rust线程panic是内存合法性校验触发的崩溃,核心原因有两个:
- 你使用的indy-sdk/indy-cli版本依赖了
linked_hash_mapv0.1.2及更早版本,该版本库使用了Rust标准库已经废弃的mem::uninitialized不安全API,当使用Rust 1.59及以上版本编译indy-sdk时,会触发强制安全校验直接崩溃。 - CentOS 7自带的glibc版本为2.17,远低于indy-sdk官方推荐的最低依赖版本,预编译的indy-cli二进制和CentOS 7系统依赖不兼容,也会触发同类内存异常。
排查解决方法
- 优先校验版本匹配关系:indy-sdk v1.16.0及之前的版本,必须使用Rust 1.58.x及更低版本编译,禁止使用更高版本的Rust工具链。
- 降级Rust工具链后重新编译:执行以下命令切换到兼容的Rust版本,之后重新编译indy-sdk和indy-cli即可解决问题:
rustup install 1.58.1 rustup default 1.58.1
- 替换适配CentOS 7的预编译二进制:如果你没有自行编译的条件,直接下载官方针对CentOS 7适配编译的indy-cli安装包替换现有版本即可。
- 容器化运行规避环境冲突:直接拉取官方兼容的indy-cli镜像,在容器内执行操作,可完全避免本地系统依赖不兼容的问题。
- 临时测试规避方案:如果仅需临时测试功能,先执行不带自定义seed参数的
did new命令,部分场景下可绕过该内存访问异常。
内容的提问来源于stack exchange,提问作者allenchen
相关产品推荐
相关产品推荐

