[Issue 23731] [REG2.102] Throwing within finalizers causes InvalidMemoryOperationError on Windows
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Feb 22 01:37:15 UTC 2023
https://issues.dlang.org/show_bug.cgi?id=23731
Dlang Bot <dlang-bot at dlang.rocks> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |pull
--- Comment #1 from Dlang Bot <dlang-bot at dlang.rocks> ---
@kinke updated dlang/dmd pull request #14901 "[stable] druntime: Fix
InvalidMemoryOperation error on Windows when throwing exceptions from
finalizers" fixing this issue:
- Fix Issue 23731 - InvalidMemoryOperation error on Windows when throwing
exceptions from finalizers
A v2.102 regression, which newly enabled `StackTrace` constructions
from within GC finalizers. The construction is `@nogc`, but
apparently depends on the `typeid(StackTrace)` monitor having been
allocated already, i.e., a previous `StackTrace` construction.
So pre-allocate a dedicated `Mutex` in the module constructor to
make the `StackTrace` construction really `@nogc`.
`druntime/test/allocations/src/alloc_from_assert.d` then passes on
Windows again (not tested by DMD, but by LDC).
While at it, also prevent `InvalidMemoryOperation` errors when trying
to print exceptions within finalizers - by not resolving anything
(=> empty printed trace), as resolving currently heavily depends on
the GC.
https://github.com/dlang/dmd/pull/14901
--
More information about the Digitalmars-d-bugs
mailing list