SASGIS - SAS.Планета
View Issue Details
0002689SAS.Планета[All Projects] Багpublic20-04-2015 13:1929-07-2015 13:53
aflexus 
vdemidov 
normaltweakrandom
closedduplicate 
Windows7Ultimate
.Nightly 
 
0002689: Ошибка при закрытии
С какой-то периодичностью выскакивает ошибка при закрытии программы. Лог приаттачил.
No tags attached.
duplicate of 0002050confirmed  Утечка памяти, если программа закрывается раньше чем запустились все потоки 
related to 0002116confirmed  Утечка памяти в дебажной версии при выходе из программы 
? SASPlanet.Debug.elf (155,235) 20-04-2015 13:19
http://www.sasgis.org/mantis/file_download.php?file_id=1852&type=bug
? SASPlanet.Debug_20150422_220108.elf (219,380) 22-04-2015 19:01
http://www.sasgis.org/mantis/file_download.php?file_id=1857&type=bug
? SASPlanet.Debug_20150422_220342.elf (67,761) 22-04-2015 19:05
http://www.sasgis.org/mantis/file_download.php?file_id=1858&type=bug
? SASPlanet.Debug_20150422_220431.elf (149,085) 22-04-2015 19:05
http://www.sasgis.org/mantis/file_download.php?file_id=1859&type=bug
7z SAS.Planet.logs_20150423_003052.7z (10,377) 22-04-2015 21:32
http://www.sasgis.org/mantis/file_download.php?file_id=1860&type=bug
7z SAS.Planet.logs_20150423_003153.7z (10,293) 22-04-2015 21:32
http://www.sasgis.org/mantis/file_download.php?file_id=1861&type=bug
? DB_CONFIG (202) 22-04-2015 21:34
http://www.sasgis.org/mantis/file_download.php?file_id=1862&type=bug
Issue History
20-04-2015 13:19aflexusNew Issue
20-04-2015 13:19aflexusFile Added: SASPlanet.Debug.elf
20-04-2015 13:52vdemidovNote Added: 0015618
20-04-2015 17:21zedNote Added: 0015624
21-04-2015 06:53vdemidovNote Added: 0015629
22-04-2015 19:01aflexusFile Added: SASPlanet.Debug_20150422_220108.elf
22-04-2015 19:05aflexusFile Added: SASPlanet.Debug_20150422_220342.elf
22-04-2015 19:05aflexusFile Added: SASPlanet.Debug_20150422_220431.elf
22-04-2015 19:08aflexusNote Added: 0015677
22-04-2015 19:10zedNote Added: 0015678
22-04-2015 19:17aflexusNote Added: 0015679
22-04-2015 20:27zedNote Added: 0015680
22-04-2015 20:34zedNote Added: 0015681
22-04-2015 20:36zedRelationship addedrelated to 0002116
22-04-2015 20:36zedRelationship addedrelated to 0002050
22-04-2015 21:32aflexusFile Added: SAS.Planet.logs_20150423_003052.7z
22-04-2015 21:32aflexusFile Added: SAS.Planet.logs_20150423_003153.7z
22-04-2015 21:34aflexusFile Added: DB_CONFIG
22-04-2015 21:36aflexusNote Added: 0015682
23-04-2015 07:22vdemidovNote Added: 0015683
19-05-2015 14:06vasketsovRelationship addedrelated to 0002728
22-05-2015 03:09vasketsovRelationship deletedrelated to 0002728
29-07-2015 13:53vdemidovRelationship replacedduplicate of 0002050
29-07-2015 13:53vdemidovStatusnew => resolved
29-07-2015 13:53vdemidovResolutionopen => duplicate
29-07-2015 13:53vdemidovAssigned To => vdemidov
29-07-2015 13:53vdemidovStatusresolved => closed

Notes
(0015618)
vdemidov   
20-04-2015 13:52   
Учитывая наличие TGlobalBerkeleyDBHelper в потерянных объектах, рискну предположить, что это подвисшее обращение к базе беркли осталось висеть.
Проверяйте свой кэш.
(0015624)
zed   
20-04-2015 17:21   
>Учитывая наличие TGlobalBerkeleyDBHelper
Это ни о чём не говорит. Вот если бы там были TBerkeleyDBEnv или TBerkeleyDB, тогда другое дело. А так, тупо GlobalState не освободился и все порождённые им интерфейсы остались в памяти. Может там EmbeddedWB подвис - в отличии от всех остальных объектов, у него отсылка к Finalization и вот там могло случиться что-нибудь нехорошее.
(0015629)
vdemidov   
21-04-2015 06:53   
> А так, тупо GlobalState не освободился и все порождённые им интерфейсы остались в памяти.
Не, такого не может быть так как GlobalState удаляется простым Free в основном потоке.
Это подвис поток, который держал ссылки на все эти объекты. Так что EmbeddedWB не подходит.
(0015677)
aflexus   
22-04-2015 19:08   
Повторяется только на кеше беркли. На всех кешах беркли, что у меня есть. Некоторые из них проверил - целые. Поэтому видимо дело не в этом.
(0015678)
zed   
22-04-2015 19:10   
> Некоторые из них проверил
Проверять надо тот, который открывается в программе (какую карту просматриваете).
(0015679)
aflexus   
22-04-2015 19:17   
zed, вы не поняли, открывал разные карты. Все, которые в беркли, при закрытии вылетали с той или иной периодичностью. Эти же кеши проверял sdb_util - все ок.
(0015680)
zed   
22-04-2015 20:27   
Попробуйте вот на этой версии: https://yadi.sk/d/5OxBOY_ZgB4VT

Когда баг воспроизведётся, скиньте мне ещё sdb.log (появится рядом с exe) и конфиги кэшей которые открывались (файлы DB_CONFIG из папки env в кэше).
(0015681)
zed   
22-04-2015 20:34   
О, там оказывается есть один лог с AV, а не только утечки.

И ещё, судя по логам, там очень маленькое время UpTime, а по этому поводу у нас уже был тикет.
(0015682)
aflexus   
22-04-2015 21:36   
Логи и DB_CONFIG (он везде одинаковый) добавил. По всей видимости, действительно вылет почти всегда происходит, если закрыть программу сразу после запуска.
(0015683)
vdemidov   
23-04-2015 07:22   
Похоже это полный дубликат бага 0002050
С авешкой тоже можно побороться, но честно говоря лень. Можно во всех функциях которые вызываются в отдельном потоке (OnPrepareTileMatrix и тд.) в начале запоминать интерфейсную ссылку на себя в локальной переменной. Это будет гарантировать что деструктор не вызовется до завершения функции.
Еще можно передавать в конструктор TBackgroundTask интерфейсную ссылку, но сохранять ее в указателе, что бы она работала как слабая ссылка, и вызывать _AddRef в методе TBackgroundTask.Execute перед вызовом рабочей функции и _Release после.