macOS: linker crash "unsupported reference (alias of) to class-ref" (ClassRefToGotConverter) linking FirebaseCore + FirebaseFirestore frameworks on Xcode 27
Les mainteneurs répondent en général sous 3 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- À clarifier
- Activité
- Active
- Stack technique
- cpp, macos
- Domaine
- build-system, desktop
Piste de recherche
Start with the macOS frameworks/darwin distribution and reproduce the link using Xcode 27, focusing on the reported error_apple.mm.o and locale_apple.mm.o objects in firebase_firestore.framework and firebase.framework. Compare the linker behavior with and without -allow_dead_duplicates and an older SDK; done means identifying a safe packaging or linker workaround for the crash.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Environment
- Firebase C++ SDK: 13.12.0 (its macOS
frameworks/darwindistribution wraps the underlying Firebase Apple SDK; "macOS SDKs are now built using Xcode 26.2" per the C++ SDK release notes starting around 13.8.0) - Xcode: 27.0 (27A266a)
- clang: Apple clang version 21.0.0 (clang-2100.3.34.2)
- ld: version 27037.1 (new/default linker)
- macOS: 26.6.2 (build 25G83)
- Architecture: arm64 (Apple Silicon)
MACOSX_DEPLOYMENT_TARGET: 15.7- Frameworks linked:
firebase.framework,firebase_firestore.framework,firebase_auth.framework,firebase_analytics.framework,firebase_functions.framework,firebase_messaging.framework,firebase_remote_config.framework(the macOS desktop frameworks bundled by the Firebase C++ SDK, which wrap the Apple SDK)
What happens
Linking a macOS desktop app against firebase.framework + firebase_firestore.framework fails with a linker crash (not a normal "undefined symbol" error — the linker itself asserts and aborts):
ld: unsupported reference (alias of) to class-ref from '_f_b_OBJC_CLASSLIST_REFERENCES_$_' (firebase_firestore.framework/firebase_firestore[arm64][1145](9c7b11ffbad0c92d0adcf47d138d4f4c_error_apple.mm.o))
ld: unsupported reference (alias of) to class-ref from '_OBJC_CLASSLIST_REFERENCES_$_' (firebase.framework/firebase[arm64][181](2821dc7f0f996caf95294ccbe3bb0f98_locale_apple.mm.o))
0 0x10222f670 __assert_rtn + 252
1 0x1021813f0 ___ZN2ld4pass22ClassRefToGotConverter9transformEv_block_invoke_2 + 0
2 0x1825254c8 _dispatch_client_callout2 + 16
3 0x1825201a4 _dispatch_apply_invoke3 + 336
4 0x1825254b0 _dispatch_client_callout + 16
5 0x18250e630 _dispatch_once_callout + 32
6 0x18251f2f4 _dispatch_apply_invoke + 248
7 0x1825254b0 _dispatch_client_callout + 16
8 0x182542d6c _dispatch_channel_invoke.cold.9 + 28
9 0x18251dadc _dispatch_root_queue_drain + 708
10 0x18251e120 _dispatch_worker_thread2 + 184
11 0x1826c3e84 _pthread_wqthread + 232
ld: Assertion failed: (0 && "unsupported references to class-ref"), function changeClassRefUseToGotUse, file ObjC.cpp, line 1151.
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
It appears an Objective-C class reference is aliased across two separate framework binaries — one class-ref inside firebase_firestore.framework's error_apple.mm.o and one inside firebase.framework's locale_apple.mm.o — and the linker's new ClassRefToGotConverter pass hard-asserts instead of handling it.
What we've tried
-ld_classic— no longer has any effect on Xcode 27:ld: warning: -ld_classic is no longer supported and will be ignored. Same crash occurs anyway.- No special linker flags at all — same crash. This confirms it's not specific to
-ld_classic; the default linker crashes on its own. -Xlinker -dead_strip -Xlinker -allow_dead_duplicates(suggested as a workaround for a related issue in firebase/firebase-ios-sdk#15284) — this does avoid the crash, but as a side effect the linker silently discards unrelated, legitimate symbols from other static libraries linked into the same binary (we sawUndefined symbolerrors reappear afterward for FreeType, ICU, and other unrelated libraries), so it's not a safe workaround.
Expected behavior
The prebuilt macOS frameworks should link without crashing the linker, ideally without requiring -allow_dead_duplicates (which has known correctness risks per Apple's own linker docs).
Related issue
This looks closely related to firebase/firebase-ios-sdk#15284 (FirebaseAnalytics + -ld_classic on iOS), but reproduces here on macOS desktop with the default (non-classic) linker, so it isn't limited to -ld_classic usage.
Question for the Firebase team
Is this a duplicate/aliased symbol artifact from how firebase.framework and firebase_firestore.framework are packaged for macOS (e.g., the same translation unit/class getting folded into an alias across two separate framework binaries)? Has this been reproduced internally on Xcode 27, and is there a recommended workaround in the meantime (e.g. pinning to an older SDK release built with an earlier Xcode)?
- Langage dominant
- C++
- Étoiles
- 326
- Forks
- 137
- Merge moyen
- 2 j 5 h
- PR mergées (30 j)
- 8
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de firebase/firebase-cpp-sdk
-
[FR] Support desktop Linux on aarch64/arm (#error Unknown Linux architecture in app_common.cc)Ouvertenew type: question
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
firebase/firebase-cpp-sdk#1926 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
firebase/firebase-cpp-sdk#1905 · 2 commentaires ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 3/5 Une demi-journée Accessibilité débutants 55/100
firebase/firebase-cpp-sdk#1936 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
firebase/firebase-cpp-sdk#1935 ·
Les mainteneurs répondent en général sous 3 jours
-
[Bug] Desktop Auth token refresh ignores UseEmulator() and targets productionPeut-être pris @AustinBenoit l’a pris il y a 2 jours. Ouverteapi: auth type: bug
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
firebase/firebase-cpp-sdk#1934 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 3 jours
Toutes les issues de firebase/firebase-cpp-sdk
Issues similaires
-
Mac mini M6 (16 GB): Q2_0 streaming works - measured 11.7->27.2 tok/s + arena fix for sub-32 GB MacsOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
champion good first issue remake source/qq
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
metasequoiaime/msime-windows#1025 ·
Les mainteneurs répondent en général sous 1 jour
-
backlog bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
EchoTools/nevr-runtime#653 ·
Les mainteneurs répondent en général sous 1 jour
-
`--fail-require-skip` never fires: run_tests.py searches stdout, but the unittest binary writes the skip summary to stderrPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
InfiniTimeOrg/InfiniTime#2492 ·