diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2022-01-16 01:02:47 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2022-02-22 12:39:02 +0300 |
commit | 6ccacdd7a92a0608ca488343dde4eb5afd888151 (patch) | |
tree | 8d7e770f38817e42a6e868e8c62e124bc76dcf52 /dbg_mlc.c | |
parent | bc01dc390e3e0d8ade52f8cd97992a2f8d5314d7 (diff) | |
download | bdwgc-6ccacdd7a92a0608ca488343dde4eb5afd888151.tar.gz |
Fix missing lock when GC_generate_random_valid_address is called
(a cherry-pick of commit 0c6b4caa1 from 'release-8_2')
Issue #414 (bdwgc).
* dbg_mlc.c [KEEP_BACK_PTRS] (GC_generate_random_backtrace_no_gc):
Wrap GC_generate_random_valid_address() call into LOCK/UNLOCK.
* finalize.c [KEEP_BACK_PTRS] (GC_notify_or_invoke_finalizers):
Declare current local variable; expand
GC_generate_random_backtrace_no_gc() manually.
* finalize.c [KEEP_BACK_PTRS] (GC_notify_or_invoke_finalizers):
UNLOCK after GC_generate_random_valid_address() call.
* include/private/gc_priv.h [KEEP_BACK_PTRS]
(GC_generate_random_backtrace_no_gc): Remove declaration.
Diffstat (limited to 'dbg_mlc.c')
-rw-r--r-- | dbg_mlc.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -252,7 +252,11 @@ GC_INNER void GC_generate_random_backtrace_no_gc(void) { void * current; + DCL_LOCK_STATE; + + LOCK(); current = GC_generate_random_valid_address(); + UNLOCK(); GC_printf("\n****Chosen address %p in object\n", current); GC_print_backtrace(current); } |