зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1885359 - Fix intermittent crash on destroy rlbox sandbox in soundtouch r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D204720
This commit is contained in:
Родитель
d29c94dd23
Коммит
0aed52d2bb
|
@ -12,7 +12,7 @@ using namespace soundtouch;
|
|||
|
||||
RLBoxSoundTouch::RLBoxSoundTouch() {
|
||||
#ifdef MOZ_WASM_SANDBOXING_SOUNDTOUCH
|
||||
mSandbox.create_sandbox(false /* infallible */);
|
||||
mSandbox.create_sandbox(true /* infallible */);
|
||||
#else
|
||||
mSandbox.create_sandbox();
|
||||
#endif
|
||||
|
|
|
@ -304,12 +304,13 @@ public:
|
|||
|
||||
private:
|
||||
mutable typename RLBOX_WASM_MODULE_TYPE_CURR::instance_t wasm2c_instance{ 0 };
|
||||
struct w2c_env sandbox_memory_env;
|
||||
struct w2c_wasi__snapshot__preview1 wasi_env;
|
||||
struct w2c_env sandbox_memory_env{ 0 };
|
||||
struct w2c_wasi__snapshot__preview1 wasi_env{ 0 };
|
||||
bool instance_initialized = false;
|
||||
wasm_rt_memory_t sandbox_memory_info;
|
||||
mutable wasm_rt_funcref_table_t sandbox_callback_table;
|
||||
uintptr_t heap_base;
|
||||
bool minwasi_init_inst_succeeded = false;
|
||||
wasm_rt_memory_t sandbox_memory_info{ 0 };
|
||||
mutable wasm_rt_funcref_table_t sandbox_callback_table{ 0 };
|
||||
uintptr_t heap_base = 0;
|
||||
size_t return_slot_size = 0;
|
||||
T_PointerType return_slot = 0;
|
||||
mutable std::vector<T_PointerType> callback_free_list;
|
||||
|
@ -505,7 +506,7 @@ public:
|
|||
FALLIBLE_DYNAMIC_CHECK(
|
||||
infallible, minwasi_init_succeeded, "Could not initialize min wasi");
|
||||
|
||||
const bool minwasi_init_inst_succeeded = minwasi_init_instance(&wasi_env);
|
||||
minwasi_init_inst_succeeded = minwasi_init_instance(&wasi_env);
|
||||
FALLIBLE_DYNAMIC_CHECK(
|
||||
infallible, minwasi_init_inst_succeeded, "Could not initialize min wasi instance");
|
||||
|
||||
|
@ -567,10 +568,21 @@ public:
|
|||
RLBOX_WASM_MODULE_TYPE_CURR::free_instance(&wasm2c_instance);
|
||||
}
|
||||
|
||||
if (sandbox_memory_info.data) {
|
||||
destroy_wasm2c_memory(&sandbox_memory_info);
|
||||
sandbox_memory_info.data = nullptr;
|
||||
}
|
||||
|
||||
if (sandbox_callback_table.data) {
|
||||
wasm_rt_free_funcref_table(&sandbox_callback_table);
|
||||
sandbox_callback_table.data = nullptr;
|
||||
}
|
||||
|
||||
if (minwasi_init_inst_succeeded) {
|
||||
minwasi_init_inst_succeeded = false;
|
||||
minwasi_cleanup_instance(&wasi_env);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline void* impl_get_unsandboxed_pointer(T_PointerType p) const
|
||||
|
|
Загрузка…
Ссылка в новой задаче