Fix a memory leak in components/script/script_runtime.rs and add more leak suppressions (#33175)

* asan: Add suppression for known false positive

Signed-off-by: ede1998 <online@erik-hennig.me>

* fix: re-suppress lazy_static leaks

lazy_static is still used by dependencies and still leaks
from static variables.

Signed-off-by: ede1998 <online@erik-hennig.me>

* fix: Memory leak of Box<NetworkingTaskSource>

Signed-off-by: ede1998 <online@erik-hennig.me>

---------

Signed-off-by: ede1998 <online@erik-hennig.me>
This commit is contained in:
Erik Hennig 2024-08-26 09:33:23 +02:00 committed by GitHub
parent c028b5c299
commit e5caa725da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 3 deletions

View file

@ -444,6 +444,7 @@ pub struct Runtime {
rt: RustRuntime,
pub microtask_queue: Rc<MicrotaskQueue>,
job_queue: *mut JobQueue,
networking_task_src: Option<Box<NetworkingTaskSource>>,
}
impl Drop for Runtime {
@ -561,12 +562,13 @@ unsafe fn new_rt_and_cx_with_parent(
networking_task_src.queue_unconditionally(task).is_ok()
}
let mut networking_task_src_ptr = std::ptr::null_mut();
if let Some(source) = networking_task_source {
let networking_task_src = Box::new(source);
networking_task_src_ptr = Box::into_raw(Box::new(source));
InitDispatchToEventLoop(
cx,
Some(dispatch_to_event_loop),
Box::into_raw(networking_task_src) as *mut c_void,
networking_task_src_ptr as *mut c_void,
);
}
@ -721,6 +723,8 @@ unsafe fn new_rt_and_cx_with_parent(
rt: runtime,
microtask_queue,
job_queue,
networking_task_src: (!networking_task_src_ptr.is_null())
.then(|| Box::from_raw(networking_task_src_ptr)),
}
}