mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-01-09 14:29:26 +00:00
Update documentation
And add crash only build specific modulemap to Xcode project
This commit is contained in:
@@ -66,6 +66,8 @@ extern "C" void LIBCXXABI_NORETURN __cxxabiv1::__cxa_throw(void *exception_objec
|
||||
// implementation of objc_exception_throw(). It's weird, but it's fast. The
|
||||
// weak import and NULL checks should guard against the implementation
|
||||
// changing in a future version.
|
||||
|
||||
// This works for C++ crashes in the main app but not yet in dynamic frameworks on iOS
|
||||
extern const void WEAK_IMPORT_ATTRIBUTE *objc_ehtype_vtable[];
|
||||
if (tinfo && objc_ehtype_vtable && // Guard from an ABI change
|
||||
*reinterpret_cast<void **>(tinfo) == objc_ehtype_vtable + 2) {
|
||||
@@ -132,17 +134,12 @@ static void BITCrashUncaughtCXXTerminateHandler(void)
|
||||
BITCrashCXXExceptionTSInfo *recorded_info = reinterpret_cast<BITCrashCXXExceptionTSInfo *>(pthread_getspecific(_BITCrashCXXExceptionInfoTSDKey));
|
||||
|
||||
if (recorded_info) {
|
||||
if (__cxxabiv1::__cxa_current_primary_exception() != recorded_info->exception_object) {
|
||||
#if DEBUG
|
||||
fprintf(stderr, "HockeyApp: Warning - using the backtrace from a non-matching C++ exception!\n");
|
||||
#endif
|
||||
}
|
||||
info.exception_frames_count = recorded_info->num_frames - 1;
|
||||
info.exception_frames = &recorded_info->call_stack[1];
|
||||
} else {
|
||||
// There's no backtrace, grab this function's trace instead.
|
||||
#if DEBUG
|
||||
fprintf(stderr, "HockeyApp: Warning - no backtrace available, where did this exception come from?\n");
|
||||
fprintf(stderr, "[HockeySDK] WARNING: No backtrace available, where did this exception come from?\n");
|
||||
#endif
|
||||
void *frames[128] = { nullptr };
|
||||
|
||||
|
||||
@@ -103,18 +103,7 @@ static PLCrashReporterCallbacks plCrashCallbacks = {
|
||||
// Temporary class until PLCR catches up
|
||||
// We trick PLCR with an Objective-C exception.
|
||||
//
|
||||
// This code provides us access to the C++ exception message, but we won't get a correct stack trace.
|
||||
// The cause for this is that the iOS runtime catches every C++ exception internally and rethrows it.
|
||||
// Since the exception object doesn't have the backtrace attached, we have no chance of accessing it.
|
||||
//
|
||||
// As a workaround we could hook into __cxx_throw and attaching the backtrace every time this is called.
|
||||
// This has a few sides effects which is why we are not doing this right now:
|
||||
// - CoreAdudio (and possibly other frameworks) use C++ exceptions heavily for control flow.
|
||||
// Calling `backtrace()` is not cheap, so this could affect performance
|
||||
// - It is not clear if such a hook is ABI compatible with all C++ runtimes
|
||||
// - It is not clear if there could be any other side effects
|
||||
//
|
||||
// We'll evaluate this further to see if there is a safe solution.
|
||||
// This code provides us access to the C++ exception message, including a correct stack trace.
|
||||
//
|
||||
@interface BITCrashCXXExceptionWrapperException : NSException
|
||||
- (instancetype)initWithCXXExceptionInfo:(const BITCrashUncaughtCXXExceptionInfo *)info;
|
||||
|
||||
@@ -469,6 +469,7 @@
|
||||
1E84DB3317E0977C00AC83FD /* HockeySDKFeatureConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HockeySDKFeatureConfig.h; sourceTree = "<group>"; };
|
||||
1E85C5601B3438E000CE2C0D /* live_report_exception_marketing.plcrash */ = {isa = PBXFileReference; lastKnownFileType = file; path = live_report_exception_marketing.plcrash; sourceTree = "<group>"; };
|
||||
1E85C5611B3438E000CE2C0D /* live_report_signal_marketing.plcrash */ = {isa = PBXFileReference; lastKnownFileType = file; path = live_report_signal_marketing.plcrash; sourceTree = "<group>"; };
|
||||
1E85C5A11B35BD7000CE2C0D /* module_crashonly.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module_crashonly.modulemap; sourceTree = "<group>"; };
|
||||
1E90D97A19DAD8A800188C43 /* feedbackActivity.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = feedbackActivity.png; sourceTree = "<group>"; };
|
||||
1E90D97B19DAD8A800188C43 /* feedbackActivity@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "feedbackActivity@2x.png"; sourceTree = "<group>"; };
|
||||
1E90D97C19DAD8A800188C43 /* feedbackActivity@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "feedbackActivity@2x~ipad.png"; sourceTree = "<group>"; };
|
||||
@@ -709,6 +710,7 @@
|
||||
1E754DC61621BC170070AB92 /* HockeySDK.xcconfig */,
|
||||
1E66CA9115D4100500F35BED /* buildnumber.xcconfig */,
|
||||
1E7DE39619D44DC6009AB8E5 /* crashonly.xcconfig */,
|
||||
1E85C5A11B35BD7000CE2C0D /* module_crashonly.modulemap */,
|
||||
1E91D84619B924E600E9616D /* module.modulemap */,
|
||||
);
|
||||
name = Support;
|
||||
|
||||
Reference in New Issue
Block a user