Support Request #12340
closedAnalyze Memory Leaks
Description
Supportanfrage
könnt ihr mir sagen, wie sich ADTF verhält, wenn kein Speicher mehr verfügbar ist?
Wenn ein Filter beispielsweise ständig Memory-Leaks verursacht, stützt ADTF dann irgendwann ab? Wenn ja, wird der Log-Output dann noch gespeichert, sodass ich den Absturz dann analysieren kann?
Lösung
Das kann man leider nicht allgemein beantworten, da prinzipiell jeder Filter jederzeit Speicher am heap anlegen kann und es dann darauf ankommt ob er das behandelt. Wenn er das über new in einer Funktion eines Filters macht müssten wir aber zumindest die std:bad_alloc exception abfangen und in einen Fehler umwandeln. Da aber auch das Speicher benötigt, kann man das nicht garantieren. alloc_sample (output_sample_data<>) etc. sollten den Fehler aber korrekt fangen.
Ich würde aber vermuten, dass du letztendlich bei diesen Problemen mit einem Crash-Dump fast besser bedient bist.
Das Log wird im Crash Handler von ADTF nicht gesondert behandelt, heißt das was bisher geschrieben wurde ist drin, mehr nicht. Hier kann eben leider der Schreibpuffer dazu führen, dass da nicht wirklich alles auf der Platte gelandet ist.
Wenn man den lancher aber mit --log ... startet, dann wird das log file erzeugt und der Nutzer kann die Meldungen des Filters analysieren.
Der Weg sollte für die künftigen Nutzer machbar sein.