节点重启时panic: runtime error: invalid memory address or nil pointer dereference
【问题分类】
- bug
- P2P网络相关(包含libp2p,liquid)
- 链账户身份与权限相关(证书问题、public、多签投票问题)
- 核心交易引擎相关(交易池、DAG)
- 共识相关
- 智能合约相关
- 存储相关
- SDK相关
- 长安链CMC工具
- 长安链管理台
- 长安链浏览器
- 长安链合约IDE
- 长安链web签名插件
- 跨链相关
- 轻节点相关
- 隐私计算相关
- 密码学相关
- 环境依赖
- 其他补充:
【问题描述】(请对问题进行描述,方便定位问题)
10节点TBFT共识网络运行下,某个节点下线后重启时,报panic,节点启动失败
- 启动TBFT共识长安链,10个节点,其中一个为拜占庭攻击节点,会随机变异发送出去的消息包,进行模糊测试fuzzing
- 一段时间后随机重启一个节点,该节点重启失败,具体报错日志如下图所示:
【相关日志文件】(如果有报错日志请贴图,或者上传附件)
【问题定位分析】
blockchain_init.go中的initCache函数在读取block的header信息时没有对其进行空指针判断,导致内存访问到invalid memory,节点panic
【系统信息】(请填写系统信息,方便定位问题)
-
**chainmaker-go version * : [v2.3.5]
-
**OS & version * :Linux version 5.15.0-105-generic, 20.04.1-Ubuntu
-
**docker镜像 version:
Client: Docker Engine - Community Version: 27.0.3 API version: 1.46 Go version: go1.21.11
Server: Docker Engine - Community Engine: Version: 27.0.3 API version: 1.46 (minimum version 1.24) Go version: go1.21.11
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information