Anonymous | Login | Signup for a new account | 26-09-24 23:28 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0001857 | SACS.Планета | [All Projects] Баг | public | 14-03-2013 18:44 | 09-08-2013 15:13 | ||||
Reporter | zed | ||||||||
Assigned To | vasketsov | ||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | |||||||||
Target Version | Fixed in Version | 130803 | |||||||
Summary | 0001857: Утечка памяти при закрытии программы | ||||||||
Description | Утечка большая и похоже что где-то что-то глобально не освобождается, потому как в отчёте куча не связанных классов светится. Утечка живёт уже довольно давно, всё было лень на неё обращать внимание. Думалось: авось само уйдёт. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | SASPlanet.elf [^] (122,707 bytes) 15-03-2013 18:12 SASPlanet_SMALL.elf [^] (64,917 bytes) 15-03-2013 20:58 SASPlanet.Debug.elf [^] (21,283 bytes) 17-03-2013 06:07 SASPlanet_SACS_0.elf [^] (82,265 bytes) 02-04-2013 18:59 | ||||||||
Notes | |
(0010872) vasketsov (manager) 14-03-2013 21:04 |
Выборочно глянул - всё по-старому. Эти сообщения об утечках генерятся для "интерфейсов", которые не убиты в деструкторе ввиду отсутствия такового. Как заставить эврекалог анализировать утечки после того как всё сольётся из автоматических деструкторов - я не знаю. |
(0010873) zed (manager) 14-03-2013 21:05 |
В SAS такой утечки нету. |
(0010875) vasketsov (manager) 14-03-2013 21:17 |
Ну просто там какой-нибудь глобальный деструктор более полный, больше разных Fxxx := nil; прописано, вот и вся разница. Ну коли настаиваешь - погляжу. Я как-то уже пытался понаходить чего не слито, нашёл только не написанные руками автодеструкторы. |
(0010880) zed (manager) 15-03-2013 08:09 |
Такое чувство, что не уничтожается сам TGlobalState и всё что он хранит. |
(0010893) vasketsov (manager) 15-03-2013 11:22 |
Близко )) Я тут запустил из-под дельфи с эврикой, поигрался параметрами UseMozilla=0 UseInternalHttpd=0 (это при том, что сас у мня не в одном экземпляре сейчас запущен). И обнаружил, что утечка возникает уже при UseMozilla=1 (присто запускаю, жду когда запустится, выключаю). Так что похоже между DLL и хостом что-то не пролетает, или референс, или эврика. |
(0010904) vasketsov (manager) 15-03-2013 13:16 edited on: 15-03-2013 14:17 |
Не освобождается в момент смерти GState даже TInternalDomainInfoProviderByMapTypeList а с ним и TZmpInfoSet потому и тянется всё )) зы. Один косяк нашёл, не убивается TfrmMarkInfo, ибо не InterfacedObject ((. |
(0010909) vasketsov (manager) 15-03-2013 18:12 |
Пописал TfrmMarkInfo на коленке - стало убиваться. А вот почему TMarkPictureListSimple не умирает - не могу найти. В общем "утечки" те же самые, в деструкторах подобавлял убийств - сильно не полегчало. Но оставил. А заходно пофиксил небольшую кучку багов, которые почему-то стреляли только в дебаге (в scriptcontrol и в httpd) и если не повезёт - не давали при закрытии проги ей спокойно умереть. |
(0010911) vasketsov (manager) 15-03-2013 20:58 |
Если в u_BaseInterfacedObject заменить под DEBUG TBaseInterfacedObjectDebug на TInterfacedObject - число утечек уменьшаетя почти вдвое, аттач приаттачен |
(0010915) Fetser (reporter) 17-03-2013 06:08 |
Версия Nightly.130317.263 продолжает ругаться (elf приложил) |
(0010965) vasketsov (manager) 02-04-2013 18:59 |
SASPlanet_SACS_0.elf - сгенерён эврикой для 0-й ревизии в SACS. Открыл и закрыл. |
(0010966) zed (manager) 03-04-2013 04:41 |
Ты просто отнаследовался от неудачной версии. Но похоже, что там потом были доработки, которые к тебе не попали, потому утечка так и осталась. Кстати, может связано: у САСа сейчас 2 варнига, а у тебя 3. |
(0010967) vasketsov (manager) 03-04-2013 05:29 |
Я не вижу доработок, касающихся например Type=TBitmap32StaticStandartSize; Total size=14681632; Count=56 |
(0010968) vasketsov (manager) 03-04-2013 10:13 |
Вот из интересного: Type=TUserAccessRights; Total size=72; Count=1 Type=TContentTypeManagerSimple; Total size=964; Count=1 Type=TMarkPictureListSimple; Total size=136; Count=1 Type=TMarkCategoryFactoryConfig; Total size=296; Count=1 Type=TBitmap32StaticStandartSize; Total size=14681632; Count=56 Type=TMarkPictureSimple; Total size=8736; Count=84 В общем-то ноги во многом растут из TMarkPictureListSimple, остальные тащатся по ссылкам за ним. Рещил разобраться с первым (TUserAccessRights) ибо он новый, его нет в SAS и он ещё не так глубоко размножился, как например MarkPictureList или ContentTypeManager. Всё проверил гд есть, даже with переписал, мало ли компилеру башню снесло - и никаких изменений. Но закоментировал кусок в самом низу TGlobalState.LoadConfig (прямо целиком if (not ModuleIsLib) then begin end) где: FUserAccessRights.ReadConfig(MainConfigProvider.GetSubItem('UserAccess_Restrictions')); FMarksCategoryFactoryConfig.ReadConfig(MainConfigProvider.GetSubItem('MarkNewCategory')); Естественно при запуске настройки слетели на дефолтные. Однако при выключении эврека промолчала. Раскомментировал назад (как было). Запустил. Закрыл. Эврека опять промолчала. И даже точки остановка внутри TMarkPictureListSimple.Destroy и в деструкторе пула битмапок стали посещаться. Какого хрена данные в ini влияют на подсчёт ссылок, и что такого в ReadConfig делается (или соответственно не делается), что такая хрень происходит - сказать пока что сложно. Но ситуация начинает напрягать. |
(0010969) vasketsov (manager) 03-04-2013 10:19 |
Думаю что связано с метками в SQLite, так как по умолчанию (без ini) метки в SML. |
(0010970) vasketsov (manager) 03-04-2013 15:30 |
Проблема была в Self в конструкторе TMarksSQLDb.Create. Заодно поисправлял кучу опечаток, порефакторил и пооптимизировал всякой ерунды. |
(0010973) zed (manager) 03-04-2013 17:46 edited on: 03-04-2013 17:50 |
>Проблема была в Self в конструкторе TMarksSQLDb.Create. Насколько я вижу, проблема с утечкой ещё жива. К тому же, ещё и кэш SQLite начал высвечиваться в логе. О, после этого коммита перестало течь :) |
(0010979) vasketsov (manager) 03-04-2013 19:56 |
В SQLite были свои утечки, и тоже когда в качестве интерфейса отдаётся Self. Сейчас эврикалог пишет про утечки в SQLite только если там что-то по исключению валится (например SQL-запрос кривой), хотя исключения душатся и складируются в лог (и что там может утечь и как - пока не могу понять). |
(0010982) zed (manager) 03-04-2013 20:11 |
Ну, этот баг можешь закрывать. Той утечки, о которой была речь уже нету. А что подтекает тестовый SQLite-кэш, так тож ещё в процессе может сто раз полечиться. |
Issue History | |||
Date Modified | Username | Field | Change |
14-03-2013 18:44 | zed | New Issue | |
14-03-2013 18:44 | zed | File Added: SASPlanet.elf | |
14-03-2013 21:04 | vasketsov | Note Added: 0010872 | |
14-03-2013 21:05 | zed | Note Added: 0010873 | |
14-03-2013 21:17 | vasketsov | Note Added: 0010875 | |
15-03-2013 08:09 | zed | Note Added: 0010880 | |
15-03-2013 11:22 | vasketsov | Note Added: 0010893 | |
15-03-2013 13:16 | vasketsov | Note Added: 0010904 | |
15-03-2013 14:17 | vasketsov | Note Edited: 0010904 | View Revisions |
15-03-2013 18:12 | vasketsov | Note Added: 0010909 | |
15-03-2013 18:12 | vasketsov | File Deleted: SASPlanet.elf | |
15-03-2013 18:12 | vasketsov | File Added: SASPlanet.elf | |
15-03-2013 20:58 | vasketsov | Note Added: 0010911 | |
15-03-2013 20:58 | vasketsov | File Added: SASPlanet_SMALL.elf | |
17-03-2013 06:07 | Fetser | File Added: SASPlanet.Debug.elf | |
17-03-2013 06:08 | Fetser | Note Added: 0010915 | |
02-04-2013 18:59 | vasketsov | Note Added: 0010965 | |
02-04-2013 18:59 | vasketsov | File Added: SASPlanet_SACS_0.elf | |
03-04-2013 04:41 | zed | Note Added: 0010966 | |
03-04-2013 05:29 | vasketsov | Note Added: 0010967 | |
03-04-2013 10:13 | vasketsov | Note Added: 0010968 | |
03-04-2013 10:19 | vasketsov | Note Added: 0010969 | |
03-04-2013 15:30 | vasketsov | Note Added: 0010970 | |
03-04-2013 17:46 | zed | Note Added: 0010973 | |
03-04-2013 17:50 | zed | Note Edited: 0010973 | View Revisions |
03-04-2013 19:56 | vasketsov | Note Added: 0010979 | |
03-04-2013 20:11 | zed | Note Added: 0010982 | |
03-04-2013 20:17 | vasketsov | Assigned To | => vasketsov |
03-04-2013 20:17 | vasketsov | Status | new => assigned |
03-04-2013 20:18 | vasketsov | Status | assigned => resolved |
03-04-2013 20:18 | vasketsov | Resolution | open => fixed |
09-08-2013 14:59 | vasketsov | Fixed in Version | => 130803 |
09-08-2013 15:13 | vasketsov | Status | resolved => closed |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |