fix(lua): обёртка тела скрипта в pcall
memory access out of bounds в rbx_8 (Day/Night) — это WASM crash который пробивает try/catch на JS-стороне. Защита — pcall внутри самого Lua coroutine: даже если что-то падает в скрипте, ошибка ловится Lua-side и не доходит до уровня wasmoon resume. После этого fix остаётся только смотреть кто конкретно крашит — шлём ошибку через __rbxl_send_error и идём дальше.
This commit is contained in:
parent
6bec44d778
commit
ee0d91235c
@ -183,7 +183,15 @@ export class LuaSharedSandbox {
|
||||
Source = nil,
|
||||
}
|
||||
local co = coroutine.create(function()
|
||||
${entry.code}
|
||||
-- pcall защищает от runtime-ошибок которые иначе крашат
|
||||
-- coroutine и могут повредить WASM-стейт. Возвраты
|
||||
-- handler'а намеренно поглощаются.
|
||||
local ok_, err_ = pcall(function()
|
||||
${entry.code}
|
||||
end)
|
||||
if not ok_ then
|
||||
__rbxl_send_error(${JSON.stringify(entry.id)}, tostring(err_))
|
||||
end
|
||||
end)
|
||||
__rbxl_register_coroutine(${JSON.stringify(entry.id)}, co)
|
||||
local ok, ret = coroutine.resume(co)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user