@@ -905,19 +905,32 @@ function handleMacCrashFileRead(err: NodeJS.ErrnoException | undefined | null, d
905
905
binaryVersion = binaryVersionMatches && binaryVersionMatches . length > 1 ? binaryVersionMatches [ 1 ] : "" ;
906
906
}
907
907
908
+ // Extract any message indicating missing dynamically loaded symbols.
909
+ let dynamicLoadError : string = "" ;
910
+ const dynamicLoadErrorStart : string = "Dyld Error Message:" ;
911
+ const startDynamicLoadError : number = data . indexOf ( dynamicLoadErrorStart ) ;
912
+ if ( startDynamicLoadError >= 0 ) {
913
+ // Scan until the next blank line.
914
+ const dynamicLoadErrorEnd : string = "\n\n" ;
915
+ const endDynamicLoadError : number = data . indexOf ( dynamicLoadErrorEnd , startDynamicLoadError ) ;
916
+ if ( endDynamicLoadError >= 0 ) {
917
+ dynamicLoadError = data . substring ( startDynamicLoadError , endDynamicLoadError ) + "\n\n" ;
918
+ }
919
+ }
920
+
908
921
// Extract the crashing thread's call stack.
909
922
const crashStart : string = " Crashed:" ;
910
923
let startCrash : number = data . indexOf ( crashStart ) ;
911
924
if ( startCrash < 0 ) {
912
- return logMacCrashTelemetry ( "No crash start" ) ;
925
+ return logMacCrashTelemetry ( dynamicLoadError + "No crash start" ) ;
913
926
}
914
927
startCrash += crashStart . length + 1 ; // Skip past crashStart.
915
928
let endCrash : number = data . indexOf ( "Thread " , startCrash ) ;
916
929
if ( endCrash < 0 ) {
917
930
endCrash = data . length - 1 ; // Not expected, but just in case.
918
931
}
919
932
if ( endCrash <= startCrash ) {
920
- return logMacCrashTelemetry ( "No crash end" ) ;
933
+ return logMacCrashTelemetry ( dynamicLoadError + "No crash end" ) ;
921
934
}
922
935
data = data . substring ( startCrash , endCrash ) ;
923
936
@@ -957,6 +970,9 @@ function handleMacCrashFileRead(err: NodeJS.ErrnoException | undefined | null, d
957
970
} ) ;
958
971
data = data . trimRight ( ) ;
959
972
973
+ // Prepend the dynamic load error.
974
+ data = dynamicLoadError + data ;
975
+
960
976
if ( data . length > 8192 ) { // The API has an 8k limit.
961
977
data = data . substring ( 0 , 8189 ) + "..." ;
962
978
}
0 commit comments