View Issue Details

IDProjectCategoryView StatusLast Update
0002330Far ManagerPlugins APIpublic2013-03-14 19:13
Reportersonar Assigned ToDrKnS  
PrioritynormalSeveritymajorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version3.0 
Fixed 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 18:52

developer  

ntevent.7z (18,732 bytes)

Denis

2013-03-08 17:37

reporter   bugnote:0010485

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

sonar

2013-03-09 04:50

developer   bugnote:0010486

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

Denis

2013-03-12 21:40

reporter   bugnote:0010491

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

DrKnS

2013-03-12 22: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 01:42

developer   bugnote:0010493

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

DrKnS

2013-03-13 09:30

administrator   bugnote:0010495

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

Denis

2013-03-13 09:34

reporter   bugnote:0010496

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

sonar

2013-03-13 11:02

developer   bugnote:0010497

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

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

DrKnS

2013-03-13 11:07

administrator   bugnote:0010498

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

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

sonar

2013-03-13 11:32

developer   bugnote:0010499

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

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

DrKnS

2013-03-13 11:46

administrator   bugnote:0010500

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

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

DrKnS

2013-03-13 19:19

administrator   bugnote:0010513

3243

sonar

2013-03-14 03:27

developer   bugnote:0010517

все отлично

Issue History

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