leftibot 7b95ff5126
Fix #655: Async issues with threads outliving the chaiscript engine (#656)
* Fix #655: Join async threads before engine destruction to prevent heap-use-after-free

Issues #632 and #636 (PRs #651 and #653) both stem from the same root cause: async
threads spawned via async() can outlive the Dispatch_Engine, accessing shared state
(global objects map, type maps) after it has been destroyed. The fix moves async()
registration from the stdlib module into ChaiScript_Basic, where spawned threads are
tracked via Dispatch_Engine. The engine's destructor now joins all outstanding async
threads before destroying shared data structures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address review: follow rule of 5, explicitly default move operations

Requested by @lefticus in PR #656 review.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: leftibot <leftibot@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 16:12:41 -06:00
..
any.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
bad_boxed_cast.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
bind_first.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
bootstrap_stl.hpp Fix crash with out of bounds index (issue #572) 2021-07-08 18:55:36 +02:00
bootstrap.hpp Fix #459: Fill out the set of conversion functions for all POD types (#664) 2026-04-11 16:08:09 -06:00
boxed_cast_helper.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
boxed_cast.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
boxed_number.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
boxed_value.hpp Fix #17: Add const variables in ChaiScript (#643) 2026-04-10 22:12:13 -06:00
callable_traits.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
dispatchkit.hpp Fix #655: Async issues with threads outliving the chaiscript engine (#656) 2026-04-11 16:12:41 -06:00
dynamic_object_detail.hpp Fix #201: Suggestion: class Inheritance (#641) 2026-04-10 19:12:06 -06:00
dynamic_object.hpp Fix #201: Suggestion: class Inheritance (#641) 2026-04-10 19:12:06 -06:00
exception_specification.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
function_call_detail.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
function_call.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
function_params.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
function_signature.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
handle_return.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
operators.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
proxy_constructors.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
proxy_functions_detail.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
proxy_functions.hpp Fix #405: push_back() on script-created vector has no effect if vector_conversion is in effect (#663) 2026-04-11 15:45:22 -06:00
register_function.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
short_alloc.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
type_conversions.hpp Reimplement pair_conversion() helper 2021-06-18 16:40:38 +02:00
type_info.hpp Fix #17: Add const variables in ChaiScript (#643) 2026-04-10 22:12:13 -06:00