[all-commits] [llvm/llvm-project] 30183c: [lldb] Don't run code for CanJIT() while creating ...

Jonas Devlieghere via All-commits all-commits at lists.llvm.org
Fri Oct 2 17:55:50 PDT 2026


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 30183cb96ab0fb33d4f7aebd5126e75b852f3ba3
      https://github.com/llvm/llvm-project/commit/30183cb96ab0fb33d4f7aebd5126e75b852f3ba3
  Author: Jonas Devlieghere <jonas at devlieghere.com>
  Date:   2026-10-03 (Sat, 03 Oct 2026)

  Changed paths:
    M lldb/include/lldb/Target/Process.h
    M lldb/source/Plugins/Process/Windows/Common/ProcessWindows.h
    M lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
    M lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
    M lldb/source/Target/Process.cpp
    A lldb/test/API/functionalities/gdb_remote_client/TestObjCRuntimeNoInferiorCall.py
    A lldb/test/API/functionalities/gdb_remote_client/libobjc.A.dylib.yaml

  Log Message:
  -----------
  [lldb] Don't run code for CanJIT() while creating the ObjC runtime (#227555)

When libobjc lacks class_getMethodImplementation, the ObjC trampoline
handler calls CanJIT() to decide whether to warn. Without the _M
packet, CanJIT() allocated memory by calling mmap in the inferior.
Setting up that call unwinds the stack, which asks for the ObjC
runtime. The runtime isn't registered yet, so LLDB creates another one
and recurses until the stack overflows.

Ask the process plugin whether it can allocate memory instead of
trying it. ProcessGDBRemote probes the _M packet and otherwise checks
for an mmap symbol, neither of which runs code in the inferior.

rdar://188335027



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list