#939·sonic

loader: LoadOne/LoadMany 如果 NoPreempt 设置为 false,则会产生空的 PcUnsafePoint 表,导致运行时异步抢占崩溃

作者: Maki-Daisuke创建于 2026年5月12日更新于 2026年5月12日

我理解 sonic 本身总是在其树内调用者中设置 `NoPreempt: true` (例如 `loader/wrapper.go`),因此这个错误在 sonic 本身的使用中是看不见的,并且对团队来说可能是优先级很低的。我提交它是因为我在自己的项目中正在基于 `sonic/loader` 构建一个小型 JIT(`loader` 链接名修饰符正是我需要用于在模块数据中托管 ABI0 函数的抽象),当将 `NoPreempt` 设置为其零值时我就遇到了这个问题。我有一个可用的用户端解决方案,因此请随意降低优先级 - 但我希望留下一个清晰的记录,以防有人碰到同样的问题,如果维护者同意方向,我乐意提交一个 PR。

内容来源: bytedance/sonic