Author: Jonas Devlieghere Date: 2021-04-01T19:58:28-07:00 New Revision: cf51bf77b070f63391bacada5e166bfec2616989
URL: https://github.com/llvm/llvm-project/commit/cf51bf77b070f63391bacada5e166bfec2616989 DIFF: https://github.com/llvm/llvm-project/commit/cf51bf77b070f63391bacada5e166bfec2616989.diff LOG: [lldb] Account for objc_debug_class_getNameRaw returning NULL On macOS Catalina, calling objc_debug_class_getNameRaw on some of the ISA pointers returns NULL, causing us to crash and unwind before reading all the Objective-C classes. This does not happen on macOS Big Sur. Account for that possibility and skip the class when that happens. Added: Modified: lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp Removed: ################################################################################ diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp index 6b65ace397baa..debdfeaf909a7 100644 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp @@ -200,6 +200,7 @@ __lldb_apple_objc_v2_get_dynamic_class_info2(void *gdb_objc_realized_classes_ptr uint32_t count = 0; Class* realized_class_list = objc_copyRealizedClassList(&count); + DEBUG_PRINTF ("count = %u\n", count); uint32_t idx = 0; for (uint32_t i=0; i<=count; ++i) @@ -208,6 +209,8 @@ __lldb_apple_objc_v2_get_dynamic_class_info2(void *gdb_objc_realized_classes_ptr { Class isa = realized_class_list[i]; const char *name_ptr = objc_debug_class_getNameRaw(isa); + if (name_ptr == NULL) + continue; const char *s = name_ptr; uint32_t h = 5381; for (unsigned char c = *s; c; c = *++s) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits