firebase / firebase/firebase-cpp-sdk

[Bug] MemoryLeak

Offen
#1,446 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
api: core new type: question
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.