[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