Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Xcode 16 continuation crashes #13521

Merged
merged 13 commits into from
Aug 22, 2024
Merged

Fix Xcode 16 continuation crashes #13521

merged 13 commits into from
Aug 22, 2024

Conversation

paulb777
Copy link
Member

@paulb777 paulb777 commented Aug 19, 2024

Fix #13480

Xcode 16 can crash on withCheckedThrowingCompletion if there is old-style queue stuff happening underneath. This leads to separate crashes in FirebaseAuth after token expiration. They are handled in two separate ways.

The first occurs in AuthBackend.swift when handling requests to the backend. Converting all of the functions to async solves the crash problem, but using async version of the GTMSessionFetcher beginFetch method loses some error handling since the API expects to return both data and an error. I solved this by continuing to use the beginFetch callback method, returning a tuple and using withUnsafeContinuation to wrap the beginFetch call.

The second crash resulted from the serial queues being used for user profile updating in User.swift and token updating in SecureTokenService.swift. Moving the code that was previously running in the serial queues to actors fixed the problem.

@paulb777 paulb777 marked this pull request as draft August 19, 2024 21:48
@paulb777 paulb777 changed the title Do low level server calls via async functions Fix Xcode 16 continuation crashes Aug 21, 2024
@paulb777 paulb777 added this to the 11.2.0 - M153 milestone Aug 21, 2024
@paulb777 paulb777 marked this pull request as ready for review August 21, 2024 23:18
@paulb777 paulb777 requested a review from andrewheard August 22, 2024 13:54
FirebaseAuth/CHANGELOG.md Show resolved Hide resolved
@paulb777 paulb777 force-pushed the pb-xc16-crash-async branch from fe1e1c8 to d4538e4 Compare August 22, 2024 14:38
@paulb777
Copy link
Member Author

cc: @peterfriese @ncooke3

@paulb777 paulb777 merged commit 9f68d4f into main Aug 22, 2024
56 checks passed
@paulb777 paulb777 deleted the pb-xc16-crash-async branch August 22, 2024 15:47
mergify bot referenced this pull request in cgrindel/rules_swift_package_manager Sep 16, 2024
….2.0" (#1228)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[firebase/firebase-ios-sdk](https://redirect.github.com/firebase/firebase-ios-sdk)
| minor | `from: "11.1.0"` -> `from: "11.2.0"` |

---

### Release Notes

<details>
<summary>firebase/firebase-ios-sdk (firebase/firebase-ios-sdk)</summary>

###
[`v11.2.0`](https://redirect.github.com/firebase/firebase-ios-sdk/releases/tag/11.2.0):
Firebase Apple 11.2.0

[Compare
Source](https://redirect.github.com/firebase/firebase-ios-sdk/compare/11.1.0...11.2.0)

The Firebase Apple SDK (11.2.0) is now available. For more details, see
the [Firebase Apple SDK release
notes.](https://firebase.google.com/support/release-notes/ios#11.2.0)

To install this SDK, see [Add Firebase to your
project](https://firebase.google.com/docs/ios/setup).

#### What's Changed

- \[Auth] Phone Auth – Fallback to reCATCHA flow when "invalid app
credential" error is thrown by
[@&#8203;ncooke3](https://redirect.github.com/ncooke3) in
[https://github.com/firebase/firebase-ios-sdk/pull/13519](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13519)
- \[Auth] Fix Xcode 16 continuation crashes by
[@&#8203;paulb777](https://redirect.github.com/paulb777) in
[https://github.com/firebase/firebase-ios-sdk/pull/13521](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13521)
- \[Auth] Fix Phone Auth via APNS for Sandbox Tokens and update Sample's
Firebase app by [@&#8203;paulb777](https://redirect.github.com/paulb777)
in
[https://github.com/firebase/firebase-ios-sdk/pull/13539](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13539)
- \[Auth] Add background modes capability to plist by
[@&#8203;ncooke3](https://redirect.github.com/ncooke3) in
[https://github.com/firebase/firebase-ios-sdk/pull/13548](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13548)
- \[Auth] When swizzling is disabled, open URLs via SceneDelegate by
[@&#8203;ncooke3](https://redirect.github.com/ncooke3) in
[https://github.com/firebase/firebase-ios-sdk/pull/13557](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13557)
- \[Auth] Fix unexpected nil in fetchSignInMethods success case by
[@&#8203;ncooke3](https://redirect.github.com/ncooke3) in
[https://github.com/firebase/firebase-ios-sdk/pull/13561](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13561)
- \[Auth] Fix user session persistence in multi tenant projects by
[@&#8203;paulb777](https://redirect.github.com/paulb777) in
[https://github.com/firebase/firebase-ios-sdk/pull/13567](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13567)
- \[Crashlytics] Fix Firebase/Crashlytics min iOS version by
[@&#8203;paulb777](https://redirect.github.com/paulb777) in
[https://github.com/firebase/firebase-ios-sdk/pull/13580](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13580)
- \[Database] Fix temporary disconnect when app goes inactive by
[@&#8203;paulb777](https://redirect.github.com/paulb777) in
[https://github.com/firebase/firebase-ios-sdk/pull/13564](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13564)
- \[Firestore] Mark readonly public classes as Sendable by
[@&#8203;paulb777](https://redirect.github.com/paulb777) in
[https://github.com/firebase/firebase-ios-sdk/pull/13453](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13453)
- \[Firestore] Support hex strings to prevent broken log lines by
[@&#8203;ls-todd-lunter](https://redirect.github.com/ls-todd-lunter) in
[https://github.com/firebase/firebase-ios-sdk/pull/13128](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13128)
- \[Functions] `FunctionsContext` Updates by
[@&#8203;yakovmanshin](https://redirect.github.com/yakovmanshin) in
[https://github.com/firebase/firebase-ios-sdk/pull/13531](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13531)
- \[Functions] Updated Functions Errors by
[@&#8203;yakovmanshin](https://redirect.github.com/yakovmanshin) in
[https://github.com/firebase/firebase-ios-sdk/pull/13535](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13535)
- \[Testing] Update OCMock dependency to v3.9.4 by
[@&#8203;andrewheard](https://redirect.github.com/andrewheard) in
[https://github.com/firebase/firebase-ios-sdk/pull/13536](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13536)
- \[Vertex AI] Make `uri` optional in `Citation` and add `title` field
by [@&#8203;andrewheard](https://redirect.github.com/andrewheard) in
[https://github.com/firebase/firebase-ios-sdk/pull/13520](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13520)
- \[Vertex AI] Add `Sendable` conformance to types by
[@&#8203;andrewheard](https://redirect.github.com/andrewheard) in
[https://github.com/firebase/firebase-ios-sdk/pull/13560](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13560)
- \[Vertex AI] Make `Logger` properties constants by
[@&#8203;andrewheard](https://redirect.github.com/andrewheard) in
[https://github.com/firebase/firebase-ios-sdk/pull/13570](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13570)
- \[Vertex AI] Make `GenerativeModel` and `Chat` into Swift actors by
[@&#8203;andrewheard](https://redirect.github.com/andrewheard) in
[https://github.com/firebase/firebase-ios-sdk/pull/13545](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13545)
- \[Vertex AI] Make generateContentStream/sendMessageStream throws by
[@&#8203;andrewheard](https://redirect.github.com/andrewheard) in
[https://github.com/firebase/firebase-ios-sdk/pull/13573](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13573)
- \[Vertex AI] Add `SourceImage` enum to `ImageConversionError` by
[@&#8203;andrewheard](https://redirect.github.com/andrewheard) in
[https://github.com/firebase/firebase-ios-sdk/pull/13575](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13575)
- \[Vertex AI] Add `responseSchema` to `GenerationConfig` by
[@&#8203;andrewheard](https://redirect.github.com/andrewheard) in
[https://github.com/firebase/firebase-ios-sdk/pull/13576](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13576)

#### New Contributors

- [@&#8203;ls-todd-lunter](https://redirect.github.com/ls-todd-lunter)
made their first contribution in
[https://github.com/firebase/firebase-ios-sdk/pull/13128](https://redirect.github.com/firebase/firebase-ios-sdk/pull/13128)

**Full Changelog**:
firebase/firebase-ios-sdk@11.1.0...11.2.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44MC4wIiwidXBkYXRlZEluVmVyIjoiMzguODAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: cgrindel-self-hosted-renovate[bot] <139595543+cgrindel-self-hosted-renovate[bot]@users.noreply.github.com>
Co-authored-by: Chuck Grindel <[email protected]>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
@firebase firebase locked and limited conversation to collaborators Sep 22, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

EXC_BAD_ACCESS (code=1, address=0x4) in AuthBackendRPCImplementation.callInternal(with:)
3 participants