mirror of
https://github.com/nodejs/node.git
synced 2026-11-09 15:11:11 -05:00
src: fix uninitialized field access in AsyncHooks
Co-authored-by: Joyee Cheung <joyeec9h3@gmail.com> PR-URL: https://github.com/nodejs/node/pull/48566 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Minwoo Jung <nodecorelab@gmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
This commit is contained in:
1 parent
d312bd96d3
commit
5ff46dbb31
2 files changed
+9
-10
No files matched your search
+5
-7
@@ -170,15 +170,13 @@ bool AsyncHooks::pop_async_context(double async_id) {
|
||||
}
|
||||
|
||||
void AsyncHooks::clear_async_id_stack() {
|
||||
if (env()->can_call_into_js()) {
|
||||
if (!js_execution_async_resources_.IsEmpty() && env()->can_call_into_js()) {
|
||||
Isolate* isolate = env()->isolate();
|
||||
HandleScope handle_scope(isolate);
|
||||
if (!js_execution_async_resources_.IsEmpty()) {
|
||||
USE(PersistentToLocal::Strong(js_execution_async_resources_)
|
||||
->Set(env()->context(),
|
||||
env()->length_string(),
|
||||
Integer::NewFromUnsigned(isolate, 0)));
|
||||
}
|
||||
USE(PersistentToLocal::Strong(js_execution_async_resources_)
|
||||
->Set(env()->context(),
|
||||
env()->length_string(),
|
||||
Integer::NewFromUnsigned(isolate, 0)));
|
||||
}
|
||||
|
||||
native_execution_async_resources_.clear();
|
||||
|
||||
@@ -1015,6 +1015,10 @@ class Environment : public MemoryRetainer {
|
||||
uv_async_t task_queues_async_;
|
||||
int64_t task_queues_async_refs_ = 0;
|
||||
|
||||
// These may be read by ctors and should be listed before complex fields.
|
||||
std::atomic_bool is_stopping_{false};
|
||||
std::atomic_bool can_call_into_js_{true};
|
||||
|
||||
AsyncHooks async_hooks_;
|
||||
ImmediateInfo immediate_info_;
|
||||
AliasedInt32Array timeout_info_;
|
||||
@@ -1092,7 +1096,6 @@ class Environment : public MemoryRetainer {
|
||||
|
||||
bool has_serialized_options_ = false;
|
||||
|
||||
std::atomic_bool can_call_into_js_ { true };
|
||||
uint64_t flags_;
|
||||
uint64_t thread_id_;
|
||||
std::unordered_set<worker::Worker*> sub_worker_contexts_;
|
||||
@@ -1150,8 +1153,6 @@ class Environment : public MemoryRetainer {
|
||||
CleanupQueue cleanup_queue_;
|
||||
bool started_cleanup_ = false;
|
||||
|
||||
std::atomic_bool is_stopping_ { false };
|
||||
|
||||
std::unordered_set<int> unmanaged_fds_;
|
||||
|
||||
std::function<void(Environment*, ExitCode)> process_exit_handler_{
|
||||
|
||||
Reference in new issue
Block a user