summaryrefslogtreecommitdiff
path: root/dbg_mlc.c
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2022-01-16 01:02:47 +0300
committerIvan Maidanski <ivmai@mail.ru>2022-02-22 12:39:02 +0300
commit6ccacdd7a92a0608ca488343dde4eb5afd888151 (patch)
tree8d7e770f38817e42a6e868e8c62e124bc76dcf52 /dbg_mlc.c
parentbc01dc390e3e0d8ade52f8cd97992a2f8d5314d7 (diff)
downloadbdwgc-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.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/dbg_mlc.c b/dbg_mlc.c
index 487c029f..32fc4652 100644
--- a/dbg_mlc.c
+++ b/dbg_mlc.c
@@ -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);
}