firebase / firebase/firebase-cpp-sdk
[Bug] MemoryLeak
- Vorherrschende Sprache
- C++
- Sterne
- 326
- Forks
- 137
- Ø Merge
- 3 T. 9 Std.
- Gemergte PRs (30 T.)
- 5
Beschreibung
* Pre-built SDK from the https://github.com/firebase/firebase-cpp-sdk/releases/tag/v11.4.0
* Firebase C++ SDK version: 11.4.0
* Problematic Firebase Component: App
* Platform you are using the C++ SDK on: Windows
* Platform you are targeting: Windows desktop
If you will run this code from MSVC you will see memory leaks report in the output console:
Source Code:
```
#define _CRTDBG_MAP_ALLOC
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hOldInstance, LPSTR szCmdLine, int nCmdShow)
{
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF/* | _CRTDBG_CHECK_ALWAYS_DF*/);
FILE* f = fopen("google-services.json", "r");
assert(f);
fseek(f, 0, SEEK_END);
auto size = ftell(f);
fseek(f, 0, SEEK_SET);
std::string json;
json.resize(size);
fread(&json[0], 1, size, f);
fclose(f);
::firebase::AppOptions ao;
::firebase::AppOptions::LoadFromJsonConfig(json.data(), &ao);
auto app = ::firebase::App::Create(ao);
// auto rc = ::firebase::remote_config::RemoteConfig::GetInstance(app);
auto db = ::firebase::database::Database::GetInstance(app);
std::this_thread::sleep_for(std::chrono::seconds(1));
delete app;
return 0;
}
```
Here is CMakeLists.txt:
```
cmake_minimum_required(VERSION 3.22)
project(FireBaseTest LANGUAGES CXX)
add_executable(${PROJECT_NAME} WIN32 test.cpp)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME})
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
set(MSVC_RUNTIME_MODE "MD")
add_subdirectory("../libs/firebase_cpp_sdk" "${CMAKE_CURRENT_BINARY_DIR}/firebase_cpp_sdk")
set(CMAKE_BUILD_TYPE "")
target_link_libraries(${PROJECT_NAME}
firebase_app
firebase_database
firebase_remote_config
)
target_link_libraries(${PROJECT_NAME}
ws2_32.lib
psapi.lib
iphlpapi.lib
userenv.lib
crypt32.lib
)
```
Beitragsleitfaden
Rechercherichtung
Beginnen Sie damit, das Beispiel in test.cpp mit der Einrichtung von CMakeLists.txt und der CRT-Leak-Berichterstattung von MSVC zu reproduzieren. Untersuchen Sie das Initialisierungs- und Bereinigungsverhalten von Firebase App und der verknüpften Datenbank im Zusammenhang mit delete app. Als erledigt gilt die Aufgabe, wenn festgestellt wurde, ob die gemeldeten Allokationen dem SDK gehören, und der Leak-Bericht behoben wurde, ohne das Windows-Desktop-Beispiel zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cmake, cpp
- Bereich
- databases, desktop
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 35/100