Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

segfaults on M1 Mac for arch arm64e #31

Open
DanboDuan opened this issue Dec 1, 2021 · 1 comment
Open

segfaults on M1 Mac for arch arm64e #31

DanboDuan opened this issue Dec 1, 2021 · 1 comment

Comments

@DanboDuan
Copy link

I build dsdump on M1 Mac myself. It works fine for x86_64 arch library, but fails for arm64e arch library

  1. first run
dsdump -sc /usr/libexec/sharingd
Multiple arches found: [ x86_64 | arm64e ]
Use --arches (-a) (or ARCH env var) to specify arch

so add -a x86_64, fine

dsdump -sc /usr/libexec/sharingd -a x86_64
 protocol sharingd.SDContactStoreInterface // 5 requirements
 protocol sharingd.SDAirDropHashStore // 12 requirements

 struct __C.Name {

	// Properties
	var _rawValue : NSString
 }

 class __C.CFString {
 class __C.CGImage {
 struct __C.FileProtectionType {

	// Properties
	var _rawValue : NSString
 }

 struct __C.FileAttributeKey {

	// Properties
	var _rawValue : NSString
 }

 struct sharingd.SDAirDropContactHashManagerContext {

	// Properties
	let systemMonitor : SDCUSystemMonitorInterface // +0x0
	let contactStore : SDContactStoreInterface // +0x8
	let hashStore : SDAirDropHashStore // +0x30
	let notificationCenter : NSNotificationCenter // +0x40
	let distributedNotificationCenter : NSNotificationCenter // +0x48
	let coalescerMinDelay : Double // +0x50
	let coalescerMaxDelay : Double // +0x58
 }

 class sharingd.SDXPCHelperImageCache : NSObject /usr/lib/libobjc.A.dylib {
	// ObjC -> Swift bridged methods
	0x1001d7730  @objc SDXPCHelperImageCache.init <stripped>

	// Swift methods
	0x1001d4a20  class func static SDXPCHelperImageCache.clearCacheWithSync(_:) // method
	0x1001d52d0  class func static SDXPCHelperImageCache.purgeAvatars() // method
	0x1001d55d0  class func static SDXPCHelperImageCache.evict(contactIdentifier:) // method
	0x1001d6440  class func static SDXPCHelperImageCache.setImage(_:forKey:contactIDs:) // method
	0x1001d6950  class func static SDXPCHelperImageCache.cacheIsEmpty() // method
	0x1001d6af0  class func static SDXPCHelperImageCache.imageForKey(_:contactIDs:) // method
	0x1001d6ff0  class func static SDXPCHelperImageCache.cacheCount() // method
 }

 enum sharingd.CacheError {

	// Properties
WARNING: couldn't find address 0x0 (0x0) in binary!
	case imageDestinationCreateFailed : ��
WARNING: couldn't find address 0x0 (0x0) in binary!
	case imageDestinationFinalizeFailed : ��
WARNING: couldn't find address 0x0 (0x0) in binary!
	case imageSourceCreateFailed : ��
 }

 class sharingd.SDAirDropHashStoreCDB : _SwiftObject /usr/lib/swift/libswiftCore.dylib {

	// Properties
	var reader : CUKeyValueStoreReader<NSData, NSData>
	var stagedAdditions : SDAirDropHashStoreEntry
	var stagedDeletedIDs : Set<String>
	var loaded : Bool
	var destroyed : Bool

	// Swift methods
	0x1001dbfa0  func SDAirDropHashStoreCDB.rebuildRequired.getter // getter
	0x1001dc150  func SDAirDropHashStoreCDB.load() // method
	0x1001dc7e0  func SDAirDropHashStoreCDB.stageAddEntries(_:) // method
	0x1001dd0f0  func SDAirDropHashStoreCDB.stageDeleteEntriesForContact(withID:) // method
	0x1001dd710  func SDAirDropHashStoreCDB.persist() // method
	0x1001df710  func SDAirDropHashStoreCDB.destroy() // method
	0x1001df9b0  func SDAirDropHashStoreCDB.contact(forLongHash:) // method
	0x1001dff80  func SDAirDropHashStoreCDB.contacts(forLongHash:) // method
	0x1001e0cc0  func SDAirDropHashStoreCDB.contact(forMediumHash:) // method
	0x1001e1280  func SDAirDropHashStoreCDB.contacts(forMediumHash:) // method
	0x1001e1c40  func SDAirDropHashStoreCDB.contains(shortHash:) // method
 }

 class sharingd.SDContactChangeHistoryEvent : _SwiftObject /usr/lib/swift/libswiftCore.dylib {
	// Swift methods
 }

 class sharingd.SDContactChangeHistoryDropEverythingEvent : SDContactChangeHistoryEvent { }

 class sharingd.SDContactChangeHistoryAddEvent : SDContactChangeHistoryEvent {

	// Properties
	let contact : CNContact

	// Swift methods
 }

 class sharingd.SDContactChangeHistoryDeleteEvent : SDContactChangeHistoryEvent {

	// Properties
	let contactIdentifier : String

	// Swift methods
 }

 class sharingd.SDContactChangeHistoryUpdateEvent : SDContactChangeHistoryEvent {

	// Properties
	let contact : CNContact

	// Swift methods
 }

 class sharingd.SDContactStore : _SwiftObject /usr/lib/swift/libswiftCore.dylib, SDContactStoreInterface {

	// Properties
	let didChangeNotificationName : Name
	let meContactDidChangeNotificationName : Name
	let contactStore : CNContactStore

	// Swift methods
	0x1001eda90  func <stripped> // method
	0x1001edbd0  func <stripped> // method
	0x1001ee120  func <stripped> // method
 }

 enum sharingd.SDRunState {

	// Properties
	case notStarted
	case inProgress
	case completed
	case failed
	case skip
 }

 class sharingd.OnceManager : _SwiftObject /usr/lib/swift/libswiftCore.dylib {

	// Properties
	var onceList : Set<Int> // +0x10 (0x8)

	// Swift methods
 }

 class sharingd.PushableTimer : _SwiftObject /usr/lib/swift/libswiftCore.dylib {

	// Properties
WARNING: couldn't find address 0x0 (0x0) in binary!
	let noLaterThan : {� // +0x19 (0x0)
	let timer : OS_dispatch_source_timer // +0x0 (0x8)

	// Swift methods
	0x1001f03f0  class func PushableTimer.__allocating_init(fireAt:noLaterThan:queue:handler:) // init
	0x1001f0510  func PushableTimer.reschedule(deadline:) // method
	0x1001f0720  func PushableTimer.resume() // method
	0x1001f0740  func PushableTimer.cancel() // method
 }

 class sharingd.SDB389BubbleMonitor : _SwiftObject /usr/lib/swift/libswiftCore.dylib {

	// Properties
WARNING: couldn't find address 0x0 (0x0) in binary!
	var allDevices :  empty-list
	var queue : OS_dispatch_queue?
	var updateHandler : ()?
WARNING: couldn't find address 0x0 (0x0) in binary!
	var lostHandler :  empty-list
	let bubbleScanner : SFDeviceDiscovery
	let rssiThreshold : Int
WARNING: couldn't find address 0x0 (0x0) in binary!
	var bubbleDevices :  empty-list

	// Swift methods
	0x1001f0860  func SDB389BubbleMonitor.allDevices.getter // getter
	0x1001f0890  func SDB389BubbleMonitor.allDevices.setter // setter
	0x1001f08d0  func SDB389BubbleMonitor.allDevices.modify // modifyCoroutine
	0x1001f0910  func SDB389BubbleMonitor.queue.getter // getter
	0x1001f0950  func SDB389BubbleMonitor.queue.setter // setter
	0x1001f0990  func SDB389BubbleMonitor.queue.modify // modifyCoroutine
	0x1001f09c0  func SDB389BubbleMonitor.inBubbleCount.getter // getter
	0x1001f09d0  func SDB389BubbleMonitor.updateHandler.getter // getter
	0x1001f0a10  func SDB389BubbleMonitor.updateHandler.setter // setter
	0x1001f0a80  func SDB389BubbleMonitor.updateHandler.modify // modifyCoroutine
	0x1001f0ab0  func SDB389BubbleMonitor.lostHandler.getter // getter
	0x1001f0af0  func SDB389BubbleMonitor.lostHandler.setter // setter
	0x1001f0b60  func SDB389BubbleMonitor.lostHandler.modify // modifyCoroutine
	0x1001f0b90  func SDB389BubbleMonitor.closestB389sInBubble.getter // getter
 }

 class sharingd.InstanceCounter {
 struct sharingd.IntegerPacker {

	// Properties
	let sourcesPerTarget : Int
 }

 enum sharingd.PackError {

	// Properties
	case wrongPackLength
 }

 struct sharingd.ShortHash {

	// Properties
WARNING: couldn't find address 0x0 (0x0) in binary!
	let storage : g� // +0x0
 }

 struct sharingd.MediumHash {

	// Properties
	let shortHash : ShortHash // +0x0
WARNING: couldn't find address 0x0 (0x0) in binary!
	let lastMediumByte : A� // +0x2
 }

 struct sharingd.LongHash {

	// Properties
WARNING: couldn't find address 0x0 (0x0) in binary!
	let storage : u� // +0x0
 }

 struct sharingd.SDHashStoreContact {

	// Properties
	let id : String // +0x0
	let emailOrPhone : String // +0x10
 }

 struct sharingd.SDAirDropHashStoreEntry {

	// Properties
	let hashStoreContact : SDHashStoreContact // +0x0
	let longHash : LongHash // +0x20
	let mediumHash : MediumHash // +0x40
 }

 class sharingd.SDAirDropHandlerIPA : SDAirDropHandler {
	// ObjC -> Swift bridged methods
	0x1001f6ec0  @objc SDAirDropHandlerIPA.canHandleTransfer <stripped>
	0x1001f6ed0  @objc SDAirDropHandlerIPA.transferTypes <stripped>
	0x1001f6f10  @objc SDAirDropHandlerIPA.suitableContentsDescription <stripped>
	0x1001f7450  @objc SDAirDropHandlerIPA.singleItemActionTitle <stripped>
	0x1001f7510  @objc SDAirDropHandlerIPA.initWithTransfer:bundleIdentifier: <stripped>
 }

 class sharingd.SDDeferrableOperation : NSObject /usr/lib/libobjc.A.dylib {

	// Properties
	let identifier : String // +0x8 (0x10)
WARNING: couldn't find address 0x0 (0x0) in binary!
	var preventUntilDate : �� // +0x0 (0x0)
	let operation : (_:) // +0x0 (0x10)
	let queue : OS_dispatch_queue // +0x0 (0x8)
WARNING: couldn't find address 0x0 (0x0) in binary!
	var timedReasons : String // +0x0 (0x8)
	var reasons : Set<String> // +0x0 (0x8)
	var pendingOperation : Bool // +0x0 (0x1)
	var mainTimer : OS_dispatch_source_timer? // +0x0 (0x8)

	// ObjC -> Swift bridged methods
	0x1001f7770  @objc SDDeferrableOperation.initWithIdentifier:queue:operation: <stripped>
	0x1001f7d00  @objc SDDeferrableOperation.addReason: <stripped>
	0x1001f8340  @objc SDDeferrableOperation.removeReason: <stripped>
	0x1001f91f0  @objc SDDeferrableOperation.pushPreventionDateForReason:newDate: <stripped>
	0x1001f97e0  @objc SDDeferrableOperation.scheduleOperation <stripped>
	0x1001fb5d0  @objc SDDeferrableOperation.returnPreventUntilDate <stripped>
	0x1001fb680  @objc SDDeferrableOperation.returnHasActiveTimer <stripped>
	0x1001fb6a0  @objc SDDeferrableOperation.init <stripped>
	0x1001fb700  @objc SDDeferrableOperation..cxx_destruct <stripped>

	// Swift methods
	0x1001f7820  func <stripped> // method
	0x1001f7d20  func <stripped> // method
	0x1001f83e0  func <stripped> // method
	0x1001f92d0  func <stripped> // method
	0x1001f9810  func <stripped> // method
	0x1001f9f00  func <stripped> // method
	0x1001face0  func <stripped> // method
	0x1001fb010  func <stripped> // method
 }

 enum sharingd.SDAirDropHashError {

	// Properties
	case hashesAreIncorrect
	case storeNotLoaded
	case storeDestroyed
	case contactIDDecodeFailed
	case contactFieldDecodeFailed
	case rateLimited
 }

 class sharingd.SDAirDropContactHashManager : NSObject /usr/lib/libobjc.A.dylib {

	// Properties
	let context : SDAirDropContactHashManagerContext // +0x8 (0x60)
	let contactUpdateCoalescer : CUCoalescer // +0x68 (0x8)
	let meCardUpdateCoalescer : CUCoalescer // +0x70 (0x8)
	let systemMonitor : SDCUSystemMonitorInterface // +0x78 (0x8)
	let hashManagerQ : OS_dispatch_queue // +0x80 (0x8)
	let bucket : SFTokenBucketWithDups // +0x88 (0x8)
	let contactStore : SDContactStoreInterface // +0x90 (0x28)
	var hashDB : SDAirDropHashStore // +0xb8 (0x10)
	let notificationCenter : NSNotificationCenter // +0xc8 (0x8)
	let distributedNotificationCenter : NSNotificationCenter // +0xd0 (0x8)
	var activated : Bool // +0xd8 (0x1)
	var meCardInfo : SDAirDropHashStoreEntry // +0xe0 (0x10)
	var hashesUpdatedSuccessfully : Bool // +0xf0 (0x1)

	// ObjC -> Swift bridged methods
	0x1001ff880  @objc SDAirDropContactHashManager.init <stripped>
	0x100201730  @objc SDAirDropContactHashManager.cmfSyncAgentBlockListDidChange <stripped>
	0x1002017b0  @objc SDAirDropContactHashManager.contactStoreDidChange <stripped>
	0x100201ac0  @objc SDAirDropContactHashManager.meCardDidChange <stripped>
	0x100209100  @objc SDAirDropContactHashManager..cxx_destruct <stripped>

	// Swift methods
 }

but fails for -a arm64e

dsdump -sc /usr/libexec/sharingd -a arm64e
[1]    93873 segmentation fault  dsdump -sc /usr/libexec/sharingd -a arm64e

figured adding details from the crash log might help!

Translated Report (Full Report Below)
-------------------------------------

Process:               dsdump [93873]
Path:                  /Users/USER/*/dsdump
Identifier:            dsdump
Version:               ???
Code Type:             ARM-64 (Native)
Parent Process:        zsh [85399]
Responsible:           iTerm2 [68109]
User ID:               501

Date/Time:             2021-12-02 00:17:51.5711 +0800
OS Version:            macOS 12.0.1 (21A559)
Report Version:        12
Anonymous UUID:        BB59D4CE-08F2-006C-360E-EEAD995E580A

Sleep/Wake UUID:       4097F3DD-96B7-4D54-9F2A-E450B888E5DC

Time Awake Since Boot: 150000 seconds
Time Since Wake:       3078 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x000000000000002c
Exception Codes:       0x0000000000000001, 0x000000000000002c
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace SIGNAL, Code 11 Segmentation fault: 11
Terminating Process:   exc handler [93873]

VM Region Info: 0x2c is not in any region.  Bytes before following region: 4332765140
      REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                      10240c000-1027e0000    [ 3920K] r-x/r-x SM=COW  ...USER/*/dsdump

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   dsdump                        	       0x102446a64 -[XRMachOLibrary(Opcode) parseDYLDExports] + 36 (XRMachOLibrary+Opcode.mm:362)
1   dsdump                        	       0x102446a64 -[XRMachOLibrary(Opcode) parseDYLDExports] + 36 (XRMachOLibrary+Opcode.mm:362)
2   dsdump                        	       0x10242a01c -[XRMachOLibrary initWithPath:] + 7296 (XRMachOLibrary.mm:380)
3   dsdump                        	       0x10244f4c4 main + 396 (main.m:59)
4   dyld                          	       0x102bfd0f4 start + 520


Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000000   x1: 0x00000001025956fd   x2: 0x000000000000000d   x3: 0x0000000000000029
    x4: 0x0000000000000078   x5: 0x000000000000004f   x6: 0x0000000000000074   x7: 0x0000000000000660
    x8: 0x000000013f804080   x9: 0x4036311255e20031  x10: 0x000000013f8050a0  x11: 0x0000000000db9a45
   x12: 0x000000000000001d  x13: 0x0000000000000000  x14: 0x0000000100000000  x15: 0x0000000102594d39
   x16: 0x000000010282ccba  x17: 0x000000010242d290  x18: 0x0000000000000000  x19: 0x0000000102ca4060
   x20: 0x000000010244f338  x21: 0x0000000102c58070  x22: 0x0000000000000000  x23: 0x0000000000000000
   x24: 0x0000000000000000  x25: 0x0000000000000000  x26: 0x0000000000000000  x27: 0x0000000000000000
   x28: 0x0000000000000000   fp: 0x000000016d9f2510   lr: 0x0000000102446a64
    sp: 0x000000016d9f2470   pc: 0x0000000102446a64 cpsr: 0x60000000
   far: 0x000000000000002c  esr: 0x92000006 (Data Abort) byte read Translation fault

Binary Images:
       0x10240c000 -        0x1027dffff dsdump (*) <52ee2ef6-2c2d-399c-88cc-50166185a29f> /Users/USER/*/dsdump
       0x102bf8000 -        0x102c57fff dyld (*) <86a8ba48-8bb4-3b30-9cda-051f73c74f44> /usr/lib/dyld
               0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 23
    thread_create: 0
    thread_set_state: 1460

VM Region Summary:
ReadOnly portion of Libraries: Total=653.7M resident=0K(0%) swapped_out_or_unallocated=653.7M(100%)
Writable regions: Total=668.4M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=668.4M(100%)

                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Activity Tracing                   256K        1 
Kernel Alloc Once                   32K        1 
MALLOC                           155.2M       15 
MALLOC guard page                   96K        5 
MALLOC_MEDIUM (reserved)         120.0M        1         reserved VM address space (unallocated)
MALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)
STACK GUARD                       56.0M        1 
Stack                             8176K        1 
__AUTH                             221K       47 
__AUTH_CONST                      2871K      124 
__DATA                            2652K      118 
__DATA_CONST                      3575K      125 
__DATA_DIRTY                       232K       50 
__LINKEDIT                       572.4M        3 
__OBJC_CONST                       259K       29 
__OBJC_RO                         81.8M        1 
__OBJC_RW                         3088K        1 
__TEXT                            81.3M      132 
__UNICODE                          588K        1 
dyld private memory               1024K        1 
mapped file                       4704K        1 
shared memory                       32K        2 
===========                     =======  ======= 
TOTAL                              1.4G      661 
TOTAL, minus reserved VM space   973.9M      661 



-----------
Full Report
-----------

{"app_name":"dsdump","timestamp":"2021-12-02 00:17:51.00 +0800","app_version":"","slice_uuid":"52ee2ef6-2c2d-399c-88cc-50166185a29f","build_version":"","platform":1,"share_with_app_devs":0,"is_first_party":1,"bug_type":"309","os_version":"macOS 12.0.1 (21A559)","incident_id":"634C16A5-45FD-4569-8C0A-57028A085718","name":"dsdump"}
{
  "uptime" : 150000,
  "procLaunch" : "2021-12-02 00:17:51.5507 +0800",
  "procRole" : "Unspecified",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "MacBookPro17,1",
  "procStartAbsTime" : 3658611329111,
  "coalitionID" : 737,
  "osVersion" : {
    "train" : "macOS 12.0.1",
    "build" : "21A559",
    "releaseType" : "User"
  },
  "captureTime" : "2021-12-02 00:17:51.5711 +0800",
  "incident" : "634C16A5-45FD-4569-8C0A-57028A085718",
  "bug_type" : "309",
  "pid" : 93873,
  "procExitAbsTime" : 3658611811387,
  "translated" : false,
  "cpuType" : "ARM-64",
  "procName" : "dsdump",
  "procPath" : "\/Users\/USER\/*\/dsdump",
  "parentProc" : "zsh",
  "parentPid" : 85399,
  "coalitionName" : "com.googlecode.iterm2
@DerekSelander
Copy link
Owner

@DanboDuan thanks, will look into arm64e support hopefully over the holidays

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants