firebase / firebase/firebase-cpp-sdk

Crash in Functions on MacOS when using authentication

オープン
#51 コメント 8 件 リアクション 0 件 担当者 0 名 GitHub で見る
api: auth type: bug
主要言語
C++
スター
326
フォーク
137
平均マージ
3日 9時間
マージ済み PR(30日)
5

説明

### Please fill in the following fields:
Pre-built SDK from the [website](https://firebase.google.com/download/cpp)
Firebase C++ SDK version: 6.12.0
Firebase plugins in use (Auth, Database, etc.): Auth, Firestore, Functions, Storage
Additional SDKs you are using (Facebook, AdMob, etc.): Qt 5.14.1 clang 64bit
Platform you are using the C++ SDK on (Mac, Windows, or Linux): Mac
Platform you are targeting (iOS, Android, and/or desktop): desktop

### Please describe the issue here:

My application crashes when trying to call a Firebase callable function in combination with authentication:

auto pFireBaseApp = firebase::App::Create();
// No crash when I comment out the following line
auto pAuth = firebase::auth::Auth::GetAuth(pFireBaseApp);
auto pFunctions = functions::Functions::GetInstance(pFireBaseApp);

auto ref = pFunctions->GetHttpsCallable("testFunction");
auto future = ref.Call();
future.OnCompletion([](const Future &result) {
// Crash before this is reached but not when commenting out pAuth code
});

It does not crash, and behaves as expected, when not initializing Auth. Note that this behaves the same with a function that doesn't use authentication: `testFunction` is a very simple function that returns a fixed object.

This is the call stack of the crashed thread:

1 firebase::rest::BackgroundTransportCurl::PerformBackground(firebase::rest::Request *) (x86_64) /Users/jdierckx/work/Bioracer Motion/Bioracer Aero/build-BioracerAero-Desktop_Qt_5_14_1_clang_64bit-Debug/build-output/BRMApplicationTest.app/Contents/Frameworks/libBRMData.1.dylib 0x10038143b
2 firebase::rest::CurlThread::ProcessRequests() (x86_64) /Users/jdierckx/work/Bioracer Motion/Bioracer Aero/build-BioracerAero-Desktop_Qt_5_14_1_clang_64bit-Debug/build-output/BRMApplicationTest.app/Contents/Frameworks/libBRMData.1.dylib 0x10038318e
3 void * std::__thread_proxy>, void ( *)(void *), void *>>(void *) (x86_64) /Users/jdierckx/work/Bioracer Motion/Bioracer Aero/build-BioracerAero-Desktop_Qt_5_14_1_clang_64bit-Debug/build-output/BRMApplicationTest.app/Contents/Frameworks/libBRMData.1.dylib 0x1003a0cec
4 _pthread_start (x86_64) /usr/lib/system/libsystem_pthread.dylib 0x7fff64a29e65
5 thread_start (x86_64) /usr/lib/system/libsystem_pthread.dylib 0x7fff64a2583b

### Please answer the following, if applicable:
Have you been able to reproduce this issue with just the [Firebase C++ quickstarts](https://github.com/firebase/quickstart-cpp) ? Did not try (the quickstart example doesn't use Auth)

What's the issue repro rate? (eg 100%, 1/5 etc) 100%

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、macOS 上で App::Create、Auth::GetAuth、Functions::GetInstance、HttpsCallable::Call を使ってシーケンスを再現します。BackgroundTransportCurl::PerformBackground のクラッシュ経路を調査し、Firebase C++ quickstart のセットアップと比較します。報告されている quickstart には Auth が含まれていないことに注意してください。Auth が初期化されている場合でも、callable Functions リクエストでクラッシュしなくなれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
cpp, macos
領域
api, authentication, desktop
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。