swift icon indicating copy to clipboard operation
swift copied to clipboard

Tailored error reporting when dynamic casts have nonsensical type args

Open tbkka opened this issue 1 year ago • 0 comments

This inserts a suitably named function into the stack trace whenever a dynamic cast failure involves a NULL source or target type. Very often, crash logs include backtraces with function names but no log output; with this change, such a backtrace might look like the following -- note TARGET_TYPE_NULL in the function name here to mark the missing type information:

 frame #0: __pthread_kill + 8
 frame #1: pthread_kill + 288
 frame #2: abort + 128
 frame #3: swift::fatalErrorv()
 frame #4: swift::fatalError()
 frame #5: swift_dynamicCastFailure_TARGET_TYPE_NULL()
 frame #6: swift::swift_dynamicCastFailure()
 frame #7: ::swift_dynamicCast()

Resolves rdar://130630157

tbkka avatar Jul 10 '24 23:07 tbkka