在arm框架下 K8S部署 长安链v2.3.6, 合约无法创建,Invalid external kind
【问题分类】
- bug
- P2P网络相关(包含libp2p,liquid)
- 链账户身份与权限相关(证书问题、public、多签投票问题)
- 核心交易引擎相关(交易池、DAG)
- 共识相关
- 智能合约相关
- 存储相关
- SDK相关
- 长安链CMC工具
- 长安链管理台
- 长安链浏览器
- 长安链合约IDE
- 长安链web签名插件
- 跨链相关
- 轻节点相关
- 隐私计算相关
- 密码学相关
- 环境依赖
- 其他补充:
【问题描述】(请对问题进行描述,方便定位问题)
【系统信息】(请填写系统信息,方便定位问题)
- chainmaker-go version * : [v2.3.6] **
- OS & version * : aarch64 GNU/Linux
- docker镜像 version: chainmaker:v2.3.6 问题是K8S部署的
PS arm架构下 生成的 /usr/lib/wxdec 是x86的,请问下这个文件是如何生成的?
排查进展
汇编
`/* WARNING: Unknown calling convention: __rustcall / / wasmparser::binary_reader::BinaryReader::read_external_kind */
undefined1 [16] __rustcall wasmparser::binary_reader::BinaryReader::read_external_kind (long *param_1,undefined1 (*param_2) [16])
{ ulong uVar1; undefined1 (*extraout_x0) [16]; undefined1 (*extraout_x0_00) [16]; ulong uVar3; ulong uVar4; long lVar5; undefined1 auVar6 [16]; char *pcVar2;
uVar1 = param_1[2]; if (uVar1 < (ulong)param_1[1]) { param_1[2] = uVar1 + 1; uVar3 = (ulong)*(byte *)(param_1 + uVar1); uVar4 = uVar3; switch(uVar3) { case 0: break; case 1: case 2: uVar4 = 0; break; case 3: uVar4 = 0; uVar3 = 4; break; case 4: uVar4 = 0; uVar3 = 3; break; case 5: uVar4 = 0; uVar3 = 6; break; case 6: uVar4 = 0; uVar3 = 7; break; case 7: uVar4 = 0; uVar3 = 5; break; default: lVar5 = param_1[3]; auVar6 = alloc::raw_vec::RawVec<T,A>::allocate_in(0x15,0); pcVar2 = auVar6.0_8; pcVar2[8] = 'e'; pcVar2[9] = 'x'; pcVar2[10] = 't'; pcVar2[0xb] = 'e'; pcVar2[0xc] = 'r'; pcVar2[0xd] = 'n'; pcVar2[0xe] = 'a'; pcVar2[0xf] = 'l'; pcVar2[0] = 'I'; pcVar2[1] = 'n'; pcVar2[2] = 'v'; pcVar2[3] = 'a'; pcVar2[4] = 'l'; pcVar2[5] = 'i'; pcVar2[6] = 'd'; pcVar2[7] = ' '; (char () [8])(pcVar2 + 0xd) = (char [8])0x646e696b206c616e; std::alloc::__default_lib_allocator::__rust_alloc(); if (extraout_x0_00 == (undefined1 () [16])0x0) goto LAB_00621b1c; uVar3 = lVar5 + uVar1; *extraout_x0_00 = auVar6; *(ulong *)(extraout_x0_00[1] + 8) = uVar3; *(undefined8 *)extraout_x0_00[2] = 0; *(undefined8 *)extraout_x0_00[1] = 0x15; uVar4 = 1; param_2 = extraout_x0_00; } } else { lVar5 = param_1[3]; auVar6 = alloc::raw_vec::RawVec<T,A>::allocate_in(0xe,0); auVar6.0_8 = 0x7463657078656e55; builtin_strncpy((char )((long)auVar6.0_8 + 6),"cted EOF",8); std::alloc::__default_lib_allocator::__rust_alloc(); if (extraout_x0 == (undefined1 () [16])0x0) { LAB_00621b1c: / WARNING: Subroutine does not return */ alloc::alloc::handle_alloc_error(); } uVar4 = 1; uVar3 = 0; *extraout_x0 = auVar6; *(undefined8 *)extraout_x0[1] = 0xe; *(ulong *)(extraout_x0[1] + 8) = lVar5 + uVar1; *(undefined8 *)(extraout_x0[2] + 8) = 1; *(undefined8 *)extraout_x0[2] = 1; param_2 = extraout_x0; } auVar6.8_8 = param_2; auVar6.0_8 = uVar4 | (uVar3 & 0xff) << 8; return auVar6; }`


