Skip to content

Fix breadcrumb race condition: log() drops entry before logException(…#8076

Merged
jrodiz merged 1 commit intomainfrom
fix/jrc--8034.Fix.log.breadcrumb.race.condition
Apr 29, 2026
Merged

Fix breadcrumb race condition: log() drops entry before logException(…#8076
jrodiz merged 1 commit intomainfrom
fix/jrc--8034.Fix.log.breadcrumb.race.condition

Conversation

@jrodiz
Copy link
Copy Markdown
Collaborator

@jrodiz jrodiz commented Apr 29, 2026

…) reads it

CrashlyticsCore.log() used common.submit() which completed as soon as the diskWrite task was enqueued, not when it finished. This allowed the subsequent logException() common task to call logFileManager.getLogString() before writeToLog() had run on the diskWrite worker, silently dropping the breadcrumb from the non-fatal report.

Fix: change to common.submitTask() so the common worker suspends until the diskWrite task resolves before dispatching the next item (e.g. logException).

Adds a regression test that calls log() immediately before logException(), awaits only the common worker, and asserts the breadcrumb is present on disk.

Fixes #8034

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 29, 2026

📝 PRs merging into main branch

Our main branch should always be in a releasable state. If you are working on a larger change, or if you don't want this change to see the light of the day just yet, consider using a feature branch first, and only merge into the main branch when the code complete and ready to be released.

mrober
mrober previously approved these changes Apr 29, 2026
@jrodiz jrodiz enabled auto-merge (squash) April 29, 2026 19:02
…) reads it

CrashlyticsCore.log() used common.submit() which completed as soon as the
diskWrite task was enqueued, not when it finished. This allowed the subsequent
logException() common task to call logFileManager.getLogString() before
writeToLog() had run on the diskWrite worker, silently dropping the breadcrumb
from the non-fatal report.

Fix: change to common.submitTask() so the common worker suspends until the
diskWrite task resolves before dispatching the next item (e.g. logException).

Adds a regression test that calls log() immediately before logException(),
awaits only the common worker, and asserts the breadcrumb is present on disk.

Fixes #8034
@jrodiz jrodiz force-pushed the fix/jrc--8034.Fix.log.breadcrumb.race.condition branch from ff2b423 to 4e4d10f Compare April 29, 2026 19:06
@jrodiz jrodiz merged commit 2057840 into main Apr 29, 2026
34 checks passed
@jrodiz jrodiz deleted the fix/jrc--8034.Fix.log.breadcrumb.race.condition branch April 29, 2026 19:21
@github-actions github-actions Bot mentioned this pull request May 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Firebase.crashlytics.log() breadcrumb not attached to recordException() when called from background thread

2 participants