we are seeing a Crash due to cross-DLL deallocation of std::string from static V8 library (CRT/heap ownership mismatch)
But this issue was never seen in earlier versions. we have not changed our code since many years. is our assumption correct ? or is there anything changed in the latest version that we have take care of in our code. *Environment* OS: Windows 11 CPU architecture: x64 Compiler: *clang-cl* MSVC toolchain: *Visual Studio 2022 (v143)* V8 version / commit*: 14.3.127.17* Build system: GN + Ninja Build type: *Static library (v8_monolith.lib)* *args.gn <http://args.gn/>:* is_component_build = false is_debug = false target_cpu = "x64" use_custom_libcxx = false v8_monolithic = true v8_use_external_startup_data = false is_clang = false clang_use_chrome_plugins = false treat_warnings_as_errors = false v8_enable_test_features=false v8_enable_fast_torque = false v8_enable_sandbox = false v8_enable_pointer_compression = false v8_enable_backtrace = false v8_enable_disassembler = false v8_enable_object_print = false v8_enable_verify_heap = false v8_enable_slow_dchecks = false v8_enable_gdbjit = false v8_enable_i18n_support = true v8_monolithic_for_shared_library = true v8_static_library = true icu_use_data_file = false v8_enable_temporal_support = false use_sysroot = false symbol_level = 0 strip_debug_info=true dcheck_always_on = false *Application:* We use V8 to execute JavaScript, and on Windows the V8 library is *statically linked into our own DLL*. The application was working correctly up to version *14.1.146.11*. we were originally using V8 as a shared dll up to version *13.0.x*, but later we had to switch to using the *static V8 library*, since shared DLL builds are not officially supported by V8 and we also migrated from *MSVC to clang-cl*. As part of addressing security issues, we upgraded V8 to *14.3.127.17*. After this upgrade, we are seeing *frequent crashes inside our DLL*, and many of the crash stacks point to operations involving std::basic_string. *Location: *_CONSTEXPR20 ~basic_string() noexcept { *_Tidy_deallocate(); //crashes here* #if _ITERATOR_DEBUG_LEVEL != 0 auto&& _Alproxy = _GET_PROXY_ALLOCATOR(_Alty, _Getal()); const auto _To_delete = _Mypair._Myval2._Myproxy; _Mypair._Myval2._Myproxy = nullptr; _Delete_plain_internal(_Alproxy, _To_delete); #endif // _ITERATOR_DEBUG_LEVEL != 0 } any inputs or pointers will be of great help. Thank you for looking into this. regards Pradish -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/v8-dev/c53ce02a-769c-4787-a09c-b6fe74de5adcn%40googlegroups.com.
