SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001857SACS.Планета[All Projects] Багpublic14-03-2013 18:4409-08-2013 15:13
Reporterzed 
Assigned Tovasketsov 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version130803 
Summary0001857: Утечка памяти при закрытии программы
DescriptionУтечка большая и похоже что где-то что-то глобально не освобождается, потому как в отчёте куча не связанных классов светится.

Утечка живёт уже довольно давно, всё было лень на неё обращать внимание. Думалось: авось само уйдёт.
TagsNo tags attached.
Attached Files? file icon SASPlanet.elf [^] (122,707 bytes) 15-03-2013 18:12
? file icon SASPlanet_SMALL.elf [^] (64,917 bytes) 15-03-2013 20:58
? file icon SASPlanet.Debug.elf [^] (21,283 bytes) 17-03-2013 06:07
? file icon SASPlanet_SACS_0.elf [^] (82,265 bytes) 02-04-2013 18:59

- Relationships

-  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-кэш, так тож ещё в процессе может сто раз полечиться.

- Users who viewed this issue
User List Anonymous (1924x)
Total Views 1924
Last View 27-04-2024 01:07

- 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



Copyright © 2007 - 2024 SAS.Planet Team