From a15be43fd365a4772e08471b9340f9101ab1e9d8 Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Sun, 11 Oct 2026 05:20:26 +0200 Subject: [PATCH 1/2] disassembler_objdump: close pipe write end to prevent objdump deadlock --- src/processor/disassembler_objdump.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/processor/disassembler_objdump.cc b/src/processor/disassembler_objdump.cc index 4a8378de..50d1dc1a 100644 --- a/src/processor/disassembler_objdump.cc +++ b/src/processor/disassembler_objdump.cc @@ -277,6 +277,7 @@ bool DisassemblerObjdump::DisassembleInstruction(uint32_t cpu, exit(-1); } else { // In the parent process, parse the objdump output. + disassembly_pipe.CloseWriteFd(); // Match the instruction line, from: // 0: lock cmpxchg DWORD PTR [esi+0x10],eax From db16eb627c6d8f3d269dbb45e2f1a39acea9dd1a Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Sun, 11 Oct 2026 05:33:47 +0200 Subject: [PATCH 2/2] disassembler_objdump: use architecture-specific objdump on non-x86 Linux --- src/processor/disassembler_objdump.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/processor/disassembler_objdump.cc b/src/processor/disassembler_objdump.cc index 50d1dc1a..8a7ea39d 100644 --- a/src/processor/disassembler_objdump.cc +++ b/src/processor/disassembler_objdump.cc @@ -52,6 +52,12 @@ #include "common/linux/scoped_tmpfile.h" #include "processor/logging.h" +#if defined(__linux__) && !defined(__i386__) && !defined(__x86_64__) +#define OBJDUMP_PATH "x86_64-linux-gnu-objdump" +#else +#define OBJDUMP_PATH "objdump" +#endif + namespace google_breakpad { namespace { @@ -269,7 +275,7 @@ bool DisassemblerObjdump::DisassembleInstruction(uint32_t cpu, // since objdump does not have a mode to read from stdin. This cannot be // used with a pipe, since objdump requires that the input is a standard // file. - execlp("objdump", "objdump", "-D", "--no-show-raw-insn", "-b", "binary", + execlp(OBJDUMP_PATH, OBJDUMP_PATH, "-D", "--no-show-raw-insn", "-b", "binary", "-M", "intel", "-m", architecture.c_str(), "/proc/self/fd/0", nullptr);