From 2276565a2e6f8a875b4ef08e482fa5c6f545c1ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Botond=20D=C3=A9nes?= Date: Fri, 21 Oct 2022 11:02:22 +0300 Subject: [PATCH] scylla-gdb.py: scylla-fiber: reject self-references when probing pointers A self-reference is never the pointer we are looking for when looking for other tasks referencing us. Reject such references when scanning outright. --- scylla-gdb.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/scylla-gdb.py b/scylla-gdb.py index 25a85b88ab..8749e35e6a 100755 --- a/scylla-gdb.py +++ b/scylla-gdb.py @@ -3650,8 +3650,14 @@ class scylla_fiber(gdb.Command): res = self._probe_pointer(maybe_tptr, scanned_region_size, using_seastar_allocator, verbose) - if not res is None: - return res + if res is None: + continue + + if int(res[0].ptr) == int(ptr): + self._maybe_log("Rejecting self reference\n", verbose) + continue + + return res return None @@ -3706,8 +3712,14 @@ class scylla_fiber(gdb.Command): for maybe_tptr_meta, _ in scylla_find.find(ptr_meta.ptr): maybe_tptr_meta.ptr -= maybe_tptr_meta.offset_in_object res = self._probe_pointer(maybe_tptr_meta.ptr, scanned_region_size, using_seastar_allocator, verbose) - if not res is None: - return res + if res is None: + continue + + if int(res[0].ptr) == int(ptr_meta.ptr): + self._maybe_log("Rejecting self reference\n", verbose) + continue + + return res finally: orig.switch()