crashlytics: Fix flaky tests caused by EXC_GUARD on stdin #15583
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Tip: Ignore whitespace when reviewing – https://github.com/firebase/firebase-ios-sdk/pull/15583/files?w=1
This PR addresses one source of flaky tests in the Crashlytics test suite.
Problem: A race condition occurred where FIRCLSBinaryImageInit zero-initialized the global context while a background thread from a previous test was still cleaning up. This caused a valid file descriptor to be overwritten with 0 (stdin). Attempting to close(0) triggers the operating system's EXC_GUARD protection, killing the process.
Solution: Patched FIRCLSFileClose to strictly ignore file descriptors <= STDERR_FILENO (0, 1, 2). This ensures the SDK never accidentally closes standard input/output streams, even if the file structure is improperly initialized to zero.
Process
open <xcresult path>on command line.Manual Testing
I ran 10 invocations of the test command for each of the following cases.
#no-changelog