labring / labring/FastGPT

[自建部署] fastgpt-agent-volume-manager 在麒麟 Kylin aarch64 上 Bun 段错误退出(139):bun -e 必崩,bun --version 正常

Open
#6,935 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
29.6k
Forks
7.3k
Avg merge
1d 7h
Merged PRs (30d)
152

Description

## 问题描述

在 **麒麟 Kylin Linux Advanced Server V10 (Tercel)、aarch64** 环境下,使用官方/镜像站提供的 **`fastgpt-agent-volume-manager:v0.1`**(`linux/arm64`)时,容器**立即退出**,退出码 **139**(`SIGSEGV`),`docker logs` **无任何输出**。

进一步验证表明:崩溃**并非** volume-manager 业务逻辑独有——在该镜像内,**只要通过 Bun 执行任意 JavaScript(含 `bun -e`)就会 139**;而 **`bun --version` 正常**。

## 运行环境

- **宿主机系统**:Kylin Linux Advanced Server V10 (Tercel)
- **宿主机架构**:`aarch64`(`uname -m`)
- **编排**:Docker Compose
- **FastGPT版本**:v4.14.19

## 使用的镜像

```
registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
```

已确认镜像架构为 **linux/arm64**(与宿主机一致),**排除**「误用 amd64 镜像在 ARM 上运行」这一类问题。

## 复现步骤

### 1)`bun --version` —— 正常

```bash
docker run --rm registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1 bun --version
# 输出:1.3.11
```

### 2)`bun -e` —— 必现 139

```bash
docker run --rm -w /app --entrypoint bun \
registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1 \
-e "console.log('ok')"; echo "Exit:$?"
# Exit:139
```

加或不加 `-it`,结果一致。

### 3)按默认入口启动应用 —— 同样 139、无日志

```bash
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
-e PORT=3000 -e VM_RUNTIME=docker -e VM_AUTH_TOKEN=test \
-e VM_VOLUME_NAME_PREFIX=fastgpt-session -e VM_LOG_LEVEL=debug \
-e VM_DOCKER_API_VERSION=v1.44 \
registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1
# 立刻回到 shell,无输出;退出码 139
```

### 4)排除 seccomp —— 仍 139

```bash
docker run --rm -it --security-opt seccomp=unconfined \
-v /var/run/docker.sock:/var/run/docker.sock \
-w /app --entrypoint bun \
-e PORT=3000 -e VM_RUNTIME=docker -e VM_AUTH_TOKEN=test \
-e VM_VOLUME_NAME_PREFIX=fastgpt-session -e VM_LOG_LEVEL=debug \
-e VM_DOCKER_API_VERSION=v1.44 \
registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1 \
src/index.ts; echo "Exit:$?"
# Exit:139
```

### 5)镜像内入口脚本(供对照)

```bash
docker run --rm --entrypoint cat \
registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager:v0.1 \
/usr/local/bin/docker-entrypoint.sh
```

为常见 Bun 镜像风格:`exec "$@"`,`Cmd` 为 `bun` + `src/index.ts`,**与「入口脚本写错」关系不大**。

## 期望行为

- `bun -e "console.log('ok')"` 应正常退出 0 并打印 `ok`。
- volume-manager 应常驻监听配置端口,供 `AGENT_SANDBOX_VOLUME_MANAGER_URL` 调用。

## 实际行为

- 任意 `bun -e` 或执行 `src/index.ts` → **退出码 139**,应用侧无日志。
- Compose 中对应服务状态为 **`Restarting (139)`**。

## 补充说明与初步判断

- **同一宿主机**上,其它 FastGPT 组件(例如 **`fastgpt-code-sandbox:v4.14.19`**,`linux/arm64`,健康检查使用 `bun`)可长期 **healthy**,说明并非「ARM 上完全不能跑容器或不能跑 Bun 镜像」的笼统问题。
- 当前仓库中 `projects/volume-manager` 的 Dockerfile 基于 **`oven/bun:1.3-alpine`**。结合 **`bun --version` 正常、`bun -e` 必 139**,更怀疑为 **Bun + Alpine/musl 在麒麟 aarch64 上执行 JS 路径不稳定/段错误**(与 volume-manager 业务代码弱相关),因为**最小复现已是 `bun -e`**。

## 对维护者的建议

1. 提供或文档化基于 **glibc** 的 volume-manager 构建变体(例如 **`oven/bun:1.3-debian`**),便于麒麟等国产化 aarch64 环境验证。
2. 或在文档中明确:**当前 volume-manager 官方镜像在部分 Kylin aarch64 环境下不可用**,自建部署可暂时关闭 `AGENT_SANDBOX_ENABLE_VOLUME`,直至有兼容镜像。

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.