错误码

本文列举Enclave CLI可能返回的所有错误码并对其进行说明。

错误码

含义

错误原因和处理方法

E01

缺少必选参数

当前命令行存在未指定的必选参数,请确保所有必选参数皆已指定。

E02

参数冲突

当前命令行包含至少两个互斥的参数,请确保在互斥的多个参数中只指定其中一个。例如在run-enclave子命令中--cpu-count--cpu-ids参数只能指定其中一个。

E03

参数类型错误

当前命令行存在类型不正确的参数,请确保所有参数值的类型都是正确的,例如在run-enclave子命令中--cpu-count参数的类型应为整数,若其指定的参数值为字符串则会报此错误码。

E04

套接字对创建失败

Enclave CLI会创建用于和Enclave通信的套接字对,此错误码表示该套接字对创建失败。可能原因为Enclave CLI所需内存不足或可用文件描述符耗尽,可尝试重新运行命令或重启实例后重新运行命令。

E05

进程创建失败

在运行run-enclave子命令时Enclave CLI创建Enclave管理进程失败。可能原因为Enclave管理进程所需内存不足或系统已有线程数已达上限,可尝试释放部分系统资源后重新运行命令或重启实例后重新运行命令。

E06

守护进程创建失败

Enclave CLI在创建Enclave管理进程后会将其转化为守护进程以持久化运行,此错误码表示该守护进程创建失败。可能原因为Enclave管理进程所需内存不足、系统已有线程数已达上限或Enclave CLI主进程被禁止创建守护进程,可尝试释放部分系统资源后重新运行命令或重启实例后重新运行命令。

E07

目录读取失败

在运行describe-enclave子命令时Enclave CLI读取Enclave通信套接字所在目录(默认为/var/run/ali-enclaves)失败,请确保该目录存在且权限设置正确。

E08

Enclave通信连接失败

Enclave CLI无法连接Enclave,请确保Enclave已启动且处于正常运行(RUNNING)状态。

E09

套接字关闭失败

Enclave CLI无法关闭通信连接,可能原因为套接字关闭操作被其他信号中断,请尝试重新运行命令。

E10

通信连接设置超时失败

Enclave CLI为特定套接字设置超时时间失败,请确保该设置超时操作在有效的套接字上进行。

E11

套接字错误

出现未知套接字错误。

E12

EPOLL错误

Enclave CLI无法将Enclave描述符注册到基于epoll的事件监控中。可能原因为epoll操作所需内存不足或epoll可监控描述符数已达上限,可尝试释放部分系统资源后重新运行命令或重启实例后重新运行命令。

E13

INOTIFY错误

Enclave CLI会使用inotify来监控Enclave通信套接字的变动,此错误码表示inotify相关操作执行失败。可能原因为inotify操作所需内存不足或inotify可监控文件数已达上限,可尝试释放部分系统资源后重新运行命令或重启实例后重新运行命令。

E14

命令无效

当前命令行存在无效的子命令或参数,请确保提供的子命令和参数名是有效的。

E15

锁获取失败

Enclave CLI的锁获取操作执行失败,说明有一个先前持有该锁的线程出现异常,可尝试重新运行命令或重启实例后重新运行命令。

E16

线程同步失败

Enclave CLI在一个线程执行完毕后对其进行join操作失败,可尝试重新运行命令。

E17

序列化错误

Enclave CLI对命令参数或响应数据等进行序列化或反序列化操作时出现错误,请确保命令输入中提供的JSON数据是有效的。

E18

文件权限错误

Enclave CLI无修改日志文件(默认为/var/log/ali-enclaves/ali-enclaves.log)的权限,请确保当前用户属于de用户组。

E19

文件操作失败

Enclave CLI执行特定文件操作失败,请确保所操作的文件存在且文件权限设置正确。

E20

CPU配置错误

--cpu-ids参数的指定值中存在重复的vCPU ID,请确保该参数值中每个vCPU ID仅出现一次。

E21

Enclave可用vCPU池中无指定vCPU

--cpu-ids参数的指定值中存在不在Enclave可用vCPU池中的vCPU ID,请修改该参数值指定池中的vCPU再重新运行命令,或修改Enclave资源分配服务配置文件(/etc/ali-enclaves/allocator.yaml)并重启该服务以重新分配足够的vCPU。

E22

Enclave可用vCPU池中vCPU数量不足

在运行run-enclave子命令时参数指定的vCPU数量多于Enclave可用vCPU池中尚未使用的vCPU数量,请修改参数减少指定的vCPU数量使其不多于池中可用vCPU数,再重新运行命令,或修改Enclave资源分配服务配置文件(/etc/ali enclaves/allocator.yaml)并重启该服务以重新分配足够的vCPU。

E23

系统CPU ID错误

lscpu命令的返回值中上线与下线状态的CPU信息无效,请运行lscpu命令并检查其返回值是否存在异常。

E24

CPU错误

lscpu命令的返回值中存在无效信息,请运行lscpu命令并检查其返回值是否存在异常。

E25

大页长度错误

Enclave CLI在初始化Enclave内存时指定了无效的大页长度,请确保Enclave CLI代码未被修改导致使用无效的大页长度。

E26

Enclave镜像所需内存不足

在运行run-enclave子命令时参数指定的内存小于Enclave镜像运行所需的最小内存,请修改参数值增加指定的内存大小使其大于Enclave镜像运行所需的最小内存。

E27

Enclave可用内存不足

在运行run-enclave子命令时参数指定的内存大于Enclave资源分配服务预分配的可用内存大小,请修改参数减少指定的内存大小使其不大于Enclave可用内存大小,再重新运行命令,或修改Enclave资源分配服务配置文件(/etc/ali-enclaves/allocator.yaml)并重启该服务以重新分配足够的Enclave可用内存。

E28

Enclave描述符错误

Enclave CLI向驱动请求创建Enclave VM时驱动返回的Enclave描述符错误,请查看报错回溯信息以获取更多细节。

E29

ioctl错误

出现未知ioctl错误,请查看报错回溯信息以获取更多细节。

E30

通过ioctl获取镜像加载信息失败

Enclave CLI通过ioctl向驱动请求获取镜像加载信息失败,请查看报错回溯信息以获取更多细节。

E31

通过ioctl设置Enclave内存失败

Enclave CLI通过ioctl向驱动请求设置Enclave内存失败,请查看报错回溯信息以获取更多细节。

E32

通过ioctl设置Enclave vCPU失败

Enclave CLI通过ioctl向驱动请求设置Enclave vCPU失败,请查看报错回溯信息以获取更多细节。

E33

通过ioctl启动Enclave失败

Enclave CLI通过ioctl向驱动请求启动Enclave失败,请查看报错回溯信息以获取更多细节。

E34

内存溢出

Enclave CLI在将Enclave镜像文件加载到即将提供给Enclave的内存中时发生内存错误,如镜像加载的起始地址加上镜像文件长度后的数值超过本系统平台的最大地址。

E35

EIF文件解析错误

Enclave CLI从Enclave镜像文件中读取某个节加载到内存中失败,请确保提供有效的Enclave镜像文件。

E36

Enclave VM启动失败

Enclave CLI未能收到Enclave VM成功启动后发送的vsock心跳包,可能原因为Enclave VM在启动前就出错而停止运行,请确保提供有效的Enclave镜像文件。

E37

Enclave事件监控错误

Enclave CLI在监控来自Enclave的事件时出现错误,请查看报错回溯信息以获取更多细节。

E38

Enclave管理进程执行命令失败

Enclave CLI向Enclave管理进程发送Enclave控制命令后其管理进程在执行该命令时出错,请检查Enclave是否运行正常。

E39

Enclave CLI与Enclave管理进程建立连接失败

Enclave CLI无法与Enclave管理进程正常建立连接,可能原因是其他错误导致Enclave创建失败以至于Enclave管理进程停止运行,请查看Enclave CLI是否报告其他错误码,若无其他错误码则请查看报错回溯信息以获取更多细节。

E40

套接字路径不存在

Enclave CLI在管理Enclave时会根据Enclave ID生成和Enclave管理进程通信的套接字路径,该错误码表示此套接字路径不存在,可能原因是Enclave管理进程运行异常,请查看报错回溯信息以获取更多细节。

E41

Enclave管理进程发送命令回复失败

Enclave管理进程在收到并执行来自Enclave CLI的命令后会将命令回复信息发回给Enclave CLI,该错误码表示其命令回复发回失败,可能原因是Enclave CLI运行异常,可尝试重新运行命令。

E42

MMAP错误

Enclave CLI在为Enclave分配内存时执行mmap操作失败,可能原因为系统可用内存不足,可尝试释放部分系统资源后重新运行命令,或重启实例后重新运行命令。

E43

MUNMAP错误

Enclave CLI在释放Enclave资源时执行munmap操作失败,请确保Enclave CLI代码未被修改导致其执行munmap操作时传递的输入参数无效。

E44

Enclave调试输出连接建立失败

Enclave CLI无法与指定Enclave的调试输出串口建立通信连接,请确保该Enclave在调试模式下运行。

E45

Enclave调试输出获取失败

Enclave CLI无法获取Enclave调试输出,可尝试重新运行命令。

E46

Enclave调试输出打印失败

Enclave CLI无法打印Enclave调试输出,可尝试重新运行命令。

E47

整数解析错误

Enclave的vsock CID地址不是有效整数,请运行enclave-cli describe-enclaves命令获取并检查Enclave CID地址。

E48

Enclave镜像文件构建失败

Enclave CLI在构建Enclave镜像文件时出现错误,请查看报错回溯信息以获取更多细节。

E49

Docker镜像构建失败

在运行build-enclave子命令时指定的--docker-dir参数值无效,在该目录下无法构建Docker镜像。请确保该参数指定的目录是有效的。

E50

Docker镜像拉取失败

在运行build-enclave子命令时Enclave CLI尝试拉取--docker-uri参数指定的Docker镜像出错,请更新docker到社区版再重新运行命令,若仍出现此错误码则请检查--docker-uri参数是否有效。具体操作,请参见安装Docker并使用(Linux)

E51

中间文件目录不存在

Enclave CLI在构建Enclave镜像文件时需要确定一个用于存放中间文件的目录,该目录路径根据环境变量ENCLAVE_CLI_ARTIFACTSHOME生成,该错误码表示Enclave CLI无法确定此中间文件目录路径,请确保已定义这两个环境变量中的至少一个。

E52

附件目录不存在

Enclave CLI在构建Enclave镜像文件时需要找到用于存放Enclave VM内核、启动盘镜像等文件的附件目录,该错误码表示Enclave CLI无法找到此附件目录,可尝试重新运行命令。

E53

计时错误

在运行console子命令时对连续两次调试输出读取操作的间隔计时出错,可尝试重新运行命令。

E54

信号屏蔽错误

在创建Enclave管理进程后进行特定信号屏蔽操作时出错,可尝试重新运行命令。

E55

信号屏蔽解除错误

在创建Enclave管理进程后进行特定信号屏蔽解除操作时出错,可尝试重新运行命令。

E56

日志错误

Enclave CLI在初始化日志系统时出错,请查看报错回溯信息以获取更多细节。