View Issue Details

IDProjectCategoryView StatusLast Update
0002330Far ManagerPlugins APIpublic2013-03-14 23:13
ReportersonarAssigned ToDrKnS 
PrioritynormalSeveritymajorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version3.0 
Target VersionFixed in Version3.0 
Summary0002330: утечки памяти UserData при работе с AnalyseW
Descriptionописание на примере плагина EventViewer (исходники http://code.google.com/p/evil-programmers/source/checkout), собранная библиотека в атаче

плагин создает виртуальную файловую панель. для элементов панели заполняется UserData.Data и UserData.FreeData
вызываем плагин из меню или командной строки. заходим в одну из "подпапок" , затем выходим. для элементов панели вызывается функция, указанная в UserData.FreeData.

предварительно в плагине делаем копию одной из "папок" кнопкой F5. создается файл с расширением evt. Если зайти в этот файл по Enter срабатывает механизм работы Analyse. плагин открывает панель с файлами. при выходе из панели не вызывается функция, указанная в UserData.FreeData. данные не очищаются. происходит утечка.

Причина
в filelist.cpp не срабатывает проверка
    if (this->PanelMode == PLUGIN_PANEL && i->Callback)
в данном случае PanelMode=NORMAL_PANEL .
TagsNo tags attached.
Build3243

Activities

sonar

2013-03-07 22:52

reporter  

ntevent.7z (18,732 bytes)

Denis

2013-03-08 21:37

reporter   bugnote:0010485

Интересно, а такой патч подойдёт?
if (i->Callback)

sonar

2013-03-09 08:50

reporter   bugnote:0010486

думаю , что не подойдет. почему то PanelMode=NORMAL_PANEL, это главная проблема. тут все таки PLUGIN_PANEL

Denis

2013-03-13 01:40

reporter   bugnote:0010491

Так оставить от
if (this->PanelMode == PLUGIN_PANEL && i->Callback)
только
if (i->Callback)

DrKnS

2013-03-13 02:33

administrator   bugnote:0010492

Попробуйте так:

Index: flplugin.cpp
===================================================================
--- flplugin.cpp (revision 9801)
+++ flplugin.cpp (working copy)
@@ -74,6 +74,8 @@
 
 int FileList::PopPlugin(int EnableRestoreViewMode)
 {
+ DeleteListData(ListData);
+
     OpenPanelInfo Info={};
 
     if (PluginsList.empty())
Index: flupdate.cpp
===================================================================
--- flupdate.cpp (revision 9801)
+++ flupdate.cpp (working copy)
@@ -652,7 +652,6 @@
 
     if (!Global->CtrlObject->Plugins->GetFindData(hPlugin,&PanelData,&PluginFileCount,0))
     {
- DeleteListData(ListData);
         PopPlugin(TRUE);
         Update(KeepSelection);

sonar

2013-03-13 05:42

reporter   bugnote:0010493

так утечек нет.

DrKnS

2013-03-13 13:30

administrator   bugnote:0010495

Я догадываюсь, что нет.
Больше интересует, не сломалось ли что-нибудь.

Denis

2013-03-13 13:34

reporter   bugnote:0010496

Пока ничего не упало.

sonar

2013-03-13 15:02

reporter   bugnote:0010497

у меня ничего не падало.

и все же, не странно ли, что плагинновая панель имеет значение PanelMode=NORMAL_PANEL ?

DrKnS

2013-03-13 15:07

administrator   bugnote:0010498

> и все же, не странно ли, что плагинновая панель имеет значение PanelMode=NORMAL_PANEL ?

Элементы плагинового списка удалялись уже после перехода панели в обычный режим.
Патч, который выше, как раз это и лечит.

sonar

2013-03-13 15:32

reporter   bugnote:0010499

ну тогда в ночную сборку, и на кошках ... -)

после исправлений интеловский аналайзер по плагину ничего не показал. а по фару есть всякие хэндлы. больше всего на sqllite. выделенная им память не подчищалась при выходе. вроде память на prepare селектов. но это отдельный разговор.

DrKnS

2013-03-13 15:46

administrator   bugnote:0010500

> но это отдельный разговор.

заведи баг, это тоже интересно. Особенно если не sqlite, а наш код.

DrKnS

2013-03-13 23:19

administrator   bugnote:0010513

3243

sonar

2013-03-14 07:27

reporter   bugnote:0010517

все отлично

Issue History

Date Modified Username Field Change
2013-03-07 22:52 sonar New Issue
2013-03-07 22:52 sonar File Added: ntevent.7z
2013-03-08 21:37 Denis Note Added: 0010485
2013-03-09 08:50 sonar Note Added: 0010486
2013-03-13 01:40 Denis Note Added: 0010491
2013-03-13 02:33 DrKnS Note Added: 0010492
2013-03-13 05:42 sonar Note Added: 0010493
2013-03-13 13:30 DrKnS Note Added: 0010495
2013-03-13 13:34 Denis Note Added: 0010496
2013-03-13 15:02 sonar Note Added: 0010497
2013-03-13 15:07 DrKnS Note Added: 0010498
2013-03-13 15:32 sonar Note Added: 0010499
2013-03-13 15:46 DrKnS Note Added: 0010500
2013-03-13 19:54 alexy Assigned To => DrKnS
2013-03-13 19:54 alexy Status new => assigned
2013-03-13 23:19 DrKnS Note Added: 0010513
2013-03-13 23:19 DrKnS Status assigned => feedback
2013-03-14 07:27 sonar Note Added: 0010517
2013-03-14 07:27 sonar Status feedback => assigned
2013-03-14 23:13 DrKnS Build => 3243
2013-03-14 23:13 DrKnS Status assigned => closed
2013-03-14 23:13 DrKnS Resolution open => fixed
2013-03-14 23:13 DrKnS Fixed in Version => 3.0