[Lldb-commits] [lldb] 35dacf2 - Revert "Add a test for evicting unreachable modules from the global module cache (#74894)"

David Spickett via lldb-commits lldb-commits at lists.llvm.org
Wed Dec 13 03:34:51 PST 2023


Author: David Spickett
Date: 2023-12-13T11:34:43Z
New Revision: 35dacf2f51af251a74ac98ed29e7c454a619fcf1

URL: https://github.com/llvm/llvm-project/commit/35dacf2f51af251a74ac98ed29e7c454a619fcf1
DIFF: https://github.com/llvm/llvm-project/commit/35dacf2f51af251a74ac98ed29e7c454a619fcf1.diff

LOG: Revert "Add a test for evicting unreachable modules from the global module cache (#74894)"

This reverts commit 2684281d208612a746b05c891f346bd7b95318d5.

Due to being flaky on Arm and AArch64 buildbots.

Added: 
    

Modified: 
    

Removed: 
    lldb/test/API/python_api/global_module_cache/Makefile
    lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py
    lldb/test/API/python_api/global_module_cache/one-print.c
    lldb/test/API/python_api/global_module_cache/two-print.c


################################################################################
diff  --git a/lldb/test/API/python_api/global_module_cache/Makefile b/lldb/test/API/python_api/global_module_cache/Makefile
deleted file mode 100644
index 22f1051530f871..00000000000000
--- a/lldb/test/API/python_api/global_module_cache/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-include Makefile.rules

diff  --git a/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py b/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py
deleted file mode 100644
index 98ebdec0404eb4..00000000000000
--- a/lldb/test/API/python_api/global_module_cache/TestGlobalModuleCache.py
+++ /dev/null
@@ -1,169 +0,0 @@
-"""
-Test the use of the global module cache in lldb
-"""
-
-import lldb
-
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test import lldbutil
-import os
-import shutil
-from pathlib import Path
-import time
-
-class GlobalModuleCacheTestCase(TestBase):
-    # NO_DEBUG_INFO_TESTCASE = True
-
-    def check_counter_var(self, thread, value):
-        frame = thread.frames[0]
-        var = frame.FindVariable("counter")
-        self.assertTrue(var.GetError().Success(), "Got counter variable")
-        self.assertEqual(var.GetValueAsUnsigned(), value, "This was one-print")
-
-    def copy_to_main(self, src, dst):
-        # We are relying on the source file being newer than the .o file from
-        # a previous build, so sleep a bit here to ensure that the touch is later.
-        time.sleep(2)
-        try:
-            shutil.copy(src, dst)
-        except:
-            self.fail(f"Could not copy {src} to {dst}")
-        Path(dst).touch()
-
-    # The rerun tests indicate rerunning on Windows doesn't really work, so
-    # this one won't either.
-    @skipIfWindows
-    def test_OneTargetOneDebugger(self):
-        self.do_test(True, True)
-
-    # This behaves as implemented but that behavior is not desirable.
-    # This test tests for the desired behavior as an expected fail.
-    @skipIfWindows
-    @expectedFailureAll
-    def test_TwoTargetsOneDebugger(self):
-        self.do_test(False, True)
-
-    @skipIfWindows
-    @expectedFailureAll
-    def test_OneTargetTwoDebuggers(self):
-        self.do_test(True, False)
-
-    def do_test(self, one_target, one_debugger):
-        # Make sure that if we have one target, and we run, then
-        # change the binary and rerun, the binary (and any .o files
-        # if using dwarf in .o file debugging) get removed from the
-        # shared module cache.  They are no longer reachable.
-        debug_style = self.getDebugInfo()
-
-        # Before we do anything, clear the global module cache so we don't
-        # see objects from other runs:
-        lldb.SBDebugger.MemoryPressureDetected()
-
-        # Set up the paths for our two versions of main.c:
-        main_c_path = os.path.join(self.getBuildDir(), "main.c")
-        one_print_path = os.path.join(self.getSourceDir(), "one-print.c")
-        two_print_path = os.path.join(self.getSourceDir(), "two-print.c")
-        main_filespec = lldb.SBFileSpec(main_c_path)
-
-        # First copy the one-print.c to main.c in the build folder and
-        # build our a.out from there:
-        self.copy_to_main(one_print_path, main_c_path)
-        self.build(dictionary={"C_SOURCES": main_c_path, "EXE": "a.out"})
-
-        (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
-            self, "return counter;", main_filespec
-        )
-
-        # Make sure we ran the version we intended here:
-        self.check_counter_var(thread, 1)
-        process.Kill()
-
-        # Now copy two-print.c over main.c, rebuild, and rerun:
-        # os.unlink(target.GetExecutable().fullpath)
-        self.copy_to_main(two_print_path, main_c_path)
-
-        self.build(dictionary={"C_SOURCES": main_c_path, "EXE": "a.out"})
-        error = lldb.SBError()
-        if one_debugger:
-            if one_target:
-                (_, process, thread, _) = lldbutil.run_to_breakpoint_do_run(
-                    self, target, bkpt
-                )
-            else:
-                (target2, process2, thread, bkpt) = lldbutil.run_to_source_breakpoint(
-                    self, "return counter;", main_filespec
-                )
-        else:
-            if one_target:
-                new_debugger = lldb.SBDebugger().Create()
-                self.old_debugger = self.dbg
-                self.dbg = new_debugger
-                def cleanupDebugger(self):
-                    lldb.SBDebugger.Destroy(self.dbg)
-                    self.dbg = self.old_debugger
-                    self.old_debugger = None
-
-                self.addTearDownHook(cleanupDebugger)
-                (target2, process2, thread, bkpt) = lldbutil.run_to_source_breakpoint(
-                    self, "return counter;", main_filespec
-                )
-
-        # In two-print.c counter will be 2:
-        self.check_counter_var(thread, 2)
-
-        # If we made two targets, destroy the first one, that should free up the
-        # unreachable Modules:
-        if not one_target:
-            target.Clear()
-
-        num_a_dot_out_entries = 1
-        # For dSYM's there will be two lines of output, one for the a.out and one
-        # for the dSYM.
-        if debug_style == "dsym":
-            num_a_dot_out_entries += 1
-
-        error = self.check_image_list_result(num_a_dot_out_entries, 1)
-        # Even if this fails, MemoryPressureDetected should fix this.
-        lldb.SBDebugger.MemoryPressureDetected()
-        error_after_mpd = self.check_image_list_result(num_a_dot_out_entries, 1)
-        fail_msg = ""
-        if error != "":
-            fail_msg = "Error before MPD: " + error
-            
-        if error_after_mpd != "":
-            fail_msg = fail_msg + "\nError after MPD: " + error_after_mpd
-        if fail_msg != "":
-            self.fail(fail_msg)
-
-    def check_image_list_result(self, num_a_dot_out, num_main_dot_o):
-        # Check the global module list, there should only be one a.out, and if we are
-        # doing dwarf in .o file, there should only be one .o file.  This returns
-        # an error string on error - rather than asserting, so you can stage this
-        # failing.
-        image_cmd_result = lldb.SBCommandReturnObject()
-        interp = self.dbg.GetCommandInterpreter()
-        interp.HandleCommand("image list -g", image_cmd_result)
-        if self.TraceOn():
-            print(f"Expected: a.out: {num_a_dot_out} main.o: {num_main_dot_o}")
-            print(image_cmd_result)
-
-        image_list_str = image_cmd_result.GetOutput()
-        image_list = image_list_str.splitlines()
-        found_a_dot_out = 0
-        found_main_dot_o = 0
-
-        for line in image_list:
-            # FIXME: force this to be at the end of the string:
-            if "a.out" in line:
-                found_a_dot_out += 1
-            if "main.o" in line:
-                found_main_dot_o += 1
-        
-        if num_a_dot_out != found_a_dot_out:
-            return f"Got {found_a_dot_out} number of a.out's, expected {num_a_dot_out}"
-            
-        if found_main_dot_o > 0 and num_main_dot_o != found_main_dot_o:
-            return f"Got {found_main_dot_o} number of main.o's, expected {num_main_dot_o}"
-
-        return ""

diff  --git a/lldb/test/API/python_api/global_module_cache/one-print.c b/lldb/test/API/python_api/global_module_cache/one-print.c
deleted file mode 100644
index f008f36c2554e4..00000000000000
--- a/lldb/test/API/python_api/global_module_cache/one-print.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <stdio.h>
-
-int main() {
-  int counter = 0;
-  printf("I only print one time: %d.\n", counter++);
-  return counter;
-}

diff  --git a/lldb/test/API/python_api/global_module_cache/two-print.c b/lldb/test/API/python_api/global_module_cache/two-print.c
deleted file mode 100644
index 96f68cbed83c60..00000000000000
--- a/lldb/test/API/python_api/global_module_cache/two-print.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <stdio.h>
-
-int main() {
-  int counter = 0;
-  printf("I print one time: %d.\n", counter++);
-  printf("I print two times: %d.\n", counter++);
-  return counter;
-}


        


More information about the lldb-commits mailing list