1*c7cbf32fSJonas Devlieghere# -*- python -*- 2*c7cbf32fSJonas Devlieghere# RUN: cd %S/../../../../../examples/python && cat %s | %lldb 2>&1 > %t.out 3*c7cbf32fSJonas Devlieghere# RUN: cat %t.out | FileCheck %S/Inputs/Assertion.check 4*c7cbf32fSJonas Devliegherescript 5*c7cbf32fSJonas Devlieghereimport crashlog 6*c7cbf32fSJonas Devlieghereimport json 7*c7cbf32fSJonas Devlieghere 8*c7cbf32fSJonas Devlieghereparser = crashlog.JSONCrashLogParser("", "", False) 9*c7cbf32fSJonas Devlieghere 10*c7cbf32fSJonas Devlieghereprocess_info_json = json.loads('{"pid" : 287, "procName" : "mediaserverd", "procPath" : "\/usr\/sbin\/mediaserverd"}') 11*c7cbf32fSJonas Devlieghereparser.parse_process_info(process_info_json) 12*c7cbf32fSJonas Devlieghere 13*c7cbf32fSJonas Devlieghereassert parser.crashlog.process_id == 287 14*c7cbf32fSJonas Devlieghereassert parser.crashlog.process_identifier == "mediaserverd" 15*c7cbf32fSJonas Devlieghereassert parser.crashlog.process_path == "/usr/sbin/mediaserverd" 16*c7cbf32fSJonas Devlieghere 17*c7cbf32fSJonas Devliegherecrash_reason_json = json.loads('{"type" : "EXC_BAD_ACCESS", "signal" : "SIGSEGV", "subtype" : "KERN_INVALID_ADDRESS"}') 18*c7cbf32fSJonas Devlieghereassert parser.parse_crash_reason(crash_reason_json) == "EXC_BAD_ACCESS (SIGSEGV) (KERN_INVALID_ADDRESS)" 19*c7cbf32fSJonas Devlieghere 20*c7cbf32fSJonas Devliegherecrash_reason_json = json.loads('{"type" : "EXC_BAD_ACCESS", "signal" : "SIGSEGV"}') 21*c7cbf32fSJonas Devlieghereassert parser.parse_crash_reason(crash_reason_json) == "EXC_BAD_ACCESS (SIGSEGV)" 22*c7cbf32fSJonas Devlieghere 23*c7cbf32fSJonas Devliegherecrash_reason_json = json.loads('{"type" : "EXC_BAD_ACCESS", "signal" : "SIGSEGV", "codes" : "0x0000000000000000, 0x0000000000000000"}') 24*c7cbf32fSJonas Devlieghereassert parser.parse_crash_reason(crash_reason_json) == "EXC_BAD_ACCESS (SIGSEGV) (0x0000000000000000, 0x0000000000000000)" 25*c7cbf32fSJonas Devlieghere 26*c7cbf32fSJonas Devliegherethread_state_json = json.loads('{"x":[268451845,117442566],"lr":7309751904,"cpsr":1073741824,"fp":6093236784,"sp":6093236704,"esr":1442840704,"pc":7309755088}') 27*c7cbf32fSJonas Devlieghereregisters = parser.parse_thread_registers(thread_state_json) 28*c7cbf32fSJonas Devlieghereassert registers['x0'] == 268451845 29*c7cbf32fSJonas Devlieghereassert registers['x1'] == 117442566 30*c7cbf32fSJonas Devlieghereassert registers['lr'] == 7309751904 31*c7cbf32fSJonas Devlieghereassert registers['cpsr'] ==1073741824 32*c7cbf32fSJonas Devlieghereassert registers['fp'] == 6093236784 33*c7cbf32fSJonas Devlieghereassert registers['sp'] == 6093236704 34*c7cbf32fSJonas Devlieghereassert registers['esr'] == 1442840704 35*c7cbf32fSJonas Devlieghereassert registers['pc'] == 7309755088 36*c7cbf32fSJonas Devlieghere 37*c7cbf32fSJonas Devlieghereparser.data = json.loads('{"usedImages":[["f4d85377-f215-3da3-921e-3fe870e622e9",7309737984,"P"]],"legacyInfo":{"imageExtraInfo":[{"size":204800,"arch":"arm64e","path":"/usr/lib/system/libsystem_kernel.dylib","name":"libsystem_kernel.dylib"}]}}') 38*c7cbf32fSJonas Devliegherethread_json = json.loads('[{"triggered":true,"id":3835,"queue":"com.apple.bwgraph.devicevendor","frames":[[0,101472],[0,408892]]}]') 39*c7cbf32fSJonas Devlieghereparser.parse_threads(thread_json) 40*c7cbf32fSJonas Devlieghereassert len(parser.crashlog.threads) == 1 41*c7cbf32fSJonas Devlieghereassert parser.crashlog.threads[0].queue == "com.apple.bwgraph.devicevendor" 42*c7cbf32fSJonas Devlieghereassert len(parser.crashlog.threads[0].frames) == 2 43*c7cbf32fSJonas Devlieghereassert parser.crashlog.threads[0].frames[0].pc == 7309839456 44*c7cbf32fSJonas Devlieghereassert parser.crashlog.threads[0].frames[0].description == 101472 45*c7cbf32fSJonas Devlieghereexit() 46