[Lldb-commits] [lldb] 0e314ef - [LLDB] Ensure plugins are destroyed at end of fuzz tests (#186012)

via lldb-commits lldb-commits at lists.llvm.org
Wed Mar 11 19:15:17 PDT 2026


Author: Aiden Grossman
Date: 2026-03-11T19:15:11-07:00
New Revision: 0e314ef4a6e779df813f408da23dd15f636eec74

URL: https://github.com/llvm/llvm-project/commit/0e314ef4a6e779df813f408da23dd15f636eec74
DIFF: https://github.com/llvm/llvm-project/commit/0e314ef4a6e779df813f408da23dd15f636eec74.diff

LOG: [LLDB] Ensure plugins are destroyed at end of fuzz tests (#186012)

Added: 
    lldb/tools/lldb-fuzzer/utils/SBDebuggerContextManager.h

Modified: 
    lldb/tools/lldb-fuzzer/lldb-commandinterpreter-fuzzer/lldb-commandinterpreter-fuzzer.cpp
    lldb/tools/lldb-fuzzer/lldb-target-fuzzer/lldb-target-fuzzer.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/tools/lldb-fuzzer/lldb-commandinterpreter-fuzzer/lldb-commandinterpreter-fuzzer.cpp b/lldb/tools/lldb-fuzzer/lldb-commandinterpreter-fuzzer/lldb-commandinterpreter-fuzzer.cpp
index 036954838b057..60f7d5458b234 100644
--- a/lldb/tools/lldb-fuzzer/lldb-commandinterpreter-fuzzer/lldb-commandinterpreter-fuzzer.cpp
+++ b/lldb/tools/lldb-fuzzer/lldb-commandinterpreter-fuzzer/lldb-commandinterpreter-fuzzer.cpp
@@ -8,6 +8,8 @@
 
 #include <string>
 
+#include "utils/SBDebuggerContextManager.h"
+
 #include "lldb/API/SBCommandInterpreter.h"
 #include "lldb/API/SBCommandInterpreterRunOptions.h"
 #include "lldb/API/SBCommandReturnObject.h"
@@ -15,13 +17,11 @@
 #include "lldb/API/SBTarget.h"
 
 using namespace lldb;
-
-extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) {
-  SBDebugger::Initialize();
-  return 0;
-}
+using namespace lldb_fuzzer;
 
 extern "C" int LLVMFuzzerTestOneInput(uint8_t *data, size_t size) {
+  static SBDebuggerContextManager ctx_manager = SBDebuggerContextManager();
+
   // Convert the data into a null-terminated string
   std::string str((char *)data, size);
 

diff  --git a/lldb/tools/lldb-fuzzer/lldb-target-fuzzer/lldb-target-fuzzer.cpp b/lldb/tools/lldb-fuzzer/lldb-target-fuzzer/lldb-target-fuzzer.cpp
index b7103789f5a57..6b8ea1f361398 100644
--- a/lldb/tools/lldb-fuzzer/lldb-target-fuzzer/lldb-target-fuzzer.cpp
+++ b/lldb/tools/lldb-fuzzer/lldb-target-fuzzer/lldb-target-fuzzer.cpp
@@ -6,6 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "utils/SBDebuggerContextManager.h"
 #include "utils/TempFile.h"
 
 #include "lldb/API/SBDebugger.h"
@@ -15,12 +16,9 @@ using namespace lldb;
 using namespace lldb_fuzzer;
 using namespace llvm;
 
-extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) {
-  SBDebugger::Initialize();
-  return 0;
-}
-
 extern "C" int LLVMFuzzerTestOneInput(uint8_t *data, size_t size) {
+  static SBDebuggerContextManager ctx_manager = SBDebuggerContextManager();
+
   std::unique_ptr<TempFile> file = TempFile::Create(data, size);
   if (!file)
     return 1;

diff  --git a/lldb/tools/lldb-fuzzer/utils/SBDebuggerContextManager.h b/lldb/tools/lldb-fuzzer/utils/SBDebuggerContextManager.h
new file mode 100644
index 0000000000000..ecc1e2dfa74d9
--- /dev/null
+++ b/lldb/tools/lldb-fuzzer/utils/SBDebuggerContextManager.h
@@ -0,0 +1,22 @@
+//===------------------------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/API/SBDebugger.h"
+
+using namespace lldb;
+
+namespace lldb_fuzzer {
+
+class SBDebuggerContextManager {
+public:
+  SBDebuggerContextManager() { SBDebugger::Initialize(); }
+
+  ~SBDebuggerContextManager() { SBDebugger::Terminate(); }
+};
+
+} // namespace lldb_fuzzer


        


More information about the lldb-commits mailing list