firebase / firebase/firebase-ios-sdk

Crashlytics: Signal/Mach handlers are installed asynchronously, this doesn't allow to build proper chain

Open
#15,383 2 comments 0 reactions 0 assignees View on GitHub
api: crashlytics
Dominant language
C++
Stars
6.7k
Forks
1.8k
Avg merge
2d 14h
Merged PRs (30d)
72

Description

### Description

Java/C# ecosystems requires signals to be handled by them firstly to allow handling of null pointer exceptions inside try/catch block. To achieve this proper signal chain has to be built with Java/c# handlers on top and Crashlytics bellow.
This usually done by restoring signal handler to platform one after initialisation of crashlytics (and delegating handling to it in case of non try/catch case)

currently FIRApp.configure() installs handlers asynchronously and this doesn't allow calling party to wait completion to restore proper chain.

As result Crashlytics:
- will report phantom crashes on properly handled NPEs inside try/catch

### Reproducing the issue

FIRApp.configure() will schedule FIRCLSSignalInitialize/FIRCLSMachExceptionInit in async queue, as result this installation will happen after FIRApp.configure() exits

### Firebase SDK Version

12.3

### Xcode Version

26.0

### Installation Method

Zip

### Firebase Product(s)

Crashlytics

### Targeted Platforms

iOS

### Relevant Log Output

```shell

```

### If using Swift Package Manager, the project's Package.resolved

### If using CocoaPods, the project's Podfile.lock

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.