确保在 `wasmtime::runtime::component::concurrent` 中总是以友好方式处理纤维
作者: dicej创建于 2026年8月31日更新于 2026年9月10日
标签wasm-proposal:component-model-async
这个模块负责在不同的上下文中处理线程(即暂停、恢复、将它们附加到可等待集合等)。 当我们需要将线程从一个存储基础的所有者移动到另一个所有者时,就会出现麻烦,在此期间可能会发生断言失败、陷阱或 `bail_bugs`,导致线程在还没有被放回存储之前就被丢弃。 这很危险,因为如果丢弃一个尚未允许退出的线程(需要独占存储访问权),就会引发崩溃,这可能会将陷阱升级为全面崩溃。 只要每个线程都以某种方式由存储所有,我们就安全了,因为当存储被丢弃时,它的所有线程都将被安全地处理(假设我们记得检查存储中线程可能保存的所有位置)。 同样,我们可以将线程包装在一个 RAII 对象中,并与存储结合使用,以确保在 RAII 对象被丢弃时,线程被正确处理。 只要线程未通过这两种方式进行保护,就存在危险,因此我们应该审核代码,查找此类情况并修复它们。
内容来源: bytecodealliance/wasmtime