Kernel execve returns ENOEXEC but ld.so runs fine — readelf attached — Oracle Linux 10 — x86_64
还没有人认领这个 Issue。
- 主要语言
- Shell
- 星标
- 11.2k
- 派生
- 1.9k
- 平均合并
- 14 小时 16 分钟
- 30 天内合并 PR
- 6
描述
Describe the bug
I was unable to run the Github copilot CLI on Oracle Linux 10 when installing though npm. After troubleshooting, I discovered that I am able to run the copilot binary when forcing it to execute via ld directly, but unable when executing the binary normally.
Affected version
GitHub Copilot CLI 1.0.78
Steps to reproduce the behavior
- Run `npm install -g @github/copilot
- Run
copilot
Expected behavior
Copilot launches normally
Additional context
Versions
OS: Oracle Linux 10.2
Architecture: x86_64
Node version: v26.6.0
npm version: 12.0.2
Package version: 1.0.78
INFO DUMPS
strace -f ./copilot 2>&1 | head -5
execve("./copilot", ["./copilot"], 0x7fffb7528e98 /* 37 vars */) = -1 ENOEXEC (Exec format error)
strace: exec: Exec format error
+++ exited with 1 +++
readelf -lW ./copilot | head -30
Elf file type is EXEC (Executable file)
Entry point 0x7e0b20
There are 14 program headers, starting at offset 46079092
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x2bf1c74 0x0000000002ff1c74 0x0000000002ff1c74 0x00e38c 0x00e38c R 0x8
INTERP 0x000318 0x0000000000400318 0x0000000000400318 0x00001c 0x00001c R 0x1
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
LOAD 0x000000 0x0000000000400000 0x0000000000400000 0x33cda8 0x33cda8 R 0x1000
LOAD 0x33d000 0x000000000073d000 0x000000000073d000 0x28c3000 0x28c3000 R E 0x2000
LOAD 0x2c00000 0x0000000003000000 0x0000000003000000 0x0006a1 0x0006a1 R E 0x200000
LOAD 0x2c01000 0x0000000003001000 0x0000000003001000 0x3891cea 0x3891cea R 0x1000
LOAD 0x64935e8 0x00000000068945e8 0x00000000068945e8 0x02e1b8 0x066b40 RW 0x1000
LOAD 0x6500000 0x000000000e500000 0x000000000e500000 0x43c0000 0x43c0000 R 0x1000
DYNAMIC 0x6495bb0 0x0000000006896bb0 0x0000000006896bb0 0x000200 0x000200 RW 0x8
NOTE 0x6500000 0x000000000e500000 0x000000000e500000 0x43b245c 0x43b245c R 0x4
TLS 0x64935e8 0x00000000068945e8 0x00000000068945e8 0x000004 0x0001a8 R 0x8
GNU_EH_FRAME 0x60264c4 0x00000000064264c4 0x00000000064264c4 0x0c755c 0x0c755c R 0x4
GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x10
GNU_RELRO 0x64935e8 0x00000000068945e8 0x00000000068945e8 0x003a18 0x003a18 R 0x1
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .interp .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt
03 .init .plt .text
04 lpstub malloc_hook .fini
uname -r
6.12.0-204.92.4.4.el10uek.x86_64
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先使用 copilot 重现该故障,并在 Oracle Linux 10 上使用提供的 strace 和 readelf 命令检查 ./copilot 可执行文件。比较已安装的构件在受支持环境中的打包和启动方式;当已安装的 copilot 命令无需直接调用 ld.so 即可正常启动时,即表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- linux, nodejs, shell
- 领域
- cli, operating-systems
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 冷清
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100