Skip to content

Crash on OS X when accessing keyring from multiple processes #281

Closed

Description

@renatahodovan

OS: Mac OS Sierra, 10.12.5
Version: 10.3

Description: Crash happens (with -11 exit code) when trying to ask for a password both from the main process and from a subprocess. See the repro case below.

After some digging, it seems that the issue happens in the SecKeychainFindGenericPassword() call of backends/_OS_X_API.py: find_generic_password().

import keyring

from multiprocessing import Process

from_address = '[email protected]'

def my_subprocess():
    keyring.get_password('myapp', from_address)
    print('ok')

# comment out the line below to get things work(around)
keyring.get_password('myapp', from_address)

proc1 = Process(target=my_subprocess)
proc1.start()
proc1.join()
print(proc1.exitcode)

proc2 = Process(target=my_subprocess)
proc2.start()
proc2.join()
print(proc2.exitcode)

# expected output:
# ok
# 0
# ok
# 0
#
# current output:
# -11
# -11

Activity

  1. renatahodovan commented on Jun 20, 2017

    @renatahodovan
    Author

    The crash is also valid on the latest master (3ed3cae).

  2. jaraco commented on Jun 25, 2017

    @jaraco
    Owner

    Nice work characterizing the issue and providing a repro.

    I'm not sure what the next steps are to investigate, so I welcome you or others to continue to pursue a fix. Or I'll surely look into it more as the time permits.

  3. jaraco commented on Dec 6, 2018

    @jaraco
    Owner

    Based on the reproducer you supplied, I've added a test to a branch that replicates the reported failure. I was able to distill the reproducer even more to show that only one subprocess is necessary. I'm fairly sure that what's going on here is multiprocessing is using fork to create the new processes... and something about the way ctypes or keyring's use of ctypes doesn't work well under a forking model.

  4. jaraco commented on Dec 6, 2018

    @jaraco
    Owner

    This issue/answer seems related. Probably keyring needs to have its OS_X_API module reinitialized in the subprocesses.

  5. jaraco commented on Dec 6, 2018

    @jaraco
    Owner

    When the process crashes, I see this in the "Problem Report" that pops up due to the segmentation fault:

    Process:               Python [65995]
    Path:                  /Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
    Identifier:            Python
    Version:               3.7.1 (3.7.1)
    Code Type:             X86-64 (Native)
    Parent Process:        Python [65987]
    Responsible:           Python [65995]
    User ID:               501
    
    Date/Time:             2018-12-06 14:13:20.814 -0500
    OS Version:            Mac OS X 10.14.1 (18B75)
    Report Version:        12
    Bridge OS Version:     3.0 (14Y667)
    Anonymous UUID:        A073B1DA-A9E5-E766-11C6-C3D49FBEDFCB
    
    Sleep/Wake UUID:       60F0EAE0-C7C2-4E52-A7EC-206497ECA139
    
    Time Awake Since Boot: 460000 seconds
    Time Since Wake:       13000 seconds
    
    System Integrity Protection: enabled
    
    Crashed Thread:        0  Dispatch queue: com.apple.security.keychain-cache-queue
    
    Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
    Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000110
    Exception Note:        EXC_CORPSE_NOTIFY
    
    Termination Signal:    Segmentation fault: 11
    Termination Reason:    Namespace SIGNAL, Code 0xb
    Terminating Process:   exc handler [65995]
    
    VM Regions Near 0x110:
    --> 
        __TEXT                 0000000108a37000-0000000108a38000 [    4K] r-x/rwx SM=COW  /Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
    
    Application Specific Information:
    crashed on child side of fork pre-exec
    
    Thread 0 Crashed:: Dispatch queue: com.apple.security.keychain-cache-queue
    0   libdispatch.dylib             	0x00007fff6cfe4712 _dispatch_mgr_queue_push + 41
    1   com.apple.security            	0x00007fff4baaa0f2 invocation function for block in Security::KeychainCore::StorageManager::tickleKeychain(Security::KeychainCore::KeychainImpl*) + 76
    2   libdispatch.dylib             	0x00007fff6cfdadcf _dispatch_client_callout + 8
    3   libdispatch.dylib             	0x00007fff6cfe6a2c _dispatch_lane_barrier_sync_invoke_and_complete + 60
    4   com.apple.security            	0x00007fff4baa9fa5 Security::KeychainCore::StorageManager::tickleKeychain(Security::KeychainCore::KeychainImpl*) + 577
    5   com.apple.security            	0x00007fff4b8b58b8 Security::KeychainCore::KCCursorImpl::next(Security::KeychainCore::Item&) + 584
    6   com.apple.security            	0x00007fff4ba95040 SecKeychainFindGenericPassword + 338
    7   _ctypes.cpython-37m-darwin.so 	0x00000001096601d7 ffi_call_unix64 + 79
    8   _ctypes.cpython-37m-darwin.so 	0x0000000109660a38 ffi_call + 872
    9   _ctypes.cpython-37m-darwin.so 	0x000000010965b9fb _ctypes_callproc + 891
    10  _ctypes.cpython-37m-darwin.so 	0x0000000109655af0 PyCFuncPtr_call + 1040
    11  org.python.python             	0x0000000108a608b1 _PyObject_FastCallKeywords + 433
    12  org.python.python             	0x0000000108b202f4 call_function + 420
    13  org.python.python             	0x0000000108b1d4a7 _PyEval_EvalFrameDefault + 25351
    14  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    15  org.python.python             	0x0000000108b20432 call_function + 738
    16  org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    17  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    18  org.python.python             	0x0000000108b20432 call_function + 738
    19  org.python.python             	0x0000000108b1d3ec _PyEval_EvalFrameDefault + 25164
    20  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    21  org.python.python             	0x0000000108b20432 call_function + 738
    22  org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    23  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    24  org.python.python             	0x0000000108a604c4 _PyFunction_FastCallDict + 148
    25  org.python.python             	0x0000000108b1d717 _PyEval_EvalFrameDefault + 25975
    26  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    27  org.python.python             	0x0000000108b20432 call_function + 738
    28  org.python.python             	0x0000000108b1d3ec _PyEval_EvalFrameDefault + 25164
    29  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    30  org.python.python             	0x0000000108b20432 call_function + 738
    31  org.python.python             	0x0000000108b1d3ec _PyEval_EvalFrameDefault + 25164
    32  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    33  org.python.python             	0x0000000108b20432 call_function + 738
    34  org.python.python             	0x0000000108b1d3ec _PyEval_EvalFrameDefault + 25164
    35  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    36  org.python.python             	0x0000000108a604c4 _PyFunction_FastCallDict + 148
    37  org.python.python             	0x0000000108a6190f _PyObject_Call_Prepend + 143
    38  org.python.python             	0x0000000108aafe91 slot_tp_init + 145
    39  org.python.python             	0x0000000108aab7e9 type_call + 297
    40  org.python.python             	0x0000000108a608b1 _PyObject_FastCallKeywords + 433
    41  org.python.python             	0x0000000108b202f4 call_function + 420
    42  org.python.python             	0x0000000108b1d4a7 _PyEval_EvalFrameDefault + 25351
    43  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    44  org.python.python             	0x0000000108b20432 call_function + 738
    45  org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    46  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    47  org.python.python             	0x0000000108b20432 call_function + 738
    48  org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    49  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    50  org.python.python             	0x0000000108b20432 call_function + 738
    51  org.python.python             	0x0000000108b1d3ec _PyEval_EvalFrameDefault + 25164
    52  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    53  org.python.python             	0x0000000108b20432 call_function + 738
    54  org.python.python             	0x0000000108b1d4a7 _PyEval_EvalFrameDefault + 25351
    55  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    56  org.python.python             	0x0000000108a604c4 _PyFunction_FastCallDict + 148
    57  org.python.python             	0x0000000108b1d717 _PyEval_EvalFrameDefault + 25975
    58  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    59  org.python.python             	0x0000000108a604c4 _PyFunction_FastCallDict + 148
    60  org.python.python             	0x0000000108b1d717 _PyEval_EvalFrameDefault + 25975
    61  org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    62  org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    63  org.python.python             	0x0000000108b20432 call_function + 738
    64  org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    65  org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    66  org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    67  org.python.python             	0x0000000108b20432 call_function + 738
    68  org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    69  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    70  org.python.python             	0x0000000108b20432 call_function + 738
    71  org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    72  org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    73  org.python.python             	0x0000000108a6063b _PyFunction_FastCallDict + 523
    74  org.python.python             	0x0000000108a6190f _PyObject_Call_Prepend + 143
    75  org.python.python             	0x0000000108aaea56 slot_tp_call + 150
    76  org.python.python             	0x0000000108a608b1 _PyObject_FastCallKeywords + 433
    77  org.python.python             	0x0000000108b202f4 call_function + 420
    78  org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    79  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    80  org.python.python             	0x0000000108b20432 call_function + 738
    81  org.python.python             	0x0000000108b1d3ec _PyEval_EvalFrameDefault + 25164
    82  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    83  org.python.python             	0x0000000108a604c4 _PyFunction_FastCallDict + 148
    84  org.python.python             	0x0000000108b1d717 _PyEval_EvalFrameDefault + 25975
    85  org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    86  org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    87  org.python.python             	0x0000000108b20432 call_function + 738
    88  org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    89  org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    90  org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    91  org.python.python             	0x0000000108b20432 call_function + 738
    92  org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    93  org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    94  org.python.python             	0x0000000108b20432 call_function + 738
    95  org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    96  org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    97  org.python.python             	0x0000000108a6063b _PyFunction_FastCallDict + 523
    98  org.python.python             	0x0000000108a6190f _PyObject_Call_Prepend + 143
    99  org.python.python             	0x0000000108aaea56 slot_tp_call + 150
    100 org.python.python             	0x0000000108a60bc7 PyObject_Call + 135
    101 org.python.python             	0x0000000108b1d717 _PyEval_EvalFrameDefault + 25975
    102 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    103 org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    104 org.python.python             	0x0000000108b20432 call_function + 738
    105 org.python.python             	0x0000000108b1d4a7 _PyEval_EvalFrameDefault + 25351
    106 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    107 org.python.python             	0x0000000108a6063b _PyFunction_FastCallDict + 523
    108 org.python.python             	0x0000000108a6190f _PyObject_Call_Prepend + 143
    109 org.python.python             	0x0000000108aafe91 slot_tp_init + 145
    110 org.python.python             	0x0000000108aab7e9 type_call + 297
    111 org.python.python             	0x0000000108a608b1 _PyObject_FastCallKeywords + 433
    112 org.python.python             	0x0000000108b202f4 call_function + 420
    113 org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    114 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    115 org.python.python             	0x0000000108a6063b _PyFunction_FastCallDict + 523
    116 org.python.python             	0x0000000108b1d717 _PyEval_EvalFrameDefault + 25975
    117 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    118 org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    119 org.python.python             	0x0000000108b20432 call_function + 738
    120 org.python.python             	0x0000000108b1d4a7 _PyEval_EvalFrameDefault + 25351
    121 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    122 org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    123 org.python.python             	0x0000000108b20432 call_function + 738
    124 org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    125 org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    126 org.python.python             	0x0000000108a604c4 _PyFunction_FastCallDict + 148
    127 org.python.python             	0x0000000108b1d717 _PyEval_EvalFrameDefault + 25975
    128 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    129 org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    130 org.python.python             	0x0000000108b20432 call_function + 738
    131 org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    132 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    133 org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    134 org.python.python             	0x0000000108b20432 call_function + 738
    135 org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    136 org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    137 org.python.python             	0x0000000108b20432 call_function + 738
    138 org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    139 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    140 org.python.python             	0x0000000108a6063b _PyFunction_FastCallDict + 523
    141 org.python.python             	0x0000000108a6190f _PyObject_Call_Prepend + 143
    142 org.python.python             	0x0000000108aaea56 slot_tp_call + 150
    143 org.python.python             	0x0000000108a608b1 _PyObject_FastCallKeywords + 433
    144 org.python.python             	0x0000000108b202f4 call_function + 420
    145 org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    146 org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    147 org.python.python             	0x0000000108a604c4 _PyFunction_FastCallDict + 148
    148 org.python.python             	0x0000000108b1d717 _PyEval_EvalFrameDefault + 25975
    149 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    150 org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    151 org.python.python             	0x0000000108b20432 call_function + 738
    152 org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    153 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    154 org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    155 org.python.python             	0x0000000108b20432 call_function + 738
    156 org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    157 org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    158 org.python.python             	0x0000000108b20432 call_function + 738
    159 org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    160 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    161 org.python.python             	0x0000000108a6063b _PyFunction_FastCallDict + 523
    162 org.python.python             	0x0000000108a6190f _PyObject_Call_Prepend + 143
    163 org.python.python             	0x0000000108aaea56 slot_tp_call + 150
    164 org.python.python             	0x0000000108a608b1 _PyObject_FastCallKeywords + 433
    165 org.python.python             	0x0000000108b202f4 call_function + 420
    166 org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    167 org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    168 org.python.python             	0x0000000108b20432 call_function + 738
    169 org.python.python             	0x0000000108b1d4a7 _PyEval_EvalFrameDefault + 25351
    170 org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    171 org.python.python             	0x0000000108b20432 call_function + 738
    172 org.python.python             	0x0000000108b1d4a7 _PyEval_EvalFrameDefault + 25351
    173 org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    174 org.python.python             	0x0000000108a604c4 _PyFunction_FastCallDict + 148
    175 org.python.python             	0x0000000108b1d717 _PyEval_EvalFrameDefault + 25975
    176 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    177 org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    178 org.python.python             	0x0000000108b20432 call_function + 738
    179 org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    180 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    181 org.python.python             	0x0000000108a60a61 _PyFunction_FastCallKeywords + 257
    182 org.python.python             	0x0000000108b20432 call_function + 738
    183 org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    184 org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    185 org.python.python             	0x0000000108b20432 call_function + 738
    186 org.python.python             	0x0000000108b1d406 _PyEval_EvalFrameDefault + 25190
    187 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    188 org.python.python             	0x0000000108a6063b _PyFunction_FastCallDict + 523
    189 org.python.python             	0x0000000108a6190f _PyObject_Call_Prepend + 143
    190 org.python.python             	0x0000000108aaea56 slot_tp_call + 150
    191 org.python.python             	0x0000000108a608b1 _PyObject_FastCallKeywords + 433
    192 org.python.python             	0x0000000108b202f4 call_function + 420
    193 org.python.python             	0x0000000108b1d54d _PyEval_EvalFrameDefault + 25517
    194 org.python.python             	0x0000000108a60ed0 function_code_fastcall + 128
    195 org.python.python             	0x0000000108b20432 call_function + 738
    196 org.python.python             	0x0000000108b1d4a7 _PyEval_EvalFrameDefault + 25351
    197 org.python.python             	0x0000000108b20f56 _PyEval_EvalCodeWithName + 2422
    198 org.python.python             	0x0000000108b170c4 PyEval_EvalCode + 100
    199 org.python.python             	0x0000000108b54591 PyRun_FileExFlags + 209
    200 org.python.python             	0x0000000108b53e0a PyRun_SimpleFileExFlags + 890
    201 org.python.python             	0x0000000108b7219b pymain_main + 6827
    202 org.python.python             	0x0000000108b726ea _Py_UnixMain + 58
    203 libdyld.dylib                 	0x00007fff6d02908d start + 1
    
    Thread 0 crashed with X86 Thread State (64-bit):
      rax: 0x0000000000000100  rbx: 0x00007faf21570bd0  rcx: 0x00007fff9fe1d140  rdx: 0x0000000000000000
      rdi: 0x00007fff9fe1d140  rsi: 0x00007faf21570bd0  rbp: 0x00007ffee71bf250  rsp: 0x00007ffee71bf208
       r8: 0xff80004000000000   r9: 0x0000000000000000  r10: 0x00007faf21570bd0  r11: 0x0000002000000000
      r12: 0x0000000000000005  r13: 0x0000002000000000  r14: 0x00007ffee71bf2b0  r15: 0x0000000000000000
      rip: 0x00007fff6cfe4712  rfl: 0x0000000000010206  cr2: 0x0000000000000110
      
    Logical CPU:     3
    Error Code:      0x00000006
    Trap Number:     14
    
    
    Binary Images:
           0x108a37000 -        0x108a37fff +org.python.python (3.7.1 - 3.7.1) <4B030EC4-815E-34B7-90E7-D0720C31E072> /Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
           0x108a3f000 -        0x108c17fff +org.python.python (3.7.1, [c] 2001-2018 Python Software Foundation. - 3.7.1) <977C0919-F108-3AC9-8796-F42032694A62> /Library/Frameworks/Python.framework/Versions/3.7/Python
           0x10905f000 -        0x109060fff +_heapq.cpython-37m-darwin.so (0) <E8B35F18-1B5A-3C9E-B1F4-0BE0432459A2> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_heapq.cpython-37m-darwin.so
           0x1090a4000 -        0x1090a8fff +_struct.cpython-37m-darwin.so (0) <2379780F-4AB4-394B-B5AB-55A517D6627E> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_struct.cpython-37m-darwin.so
           0x109131000 -        0x109134ff7 +zlib.cpython-37m-darwin.so (0) <CB41B121-E928-3213-92CE-7A26C3F668BF> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/zlib.cpython-37m-darwin.so
           0x10917a000 -        0x10917bff7 +_bz2.cpython-37m-darwin.so (0) <732D55D3-F86E-31E0-95B9-DB921419F7B2> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_bz2.cpython-37m-darwin.so
           0x10917f000 -        0x1091afff7 +_lzma.cpython-37m-darwin.so (0) <91D1CDE2-5956-3869-87A0-29726C9D4C60> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_lzma.cpython-37m-darwin.so
           0x1091b9000 -        0x1091b9fff +grp.cpython-37m-darwin.so (0) <9C889B5E-65A3-339F-8F34-E10FF20A6ED9> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/grp.cpython-37m-darwin.so
           0x1091fc000 -        0x109200fff +math.cpython-37m-darwin.so (0) <E18B0A65-B44F-3F1D-96A8-C29A7F794019> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/math.cpython-37m-darwin.so
           0x109250000 -        0x109252ff7 +_hashlib.cpython-37m-darwin.so (0) <13B96FDE-C671-3396-B89D-2ACB4F56A05B> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_hashlib.cpython-37m-darwin.so
           0x109257000 -        0x109298ff7 +libssl.1.1.dylib (0) <E00648A8-30F5-3638-8774-6EE461AB8CAC> /Library/Frameworks/Python.framework/Versions/3.7/lib/libssl.1.1.dylib
           0x1092b9000 -        0x109496c6f +libcrypto.1.1.dylib (0) <4E4019C3-04B3-3DA5-8504-57FF0E7C5600> /Library/Frameworks/Python.framework/Versions/3.7/lib/libcrypto.1.1.dylib
           0x109516000 -        0x10951bff7 +_blake2.cpython-37m-darwin.so (0) <5D4A9B1B-FE9F-34EA-BD75-7B3CDDBB7CD0> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_blake2.cpython-37m-darwin.so
           0x109520000 -        0x109530ff7 +_sha3.cpython-37m-darwin.so (0) <78945AB7-D4B8-3DCE-8496-EE83FDA05E0D> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_sha3.cpython-37m-darwin.so
           0x109536000 -        0x109536ff7 +_bisect.cpython-37m-darwin.so (0) <A4FCF31A-2AA6-3EAC-AF46-2F2D10EC1AB1> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_bisect.cpython-37m-darwin.so
           0x109539000 -        0x10953aff7 +_random.cpython-37m-darwin.so (0) <CE043712-0C0E-3DA4-AAF2-35654CC67C6D> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_random.cpython-37m-darwin.so
           0x10953e000 -        0x10953ffff +fcntl.cpython-37m-darwin.so (0) <ADADACC0-C00C-3386-9709-CCB56A7C95E0> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/fcntl.cpython-37m-darwin.so
           0x1095c3000 -        0x1095c3ff7 +_opcode.cpython-37m-darwin.so (0) <11A650B3-FF7B-3DF1-81E2-A906553221C9> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_opcode.cpython-37m-darwin.so
           0x109606000 -        0x109607ff7 +_posixsubprocess.cpython-37m-darwin.so (0) <11920A4C-3AD4-3C87-95E5-418D30950610> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_posixsubprocess.cpython-37m-darwin.so
           0x10960b000 -        0x10960dfff +select.cpython-37m-darwin.so (0) <869F8AE3-73B4-35C4-82CA-3D954FD00F78> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/select.cpython-37m-darwin.so
           0x109653000 -        0x109663ff7 +_ctypes.cpython-37m-darwin.so (0) <78FCD5A2-0B47-331E-A406-2876C1289C15> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_ctypes.cpython-37m-darwin.so
           0x1096f5000 -        0x1096f5fff +_uuid.cpython-37m-darwin.so (0) <4283C23E-E755-3642-9450-F25DED17AE4D> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_uuid.cpython-37m-darwin.so
           0x1097f8000 -        0x1097fbff7 +binascii.cpython-37m-darwin.so (0) <60B5738A-87CE-390A-B05C-5C02BB2286B0> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/binascii.cpython-37m-darwin.so
           0x10983f000 -        0x10984dff7 +_datetime.cpython-37m-darwin.so (0) <7FF4FE68-5406-3A36-9F7C-ACEFF1E3C15E> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_datetime.cpython-37m-darwin.so
           0x109858000 -        0x109881ff7 +pyexpat.cpython-37m-darwin.so (0) <473B66EB-ADDB-32E0-AC11-89E35ECBBB87> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/pyexpat.cpython-37m-darwin.so
           0x109964000 -        0x10996dff7 +_socket.cpython-37m-darwin.so (0) <0BA1CC79-DBFC-332D-9DEE-7A81A6654023> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_socket.cpython-37m-darwin.so
           0x109d2e000 -        0x109d72ff7 +_decimal.cpython-37m-darwin.so (0) <C94BD9E0-CEBA-3930-AB10-15E1FEFAA244> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_decimal.cpython-37m-darwin.so
           0x109e91000 -        0x109e96fff +_json.cpython-37m-darwin.so (0) <58573D55-4505-383C-89CE-7B16ED7981AD> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_json.cpython-37m-darwin.so
           0x109f9b000 -        0x109faefff +_pickle.cpython-37m-darwin.so (0) <2F30BDA6-A35E-38F0-9096-72DDCA1030B6> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_pickle.cpython-37m-darwin.so
           0x109fba000 -        0x109fbfff7 +array.cpython-37m-darwin.so (0) <B594CECF-180C-348D-B9DA-11275D232042> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/array.cpython-37m-darwin.so
           0x10a089000 -        0x10a186fff +unicodedata.cpython-37m-darwin.so (0) <B4AE629C-6564-3E2E-9A6E-AE586EE0AD79> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/unicodedata.cpython-37m-darwin.so
           0x10a34c000 -        0x10a34dff7 +termios.cpython-37m-darwin.so (0) <A1A8F79D-1BA9-3217-961C-66720158D6A4> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/termios.cpython-37m-darwin.so
           0x10a4d2000 -        0x10a4d3ff7 +_queue.cpython-37m-darwin.so (0) <C457E118-139B-352D-A6F9-DA76389AE74E> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_queue.cpython-37m-darwin.so
           0x10a517000 -        0x10a518ff7 +_multiprocessing.cpython-37m-darwin.so (0) <80720A7D-F233-3D7A-A57E-D6D957CEACD7> /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_multiprocessing.cpython-37m-darwin.so
           0x10b51d000 -        0x10b59b6a7  dyld (635.2) <1780094A-8FE2-3EAA-B4A3-C4CF14BC5196> /usr/lib/dyld
        0x7fff3c13c000 -     0x7fff3c13cfff  com.apple.Accelerate (1.11 - Accelerate 1.11) <A09CB6D5-3F8A-3E05-B0EB-63878296A059> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
        0x7fff3c154000 -     0x7fff3c7f4fe3  com.apple.vImage (8.1 - ???) <DB23E2A0-EA06-3073-AA7E-2873556714A9> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
        0x7fff3c7f5000 -     0x7fff3ca6cfd7  libBLAS.dylib (1243.200.4) <76710990-AE2B-300E-88BB-797ABAD74956> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
        0x7fff3ca6d000 -     0x7fff3cadffe7  libBNNS.dylib (38.200.5) <5F3A4021-8FF8-30E8-B84A-AA2BD70F4151> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
        0x7fff3cae0000 -     0x7fff3ce86fff  libLAPACK.dylib (1243.200.4) <45722A8A-5788-3C4C-ADD9-1812763FA635> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
        0x7fff3ce87000 -     0x7fff3ce9cffb  libLinearAlgebra.dylib (1243.200.4) <E923DA33-B142-3A73-A80A-642878D19099> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
        0x7fff3ce9d000 -     0x7fff3cea2ff3  libQuadrature.dylib (3.200.2) <6FFAC142-415D-3AF0-BC09-336302F11934> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
        0x7fff3cea3000 -     0x7fff3cf20ffb  libSparse.dylib (79.200.5) <0D7E71A4-10D2-3979-B386-D2426ADAF6D7> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib
        0x7fff3cf21000 -     0x7fff3cf34ffb  libSparseBLAS.dylib (1243.200.4) <00D6FC17-B739-3259-90A4-92AC8BBE03D6> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
        0x7fff3cf35000 -     0x7fff3d119ff3  libvDSP.dylib (671.220.1) <2F576522-08B1-3C65-8F00-3427E938ADDA> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
        0x7fff3d11a000 -     0x7fff3d1cfff3  libvMisc.dylib (671.220.1) <29F59097-A256-38E9-9D55-BF56E9139CD9> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
        0x7fff3d1d0000 -     0x7fff3d1d0fff  com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) <221E4FEF-0431-3316-8281-22B6F8315A09> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
        0x7fff3e1f3000 -     0x7fff3e1f3fff  com.apple.ApplicationServices (50.1 - 50.1) <470C0943-30AD-3BA2-AFCE-EB7DD26E1709> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
        0x7fff3e1f4000 -     0x7fff3e25fff7  com.apple.ApplicationServices.ATS (377 - 453.11) <7599E619-EE21-3EB7-875B-AE3B8D3E13BB> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
        0x7fff3e2f8000 -     0x7fff3e417fff  libFontParser.dylib (228.6) <E800074F-62CF-340A-A5A7-B8BE5B560045> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
        0x7fff3e418000 -     0x7fff3e463fff  libFontRegistry.dylib (228.12) <480D472D-C8FB-321D-86EC-2EA6927A97AD> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
        0x7fff3e55f000 -     0x7fff3e563ff3  com.apple.ColorSyncLegacy (4.13.0 - 1) <90641B6B-D07B-3577-B594-965825544B60> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy
        0x7fff3e600000 -     0x7fff3e652ff3  com.apple.HIServices (1.22 - 627.14.2) <01F309D6-32E7-3C4F-A38B-8206EE3076CC> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
        0x7fff3e653000 -     0x7fff3e661ff3  com.apple.LangAnalysis (1.7.0 - 1.7.0) <67BC5855-B7A3-39E6-B5DD-52B287EB1532> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
        0x7fff3e662000 -     0x7fff3e6aefff  com.apple.print.framework.PrintCore (14.0 - 503.7) <C13BC56A-65F4-35B1-9E33-51FE6F3B06FD> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
        0x7fff3e6af000 -     0x7fff3e6eaff7  com.apple.QD (3.12 - 407.2) <94A30038-C545-327A-B1C0-E19C79D62BAB> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
        0x7fff3e6eb000 -     0x7fff3e6f7ff7  com.apple.speech.synthesis.framework (8.1.0 - 8.1.0) <823830AC-62A6-36CC-A659-6BC10F2AC6F5> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
        0x7fff3e6f8000 -     0x7fff3e994ff7  com.apple.audio.toolbox.AudioToolbox (1.14 - 1.14) <F56518BA-B21B-32D8-B077-40A989815F46> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
        0x7fff3ecfa000 -     0x7fff3f0bbff7  com.apple.CFNetwork (975.0.3 - 975.0.3) <99BD4FA0-8BD3-35E5-8FB1-C757D439716C> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
        0x7fff3f5f7000 -     0x7fff3f6c3fff  com.apple.ColorSync (4.13.0 - 3340) <0618DA46-5A5E-339D-BB2F-ED66A2BFCCF9> /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync
        0x7fff3f85e000 -     0x7fff3f8eefff  com.apple.audio.CoreAudio (4.3.0 - 4.3.0) <A7F8E168-AB1D-36F4-9693-CFEF12BC197D> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
        0x7fff3f980000 -     0x7fff3fd21fef  com.apple.CoreData (120 - 866.1) <B74013FA-621B-30F9-8CFE-3290FF63C2B8> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
        0x7fff3fd22000 -     0x7fff3fe0bff7  com.apple.CoreDisplay (101.3 - 104.4) <52C96B6A-B119-3BE2-B47D-65F12E987609> /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
        0x7fff3fe0c000 -     0x7fff40259fe7  com.apple.CoreFoundation (6.9 - 1560.12) <B5BDC307-6C89-3DE0-B4B9-4C2C650E4528> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
        0x7fff4025b000 -     0x7fff408e8ff7  com.apple.CoreGraphics (2.0 - 1247.4.1) <D2F1DD53-09BD-307B-8B80-46B259530ED8> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
        0x7fff408ea000 -     0x7fff40c13fff  com.apple.CoreImage (14.1.0 - 710.2.240) <CAEE3AAA-0781-311A-B987-72C7332C1A3F> /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
        0x7fff410c9000 -     0x7fff410c9fff  com.apple.CoreServices (934 - 934) <EBA4A3BF-0B07-3E1B-9C14-8E6879453C6C> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
        0x7fff410ca000 -     0x7fff41148ffb  com.apple.AE (771 - 771) <BBFEAB6C-B1F9-3D22-934E-8298155AC459> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
        0x7fff41149000 -     0x7fff41421ff7  com.apple.CoreServices.CarbonCore (1178.11 - 1178.11) <9FBE7BFB-3A81-37AC-8E15-E6F7932BBDC0> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
        0x7fff41422000 -     0x7fff4146cff7  com.apple.DictionaryServices (1.2 - 284.16.3) <D9388630-E7F2-321E-81FF-EBD5F3B47A52> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
        0x7fff4146d000 -     0x7fff41475ffb  com.apple.CoreServices.FSEvents (1239.200.12 - 1239.200.12) <E40A3C4A-79C7-37D8-999B-D1169A06870B> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
        0x7fff41476000 -     0x7fff41641fff  com.apple.LaunchServices (934 - 934) <FD3D313D-997B-388B-B208-29774CDDF897> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
        0x7fff41642000 -     0x7fff416e4fff  com.apple.Metadata (10.7.0 - 1191.52) <5A758D93-4BBD-3C6D-861B-000536ED9B2D> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
        0x7fff416e5000 -     0x7fff41730ff7  com.apple.CoreServices.OSServices (934 - 934) <1D2AC09A-653F-3C2D-B5B9-F9ABA307E51C> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
        0x7fff41731000 -     0x7fff4179fff7  com.apple.SearchKit (1.4.0 - 1.4.0) <C6A34D09-9707-3F28-838F-63B59B8A12D5> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
        0x7fff417a0000 -     0x7fff417c4ffb  com.apple.coreservices.SharedFileList (71.27 - 71.27) <B46A15E0-4C10-3616-BE49-58E07EC463FE> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
        0x7fff41b0c000 -     0x7fff41c71ffb  com.apple.CoreText (352.0 - 584.25) <AC3B4909-564A-3C26-B055-7687E5DE1697> /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
        0x7fff41c72000 -     0x7fff41caffff  com.apple.CoreVideo (1.8 - 0.0) <C7BB7D0F-3AF2-3046-A387-A802BCA52A3A> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
        0x7fff41fc3000 -     0x7fff41fc8fff  com.apple.DiskArbitration (2.7 - 2.7) <C53C1905-9BCF-3AE8-8BB3-C8A2C7DB7D25> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
        0x7fff42191000 -     0x7fff4255ffff  com.apple.Foundation (6.9 - 1560.12) <B5DC275C-12C9-320A-A117-C8FE9034931A> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
        0x7fff425d0000 -     0x7fff42600ff3  com.apple.GSS (4.0 - 2.0) <721B6FEF-9E0E-311B-8CAF-93ADEE2AE548> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
        0x7fff42886000 -     0x7fff42918ff7  com.apple.framework.IOKit (2.0.2 - 1483.220.15) <B58031DE-A6B7-3685-840F-361670C06836> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
        0x7fff4291a000 -     0x7fff42924ff7  com.apple.IOSurface (255.1 - 255.1) <538F0257-A408-36AF-AB1E-1D7037D6359E> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
        0x7fff4297b000 -     0x7fff42b19fff  com.apple.ImageIO.framework (3.3.0 - 1821.6.4.1) <00BF9654-021D-33C7-B681-461F3EF357FD> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
        0x7fff42b1a000 -     0x7fff42b1effb  libGIF.dylib (1821.6.4.1) <032CA0C2-8AAA-3D3F-8E61-25CE9267C2A7> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
        0x7fff42b1f000 -     0x7fff42c04fef  libJP2.dylib (1821.6.4.1) <FED43EEB-2B6C-32FC-94A2-297DA8CE4D87> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
        0x7fff42c05000 -     0x7fff42c2aff7  libJPEG.dylib (1821.6.4.1) <DD334010-2B8D-3A5E-BC17-39A9D94AC92D> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
        0x7fff42efd000 -     0x7fff42f23fe7  libPng.dylib (1821.6.4.1) <EBAAB8C0-33A7-3C13-B96C-8B6AB8287C7A> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
        0x7fff42f24000 -     0x7fff42f26ff7  libRadiance.dylib (1821.6.4.1) <E9BCF8B3-DA07-3F80-B51F-5793BD38AE4A> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
        0x7fff42f27000 -     0x7fff42f75fff  libTIFF.dylib (1821.6.4.1) <C432D21E-2DA5-3B69-BD04-BA7B6DBEAE2F> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
        0x7fff44012000 -     0x7fff4402bfff  com.apple.Kerberos (3.0 - 1) <8BE3D524-257D-3663-A937-F1AC76BDF4D9> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
        0x7fff44a4c000 -     0x7fff44adffff  com.apple.Metal (157.60 - 157.60) <B38C577A-CD24-30AD-A396-219945949F39> /System/Library/Frameworks/Metal.framework/Versions/A/Metal
        0x7fff44afc000 -     0x7fff44b1cff7  com.apple.MetalPerformanceShaders.MPSCore (1.0 - 1) <A9E87429-4788-3B2F-B970-4052F16C5961> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSCore.framework/Versions/A/MPSCore
        0x7fff44b1d000 -     0x7fff44b9bff7  com.apple.MetalPerformanceShaders.MPSImage (1.0 - 1) <80DE2FD1-85DB-3E98-98BD-F22A2600DD25> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSImage.framework/Versions/A/MPSImage
        0x7fff44b9c000 -     0x7fff44bc4fff  com.apple.MetalPerformanceShaders.MPSMatrix (1.0 - 1) <49039DEE-D0EC-33FF-BE10-997A520D2E38> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix
        0x7fff44bc5000 -     0x7fff44cf7ff7  com.apple.MetalPerformanceShaders.MPSNeuralNetwork (1.0 - 1) <425D1FA4-17A3-3D00-8BE4-7A682FF279B5> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork
        0x7fff44cf8000 -     0x7fff44d13ff7  com.apple.MetalPerformanceShaders.MPSRayIntersector (1.0 - 1) <BB1651A0-05CD-3F97-8355-39CD326C0AFD> /System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector
        0x7fff44d14000 -     0x7fff44d14ff7  com.apple.MetalPerformanceShaders.MetalPerformanceShaders (1.0 - 1) <3910EC50-5B16-3695-B867-741E3B54FA8B> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
        0x7fff45f13000 -     0x7fff45f1fffb  com.apple.NetFS (6.0 - 4.0) <529E29A9-5E77-3A8C-A982-CF55F949FE5D> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
        0x7fff489df000 -     0x7fff48a37ff7  com.apple.opencl (2.12.7 - 2.12.7) <CCAC9774-C4BF-33C1-AC87-F2AEB972632F> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
        0x7fff48a38000 -     0x7fff48a54ff7  com.apple.CFOpenDirectory (10.14 - 207.200.4) <7E4EFF02-2596-31E6-88DE-29C89E2837E4> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
        0x7fff48a55000 -     0x7fff48a61ffb  com.apple.OpenDirectory (10.14 - 207.200.4) <52A3918E-0F7A-33FD-87EE-21A37B37D13B> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
        0x7fff493c4000 -     0x7fff493c6fff  libCVMSPluginSupport.dylib (17.0.37) <E47B2819-913A-3588-A3F5-CE3EDA8551A2> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
        0x7fff493c7000 -     0x7fff493ccff3  libCoreFSCache.dylib (163.20) <BF8F04DD-C1A1-3D2A-BF3F-639FE907E28D> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
        0x7fff493cd000 -     0x7fff493d1fff  libCoreVMClient.dylib (163.20) <45A2C724-F3D1-316A-9A41-CAB8E2A390EC> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
        0x7fff493d2000 -     0x7fff493daffb  libGFXShared.dylib (17.0.37) <C26CA5C7-8DFC-3BE9-9873-C7A51F139FB0> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
        0x7fff493db000 -     0x7fff493e6fff  libGL.dylib (17.0.37) <8DCB2714-ECB1-39EC-931D-C58D9E91B51C> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
        0x7fff493e7000 -     0x7fff49421fef  libGLImage.dylib (17.0.37) <B64C775F-C64F-35D7-8179-1E4F20E76BA3> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
        0x7fff49595000 -     0x7fff495d2fff  libGLU.dylib (17.0.37) <B0D434EF-F5AC-3C0A-84DF-FFAFC57F3759> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
        0x7fff49f82000 -     0x7fff49f91ff3  com.apple.opengl (17.0.37 - 17.0.37) <6BCCA53E-5621-32ED-BA9A-38B1C2499ED5> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
        0x7fff4aded000 -     0x7fff4b045fff  com.apple.QuartzCore (1.11 - 694.22.4.1) <1F5A49A9-370C-311B-B67C-DEA6DF6D2983> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
        0x7fff4b893000 -     0x7fff4bbb9ff7  com.apple.security (7.0 - 58286.220.15) <6725D63D-378F-3751-8602-3122016E4AA4> /System/Library/Frameworks/Security.framework/Versions/A/Security
        0x7fff4bbba000 -     0x7fff4bc49fff  com.apple.securityfoundation (6.0 - 55185.200.14) <236BACD7-163F-3F35-B710-2C62988AA251> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
        0x7fff4bc7b000 -     0x7fff4bc7fff3  com.apple.xpc.ServiceManagement (1.0 - 1) <C200EC23-CAFB-33E8-AF3D-5B36420A21B1> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
        0x7fff4c03c000 -     0x7fff4c0acff3  com.apple.SystemConfiguration (1.17 - 1.17) <EED5BC9B-CE8D-343C-BCDC-04A79F704828> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
        0x7fff4f313000 -     0x7fff4f3b8fe7  com.apple.APFS (1.0 - 1) <E00222C4-E8CF-302A-8AF3-E8BB9B1C3B0E> /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS
        0x7fff4fe02000 -     0x7fff4fe03ff3  com.apple.AggregateDictionary (1.0 - 1) <1DEBBE36-8945-3AD8-BD48-2850AD845711> /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary
        0x7fff50707000 -     0x7fff50716fcf  com.apple.AppleFSCompression (96.200.3 - 1.0) <E093776E-C367-3CCF-BFD5-623476A89E9A> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
        0x7fff50860000 -     0x7fff508a9ff3  com.apple.AppleJPEG (1.0 - 1) <9A690E6E-F987-3660-BED6-B1A4D1906B6C> /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
        0x7fff50afb000 -     0x7fff50b23ff7  com.apple.applesauce (1.0 - ???) <60BB16D6-DE7E-356A-B9DE-F73EE179934A> /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce
        0x7fff50c89000 -     0x7fff50c9fffb  com.apple.AssertionServices (1.0 - 1) <8FB0D908-6C46-3399-92D6-4E7D4B5F4F19> /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices
        0x7fff5144f000 -     0x7fff51458ff3  com.apple.coreservices.BackgroundTaskManagement (1.0 - 57.1) <972F41B3-7DF7-3BF1-ACCA-A093A4328ADF> /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement
        0x7fff514fc000 -     0x7fff5156dffb  com.apple.BaseBoard (360.24 - 360.24) <AC0E4924-994E-3B54-869C-C831B4DE0136> /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard
        0x7fff5311e000 -     0x7fff53127fff  com.apple.CommonAuth (4.0 - 2.0) <93CF1D80-A3A8-378B-9DF7-BF17A206C57D> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
        0x7fff53e39000 -     0x7fff53e4dfff  com.apple.CoreEmoji (1.0 - 69.19.8) <E909BE8D-AE0C-327E-BE0A-D60B1F4012A4> /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
        0x7fff54423000 -     0x7fff54495ff7  com.apple.CoreNLP (1.0 - 130.15.22) <401F5284-A984-32A1-A547-CC8156381070> /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP
        0x7fff55211000 -     0x7fff55215ff7  com.apple.DSExternalDisplay (3.1 - 380) <B6B26BB3-2DC9-34D0-817E-EB612432EC96> /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay
        0x7fff56540000 -     0x7fff56968fff  com.apple.vision.FaceCore (3.3.4 - 3.3.4) <CCBC466A-1AD4-3B0B-80B2-D6CFCBB37FC0> /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
        0x7fff5b930000 -     0x7fff5b935ff7  com.apple.GPUWrangler (3.25.6 - 3.25.6) <F65BC9B4-77AB-3254-8432-9F7D3B0E169E> /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler
        0x7fff5c79b000 -     0x7fff5c7aafff  com.apple.GraphVisualizer (1.0 - 5) <C7040CD7-6CAB-3878-B29E-21F1665341D0> /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer
        0x7fff5c8fb000 -     0x7fff5c970fff  com.apple.Heimdal (4.0 - 2.0) <D3A3285B-A45D-38A9-A4E9-D58D76674071> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
        0x7fff5dd5c000 -     0x7fff5dd63ffb  com.apple.IOAccelerator (400.27 - 400.27) <6FA8A133-57A7-3C35-BF94-8469B09885FB> /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
        0x7fff5dd67000 -     0x7fff5dd80fff  com.apple.IOPresentment (1.0 - 42.6) <C115E88F-5E16-3804-8ACD-29C0F8895EFA> /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
        0x7fff5e491000 -     0x7fff5e588fff  com.apple.LanguageModeling (1.0 - 159.15.15) <E524CC46-42C7-3046-AD6C-5D5D768EA478> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
        0x7fff5e589000 -     0x7fff5e5caff7  com.apple.Lexicon-framework (1.0 - 33.15.10) <90C1CFE1-9935-3F4F-8A9B-1DD697F2FF3D> /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon
        0x7fff5e5d1000 -     0x7fff5e5d7ff7  com.apple.LinguisticData (1.0 - 238.15.29) <A8DEE139-5D20-3BAC-AF5E-4E5E0C42C795> /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData
        0x7fff5f333000 -     0x7fff5f35bffb  com.apple.spotlight.metadata.utilities (1.0 - 1191.52) <38A9B11A-9D5C-3CCA-A163-EC17242FDC68> /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities
        0x7fff5f35c000 -     0x7fff5f3eefff  com.apple.gpusw.MetalTools (1.0 - 1) <5B86F005-D12D-3B0B-8906-808926D3DA12> /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools
        0x7fff5f642000 -     0x7fff5f66cff7  com.apple.MultitouchSupport.framework (2410.5 - 2410.5) <8D87A3ED-4CBD-300F-92E3-B1B79D7E0BF3> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
        0x7fff5f8df000 -     0x7fff5f8e9fff  com.apple.NetAuth (6.2 - 6.2) <55DC741A-A01A-380C-B2D3-244241DA1F2C> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
        0x7fff601b5000 -     0x7fff6020bfff  com.apple.OTSVG (1.0 - ???) <5F2E7A0E-384E-3545-A9D5-EC4406E92AF4> /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG
        0x7fff65ee8000 -     0x7fff66199ff3  com.apple.SkyLight (1.600.0 - 336.81.5) <DE7FD278-A178-3A5B-8A26-7295340A54BE> /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
        0x7fff67d6c000 -     0x7fff67d79ffb  com.apple.TCC (1.0 - 1) <B84E7234-A993-328C-A054-EFEB0402C55C> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
        0x7fff69d59000 -     0x7fff69d5bff3  com.apple.loginsupport (1.0 - 1) <5F1E000D-0674-3413-AB3E-83F7974666FB> /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
        0x7fff6a015000 -     0x7fff6a04dfff  libCRFSuite.dylib (41.15.4) <62EDD39F-6D1B-334B-A9A2-5800714255BB> /usr/lib/libCRFSuite.dylib
        0x7fff6a050000 -     0x7fff6a05bff7  libChineseTokenizer.dylib (28.15.3) <8CD1C213-7F62-3F02-BFB1-D0A5EFF92AB0> /usr/lib/libChineseTokenizer.dylib
        0x7fff6a0ec000 -     0x7fff6a0edff7  libDiagnosticMessagesClient.dylib (107) <C542CB3C-AA44-3D7F-B88C-79CC31B481AB> /usr/lib/libDiagnosticMessagesClient.dylib
        0x7fff6a124000 -     0x7fff6a2e7ff7  libFosl_dynamic.dylib (18.3.2) <6EF1CB2A-2BDA-3458-B631-F794D72660FD> /usr/lib/libFosl_dynamic.dylib
        0x7fff6a33d000 -     0x7fff6a35cfff  libMobileGestalt.dylib (645.220.9) <F303B3D9-C6AD-30B9-9414-09DB34357E12> /usr/lib/libMobileGestalt.dylib
        0x7fff6a35d000 -     0x7fff6a35dfff  libOpenScriptingUtil.dylib (179) <0664670D-C7E1-3D27-814B-B9C445AAF0DC> /usr/lib/libOpenScriptingUtil.dylib
        0x7fff6a49e000 -     0x7fff6a49fffb  libSystem.B.dylib (1252.200.5) <D5AFCC78-2AC2-37EB-B0EF-BB00FD38ED00> /usr/lib/libSystem.B.dylib
        0x7fff6a529000 -     0x7fff6a52afff  libThaiTokenizer.dylib (2.15.1) <A8235B04-F541-3856-BE2E-B58EE0483AD9> /usr/lib/libThaiTokenizer.dylib
        0x7fff6a53d000 -     0x7fff6a553ffb  libapple_nghttp2.dylib (1.24.1) <B8D45114-3868-3154-BC35-22597E3E7D8A> /usr/lib/libapple_nghttp2.dylib
        0x7fff6a554000 -     0x7fff6a57dffb  libarchive.2.dylib (54.200.3) <B47C54A0-3A30-374A-BD99-2304B9B0EC82> /usr/lib/libarchive.2.dylib
        0x7fff6a601000 -     0x7fff6a601ff3  libauto.dylib (187) <01824E49-F2EF-3FC1-ABF3-782EFDF6CA17> /usr/lib/libauto.dylib
        0x7fff6a6d8000 -     0x7fff6a6e8ff3  libbsm.0.dylib (39.200.18) <5E5098D0-F7B2-32A1-8038-E709F6718D4E> /usr/lib/libbsm.0.dylib
        0x7fff6a6e9000 -     0x7fff6a6f7fff  libbz2.1.0.dylib (38.200.3) <4EE3C5E8-BEF3-3910-A231-B1AE2B437E01> /usr/lib/libbz2.1.0.dylib
        0x7fff6a6f8000 -     0x7fff6a74fff7  libc++.1.dylib (400.9.4) <D4AB366F-48A9-3C7D-91BD-41198F69DD57> /usr/lib/libc++.1.dylib
        0x7fff6a750000 -     0x7fff6a765fff  libc++abi.dylib (400.17) <BA948A32-9024-3E55-98D4-18E31F6AED25> /usr/lib/libc++abi.dylib
        0x7fff6a766000 -     0x7fff6a766ff3  libcharset.1.dylib (51.200.6) <D998A58B-E4A8-3685-9A6A-43AFC28100EB> /usr/lib/libcharset.1.dylib
        0x7fff6a767000 -     0x7fff6a777ffb  libcmph.dylib (6.15.1) <5D776FF6-DF7F-3EDD-B920-C07ED76C672B> /usr/lib/libcmph.dylib
        0x7fff6a778000 -     0x7fff6a790ffb  libcompression.dylib (52.200.13) <EA767836-CBDC-318D-AC14-963C90D6CC67> /usr/lib/libcompression.dylib
        0x7fff6aa3b000 -     0x7fff6aa51fff  libcoretls.dylib (155.220.1) <3F98C144-397C-36A2-84F1-BB0D841D3D89> /usr/lib/libcoretls.dylib
        0x7fff6aa52000 -     0x7fff6aa53ff3  libcoretls_cfhelpers.dylib (155.220.1) <0C190169-8EB8-3BA2-89BB-60265BB502F9> /usr/lib/libcoretls_cfhelpers.dylib
        0x7fff6b0ca000 -     0x7fff6b120ffb  libcups.2.dylib (462.9) <51E06E95-891F-3B88-A8C3-35B514C57239> /usr/lib/libcups.2.dylib
        0x7fff6b258000 -     0x7fff6b258fff  libenergytrace.dylib (17.200.1) <D62ED169-B91C-3CCB-ADF5-E66AE4007B51> /usr/lib/libenergytrace.dylib
        0x7fff6b28a000 -     0x7fff6b28fff7  libgermantok.dylib (17.15.2) <9CBF0658-E83B-32E6-B674-3EE72D22C041> /usr/lib/libgermantok.dylib
        0x7fff6b290000 -     0x7fff6b295ff7  libheimdal-asn1.dylib (520.220.2) <5302394C-ECF0-3C3B-BA67-4830EEF3CC40> /usr/lib/libheimdal-asn1.dylib
        0x7fff6b2c1000 -     0x7fff6b3b2ff7  libiconv.2.dylib (51.200.6) <3240A278-F537-3EC8-BE0C-983797520A50> /usr/lib/libiconv.2.dylib
        0x7fff6b3b3000 -     0x7fff6b616ffb  libicucore.A.dylib (62108.0.1) <969815D4-A345-31BB-82B7-0C3B58CA7E90> /usr/lib/libicucore.A.dylib
        0x7fff6b663000 -     0x7fff6b664fff  liblangid.dylib (128.15.1) <F79B6250-C0B1-3E8E-851F-6CA33B4311A3> /usr/lib/liblangid.dylib
        0x7fff6b665000 -     0x7fff6b67dfff  liblzma.5.dylib (10.200.3) <3ADDFA63-F37A-3C9C-91E4-58EE3113B9A1> /usr/lib/liblzma.5.dylib
        0x7fff6b695000 -     0x7fff6b745fff  libmecab.1.0.0.dylib (779.19.2) <314FE1B9-3B4E-3B89-A101-33CE7B78FCE6> /usr/lib/libmecab.1.0.0.dylib
        0x7fff6b746000 -     0x7fff6b983fff  libmecabra.dylib (779.19.2) <0ECEC3FC-935D-3EA5-8B3D-5CBD4E80AB78> /usr/lib/libmecabra.dylib
        0x7fff6bb5b000 -     0x7fff6beb3fff  libnetwork.dylib (1229.221.1) <CE7ACD18-109F-382E-963B-C68419E301A1> /usr/lib/libnetwork.dylib
        0x7fff6bf44000 -     0x7fff6c6cafe7  libobjc.A.dylib (750.1) <9CE27EC3-3A12-35D1-8F2F-3550B9668259> /usr/lib/libobjc.A.dylib
        0x7fff6c6dd000 -     0x7fff6c6e1ffb  libpam.2.dylib (22.200.1) <8C419238-675A-3C41-B8D4-95E391CA630F> /usr/lib/libpam.2.dylib
        0x7fff6c6e4000 -     0x7fff6c71aff7  libpcap.A.dylib (79.200.4) <5939AB23-B2A9-3C03-B6C1-4F0E5A21D9FC> /usr/lib/libpcap.A.dylib
        0x7fff6c834000 -     0x7fff6c84cffb  libresolv.9.dylib (65.200.2) <0FEAEB01-B926-37FA-AB47-99BAC481C10B> /usr/lib/libresolv.9.dylib
        0x7fff6c8a0000 -     0x7fff6ca77fe7  libsqlite3.dylib (274.20) <4434B695-BC65-30D6-AFED-1B6488DB3D2E> /usr/lib/libsqlite3.dylib
        0x7fff6cd04000 -     0x7fff6cd07ffb  libutil.dylib (51.200.4) <91EE9BF4-FB06-3260-B502-7EFDAD5AF59B> /usr/lib/libutil.dylib
        0x7fff6cd08000 -     0x7fff6cd15fff  libxar.1.dylib (404) <4B4D0206-0B62-3E89-AD07-E7BB9E4DFA68> /usr/lib/libxar.1.dylib
        0x7fff6cd1a000 -     0x7fff6cdfdfff  libxml2.2.dylib (32.8) <1CE77741-2E67-34B6-BB9F-B8E043966FCE> /usr/lib/libxml2.2.dylib
        0x7fff6cdfe000 -     0x7fff6ce26ff3  libxslt.1.dylib (16.1) <F191E8B9-7530-30CA-873B-2FA2BF2D6374> /usr/lib/libxslt.1.dylib
        0x7fff6ce27000 -     0x7fff6ce39ffb  libz.1.dylib (70.200.4) <99A3D725-8388-38B4-B66C-5E9006E6F072> /usr/lib/libz.1.dylib
        0x7fff6ceaa000 -     0x7fff6ceaeff3  libcache.dylib (81) <FE21A7E9-DBEB-33AC-836B-785AD036ACF4> /usr/lib/system/libcache.dylib
        0x7fff6ceaf000 -     0x7fff6ceb9ff3  libcommonCrypto.dylib (60118.220.1) <1099E427-6E81-3059-87AF-6F5FD81CA998> /usr/lib/system/libcommonCrypto.dylib
        0x7fff6ceba000 -     0x7fff6cec1fff  libcompiler_rt.dylib (63.4) <A4D9CF37-D076-3CE9-95F1-DA89DA1601B6> /usr/lib/system/libcompiler_rt.dylib
        0x7fff6cec2000 -     0x7fff6cecbff3  libcopyfile.dylib (146.200.3) <4BCDADBF-79F5-3829-B47D-64DA0D44BCBF> /usr/lib/system/libcopyfile.dylib
        0x7fff6cecc000 -     0x7fff6cf50fdf  libcorecrypto.dylib (602.220.6) <E1046E01-A2FD-35B4-B018-ACC372F3880E> /usr/lib/system/libcorecrypto.dylib
        0x7fff6cfd7000 -     0x7fff6d011ff7  libdispatch.dylib (1008.220.2) <D8B56783-152A-34A8-94E9-8E6BAE049384> /usr/lib/system/libdispatch.dylib
        0x7fff6d012000 -     0x7fff6d041fff  libdyld.dylib (635.2) <1B79A5CE-125F-301F-A441-C1869573AED0> /usr/lib/system/libdyld.dylib
        0x7fff6d042000 -     0x7fff6d042ffb  libkeymgr.dylib (30) <A73AA788-C35C-3284-BFCA-95B1BBDF0CF3> /usr/lib/system/libkeymgr.dylib
        0x7fff6d043000 -     0x7fff6d04fff7  libkxld.dylib (4903.221.2) <16D75C5C-584A-3848-84C0-3BFB312AEB92> /usr/lib/system/libkxld.dylib
        0x7fff6d050000 -     0x7fff6d050ff7  liblaunch.dylib (1336.220.5) <95EB6EAF-2DC5-344F-BADB-CA4E35E4E503> /usr/lib/system/liblaunch.dylib
        0x7fff6d051000 -     0x7fff6d056fff  libmacho.dylib (921) <ECC4E97C-575E-3A08-8191-BF02D7D4E637> /usr/lib/system/libmacho.dylib
        0x7fff6d057000 -     0x7fff6d059ffb  libquarantine.dylib (86.220.1) <6AE5AEEC-A9FD-3CF8-92DD-12B5AFBE12DE> /usr/lib/system/libquarantine.dylib
        0x7fff6d05a000 -     0x7fff6d05bff3  libremovefile.dylib (45.200.2) <D74A307B-3DC7-3992-B16C-DACB8207BE13> /usr/lib/system/libremovefile.dylib
        0x7fff6d05c000 -     0x7fff6d073ff3  libsystem_asl.dylib (356.200.4) <EC9D8AD4-E5CB-3765-804A-9E1E9DC045D2> /usr/lib/system/libsystem_asl.dylib
        0x7fff6d074000 -     0x7fff6d074fff  libsystem_blocks.dylib (73) <26419398-C30C-30F1-B656-A92AFA9560F6> /usr/lib/system/libsystem_blocks.dylib
        0x7fff6d075000 -     0x7fff6d0fdfff  libsystem_c.dylib (1272.200.26) <3DEEE96E-6DF6-35AD-8654-D69AC26B907B> /usr/lib/system/libsystem_c.dylib
        0x7fff6d0fe000 -     0x7fff6d101ff7  libsystem_configuration.dylib (963.200.27) <02CC3996-B34E-333C-8806-AE2699D34424> /usr/lib/system/libsystem_configuration.dylib
        0x7fff6d102000 -     0x7fff6d105ff7  libsystem_coreservices.dylib (66) <254B6849-2C8F-302C-8616-B8324A11AB30> /usr/lib/system/libsystem_coreservices.dylib
        0x7fff6d106000 -     0x7fff6d10cffb  libsystem_darwin.dylib (1272.200.26) <974E9EF7-DE72-34B7-B056-0A81C10DF8EB> /usr/lib/system/libsystem_darwin.dylib
        0x7fff6d10d000 -     0x7fff6d113ff7  libsystem_dnssd.dylib (878.200.35) <FFC665AA-B257-35AD-BD8B-32FD42C2EEC1> /usr/lib/system/libsystem_dnssd.dylib
        0x7fff6d114000 -     0x7fff6d160ff3  libsystem_info.dylib (517.200.9) <0707C387-D7DE-372E-8FF1-3DE5C91932D6> /usr/lib/system/libsystem_info.dylib
        0x7fff6d161000 -     0x7fff6d188ff7  libsystem_kernel.dylib (4903.221.2) <0E882078-7330-3B49-AA5D-3CDB5645A4E5> /usr/lib/system/libsystem_kernel.dylib
        0x7fff6d189000 -     0x7fff6d1d4ff7  libsystem_m.dylib (3158.200.7) <43D1796B-954F-37D6-B1AC-9D80DF0655A2> /usr/lib/system/libsystem_m.dylib
        0x7fff6d1d5000 -     0x7fff6d1f9ff7  libsystem_malloc.dylib (166.220.1) <3B196122-4E0D-3E3F-AA3E-5115B976DE26> /usr/lib/system/libsystem_malloc.dylib
        0x7fff6d1fa000 -     0x7fff6d205ff3  libsystem_networkextension.dylib (767.220.1) <C54EB8F6-F305-3452-8DB1-F7DA6859AF8C> /usr/lib/system/libsystem_networkextension.dylib
        0x7fff6d206000 -     0x7fff6d20dfff  libsystem_notify.dylib (172.200.21) <BCCB222F-DC64-3954-A836-DCCE6659CA5A> /usr/lib/system/libsystem_notify.dylib
        0x7fff6d20e000 -     0x7fff6d217fef  libsystem_platform.dylib (177.200.16) <B75B04AD-69FE-3ADE-84D2-C17972FC8F49> /usr/lib/system/libsystem_platform.dylib
        0x7fff6d218000 -     0x7fff6d222fff  libsystem_pthread.dylib (330.220.2) <4958273C-4273-3501-8137-E44249E10D9C> /usr/lib/system/libsystem_pthread.dylib
        0x7fff6d223000 -     0x7fff6d226ff7  libsystem_sandbox.dylib (851.220.9) <4D6433A8-C703-3ED9-82EB-B9E481A0FD2F> /usr/lib/system/libsystem_sandbox.dylib
        0x7fff6d227000 -     0x7fff6d229ff3  libsystem_secinit.dylib (30.220.1) <6C681113-8C48-3256-BEF6-0C3723DEB926> /usr/lib/system/libsystem_secinit.dylib
        0x7fff6d22a000 -     0x7fff6d231ff7  libsystem_symptoms.dylib (820.227.2) <3147D594-F41F-35FD-BF0B-6B8B66A407DE> /usr/lib/system/libsystem_symptoms.dylib
        0x7fff6d232000 -     0x7fff6d247ff7  libsystem_trace.dylib (906.220.1) <D5045DC5-A165-3238-A470-1796F12BF84F> /usr/lib/system/libsystem_trace.dylib
        0x7fff6d249000 -     0x7fff6d24effb  libunwind.dylib (35.4) <41222EF6-2233-3CF4-947A-15D48CB8C030> /usr/lib/system/libunwind.dylib
        0x7fff6d24f000 -     0x7fff6d27ffff  libxpc.dylib (1336.220.5) <B2137772-E202-3656-A089-F6DD517007D5> /usr/lib/system/libxpc.dylib
    
    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: 336235
        thread_create: 0
        thread_set_state: 0
    
    VM Region Summary:
    ReadOnly portion of Libraries: Total=336.9M resident=0K(0%) swapped_out_or_unallocated=336.9M(100%)
    Writable regions: Total=83.3M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=83.3M(100%)
     
                                    VIRTUAL   REGION 
    REGION TYPE                        SIZE    COUNT (non-coalesced) 
    ===========                     =======  ======= 
    Activity Tracing                   256K        2 
    Dispatch continuations            8192K        2 
    Kernel Alloc Once                    8K        2 
    MALLOC                            58.0M       41 
    MALLOC guard page                   16K        4 
    MALLOC_LARGE (reserved)            384K        4         reserved VM address space (unallocated)
    STACK GUARD                          4K        2 
    Stack                             16.5M        3 
    Stack Guard                          4K        2 
    VM_ALLOCATE                          4K        2 
    __DATA                            16.8M      220 
    __FONT_DATA                          4K        2 
    __LINKEDIT                       217.6M       37 
    __TEXT                           119.3M      220 
    __UNICODE                          564K        2 
    mapped file                         24K        2 
    shared memory                       32K        6 
    ===========                     =======  ======= 
    TOTAL                            437.5M      536 
    TOTAL, minus reserved VM space   437.1M      536 
    
    Model: MacBookPro14,2, BootROM 184.0.0.0.0, 2 processors, Intel Core i7, 3.5 GHz, 16 GB, SMC 2.44f1
    Graphics: Intel Iris Plus Graphics 650, Intel Iris Plus Graphics 650, Built-In
    Memory Module: BANK 0/DIMM0, 8 GB, LPDDR3, 2133 MHz, 0x802C, 0x4D5435324C31473332443450472D30393320
    Memory Module: BANK 1/DIMM0, 8 GB, LPDDR3, 2133 MHz, 0x802C, 0x4D5435324C31473332443450472D30393320
    AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x171), Broadcom BCM43xx 1.0 (7.77.61.1 AirPortDriverBrcmNIC-1305.2)
    Bluetooth: Version 6.0.9f2, 3 services, 27 devices, 1 incoming serial ports
    Network Service: Wi-Fi, AirPort, en0
    USB Device: USB 3.0 Bus
    USB Device: Hub
    USB Device: Microsoft® LifeCam Cinema(TM)
    USB Device: Texas Instruments USB Billboard Device
    USB Device: iBridge
    Thunderbolt Bus: MacBook Pro, Apple Inc., 39.2
    Thunderbolt Bus: MacBook Pro, Apple Inc., 39.2
    
  6. jaraco commented on Dec 6, 2018

    @jaraco
    Owner

    I tried adding this patch, but it did not help:

    diff --git a/keyring/tests/test_multiprocess.py b/keyring/tests/test_multiprocess.py
    index 9265e3a..9ad6549 100644
    --- a/keyring/tests/test_multiprocess.py
    +++ b/keyring/tests/test_multiprocess.py
    @@ -1,9 +1,11 @@
    +import importlib
     import multiprocessing
     
     import keyring
     
     
     def subprocess_get():
    +    importlib.reload(keyring.backends._OS_X_API)
         keyring.get_password('test_app', 'test_user')
  7. jaraco commented on Dec 6, 2018

    @jaraco
    Owner

    I thought maybe forcing all the modules including _OS_X_API to reset in the subprocess might workaround the issue, so I applied this patch:

    diff --git a/keyring/core.py b/keyring/core.py
    index 28e9b63..655a617 100644
    --- a/keyring/core.py
    +++ b/keyring/core.py
    @@ -185,5 +185,16 @@ def _load_keyring_path(config):
             pass
     
     
    +def reset():
    +    import importlib
    +    for mod in list(sys.modules):
    +        if mod.startswith('keyring.backends'):
    +            del sys.modules[mod]
    +    global backend
    +    backend = importlib.reload(backend)
    +
    +    init_backend()
    +
    +
     # init the _keyring_backend
     init_backend()
    diff --git a/keyring/tests/test_multiprocess.py b/keyring/tests/test_multiprocess.py
    index 9265e3a..584d57e 100644
    --- a/keyring/tests/test_multiprocess.py
    +++ b/keyring/tests/test_multiprocess.py
    @@ -4,6 +4,7 @@ import keyring
     
     
     def subprocess_get():
    +    keyring.core.reset()
         keyring.get_password('test_app', 'test_user')
     
    

    But the error still occurs. I'm now inclined to think the issue may be with the API itself... that it may not allow invocation by a process and its forked child.

    I'm out of time to work on this, but I would recommend someone try to put together a reproducer that doesn't use keyring, but simply calls the ctypes calls as found in _OS_X_API.py. If the segfault can be recreated that way, it might implicate fundamental issues in the API. If not, that suggests there's something that keyring could do differently to address the condition.

  8. akosthekiss commented on Dec 12, 2018

    @akosthekiss

    I've been trying to come up with a keyring-free test case, this is how far I got (nokeyring.py):

    import ctypes
    from multiprocessing import Process
    
    def sec_keychain_find_generic_password(procname):
        _sec = ctypes.CDLL('/System/Library/Frameworks/{name}.framework/Versions/A/{name}'.format(name='Security'))
    
        SecKeychainFindGenericPassword = _sec.SecKeychainFindGenericPassword
        SecKeychainFindGenericPassword.argtypes = (
            ctypes.c_void_p,
            ctypes.c_uint32,
            ctypes.c_char_p,
            ctypes.c_uint32,
            ctypes.c_char_p,
            ctypes.POINTER(ctypes.c_uint32),  # passwordLength
            ctypes.POINTER(ctypes.c_void_p),  # passwordData
            ctypes.POINTER(ctypes.c_void_p),  # itemRef
        )
        SecKeychainFindGenericPassword.restype = ctypes.c_int32
    
        print('before SecKeychainFindGenericPassword in %s' % procname)
    
        status = SecKeychainFindGenericPassword(None, 0, None, 0, None, None, None, None)
    
        print('after SecKeychainFindGenericPassword in %s' % procname)
    
    # comment out the line below to get things work(around)
    sec_keychain_find_generic_password('main')
    
    proc = Process(target=sec_keychain_find_generic_password, args=('subprocess',))
    proc.start()
    proc.join()
    print('subprocess exit code: %s' % proc.exitcode)

    Running this gives:

    $ python3 nokeyring.py 
    before SecKeychainFindGenericPassword in main
    after SecKeychainFindGenericPassword in main
    before SecKeychainFindGenericPassword in subprocess
    subprocess exit code: -11

    Commenting out the call in main results in:

    $ python3 nokeyring.py #modified
    before SecKeychainFindGenericPassword in subprocess
    after SecKeychainFindGenericPassword in subprocess
    subprocess exit code: 0

    I hope this helps.

  9. jaraco commented on Dec 13, 2018

    @jaraco
    Owner

    Yes, that definitely helps. You've reproduced the issue without keyring. Next will be to figure out if the issue is in Python/ctypes or inherent in the API.

  10. akosthekiss commented on Dec 13, 2018

    @akosthekiss

    It seems that it is an API problem :/. Here is an Objective-C(-ish?) repro (nokeyring.m).

    #import <Security/Security.h>
    
    void sec_keychain_find_generic_password(const char *procname) {
        printf("before SecKeychainFindGenericPassword in %s\n", procname);
        SecKeychainFindGenericPassword(NULL, 0, NULL, 0, NULL, NULL, NULL, NULL);
        printf("after SecKeychainFindGenericPassword in %s\n", procname);
    }
    
    int main() {
        // comment out the line below to get things work(around)
        sec_keychain_find_generic_password("main");
    
        pid_t childpid = fork();
        if (childpid == 0) {
            sec_keychain_find_generic_password("child");
            exit(0);
        }
        else if (childpid < 0) {
            printf("fork error\n");
        }
        else {
            int status;
            wait(&status);
    
            if (WIFEXITED(status)) {
                printf("child exit code: %d\n", WEXITSTATUS(status));
            }
            else if (WIFSIGNALED(status)) {
                printf("child signalled: %d\n", WTERMSIG(status));
            }
            else {
                printf("unexpected wait status: %d\n", status);
            }
        }
        return 0;
    }

    Build and run:

    $ gcc nokeyring.m -o nokeyring -framework security
    $ ./nokeyring 
    before SecKeychainFindGenericPassword in main
    after SecKeychainFindGenericPassword in main
    before SecKeychainFindGenericPassword in child
    child signalled: 11

    Build and run with call in main process commented out:

    $ ./nokeyring 
    before SecKeychainFindGenericPassword in child
    after SecKeychainFindGenericPassword in child
    child exit code: 0

    Not sure how to move forward if the native code/API behaves like this.

  11. bhedavivek commented on Sep 9, 2019

    @bhedavivek

    I think I am facing a similar issue when keyring tries to store a generic password in a subprocess.

                    status = SecKeychainAddGenericPassword(
                        keychain,
                        len(service), service,
                        len(username), username,
                        len(password), password, None)
    

    fails for me particularly in keyring.backend._OS_X_API line 235. Keyring version 13.2.1

  12. jaraco commented on Sep 11, 2019

    @jaraco
    Owner

    I've posted this question in the forums, hoping they can shed some light on the issue.

  13. jaraco commented on Sep 11, 2019

    @jaraco
    Owner

    Aha. Ned Deily pointed me to the macOS man page for fork which states clearly:

    There are limits to what you can do in the child process. To be totally safe you should restrict yourself to only executing async-signal safe operations until such time as one of the exec functions is called. All APIs, including global data symbols, in any framework or library should be assumed to be unsafe after a fork() unless explicitly documented to be safe or async-signal safe. If you need to use these frameworks in the child process, you must exec. In this situation it is reasonable to exec yourself.

    So that pretty definitively settles it. You can't use keychain after fork.

    I do have some good news, however. With Python 3.8, the multiprocessing module prefers exec/spawn for multiprocess.Process, meaning the issue no longer manifest.

    I just confirmed that this script executes without error on Python 3.8:

    import ctypes
    import multiprocessing
    
    def sec_keychain_find_generic_password(procname):
        _sec = ctypes.CDLL('/System/Library/Frameworks/{name}.framework/Versions/A/{name}'.format(name='Security'))
    
        SecKeychainFindGenericPassword = _sec.SecKeychainFindGenericPassword
        SecKeychainFindGenericPassword.argtypes = (
            ctypes.c_void_p,
            ctypes.c_uint32,
            ctypes.c_char_p,
            ctypes.c_uint32,
            ctypes.c_char_p,
            ctypes.POINTER(ctypes.c_uint32),  # passwordLength
            ctypes.POINTER(ctypes.c_void_p),  # passwordData
            ctypes.POINTER(ctypes.c_void_p),  # itemRef
        )
        SecKeychainFindGenericPassword.restype = ctypes.c_int32
    
        print('before SecKeychainFindGenericPassword in %s' % procname)
    
        status = SecKeychainFindGenericPassword(None, 0, None, 0, None, None, None, None)
    
        print('after SecKeychainFindGenericPassword in %s' % procname)
    
    def main():
        # comment out the line below to get things work(around)
        sec_keychain_find_generic_password('main')
    
        proc = multiprocessing.Process(target=sec_keychain_find_generic_password, args=('subprocess',))
        proc.start()
        proc.join()
        print('subprocess exit code: %s' % proc.exitcode)
    
    __name__ == '__main__' and main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions