View Issue Details

IDProjectCategoryView StatusLast Update
0002181Far ManagerViewerpublic2013-01-15 12:48
ReporterzgAssigned To2useven10 
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Platformx86OSWindowsOS Version2008 SP2
Product Version3.0 
Target Version3.0Fixed in Version3.0 
Summary0002181: падение после VE_READ.
Descriptionв атаче плагин. запускаем фар с плагином, на любом файле ctrlq, появится диалог, в нём нажимаем любую клавишу на которой не висит макрос и которая не имеет специального значения, например f12, фар падает. (проверялись gcc/vc release/vc debug. vc debug должна падать 100%.)

причины: объект Viewer удаляется внутри вызова CtrlObject->Plugins->ProcessViewerEvent(VE_READ,nullptr,ViewerID) и дальнейшие выполнение Viewer::OpenFile приводит к падению.
TagsNo tags attached.
Build2915

Activities

zg

2012-10-31 18:13

developer  

testviewer.7z (3,009 bytes)

2useven10

2012-10-31 20:08

developer   bugnote:0009686

и какие претензии к вьюверу ?

zg

2012-10-31 21:33

developer   bugnote:0009687

падает.

2useven10

2012-10-31 22:21

developer   bugnote:0009689

Last edited: 2012-10-31 22:57

View 2 revisions

ну, наверное, можно сделать, чтобы он немного подержал себя за волосы, когда из под него стул выдернули. но тогда вполне может упасть QuickView, тоже дилитнутый к тому времени. вообще ситуация абсурдная, когда во время выполнения метода класса сам класс уничтожают.

2useven10

2012-10-31 22:53

developer   bugnote:0009690

сделал, падает теперь ScreenObject. причина та же.
может все-таки плагину не стоит так себя вести?

zg

2012-10-31 23:21

developer   bugnote:0009691

как так? плагин вызывает абсолютно легальные апи с абсолютно легальными параметрами.

2useven10

2012-11-01 00:02

developer   bugnote:0009692

для меня это малознакомая область, так что судить, что здесь легально и правильно не могу. но (как я вижу) происходит следующее:
плагин получает эвент VE_READ в контексте метода QuickView::ShowObject(),
посылает клавишу CtrlQ в FilePanels, что вызывает удаление объекта QuickView.
При этом даже не утруждая себя, или не имея механизма, известить QuckView, что его больше нет. Может это и легально, но imho совершенно неправильно.

zg

2012-11-01 00:09

developer   bugnote:0009693

то что ты описал, работает и не падает. в плагине немного другой код.

2useven10

2012-11-01 12:56

developer   bugnote:0009694

ну если всё легально, пробуем - 2915

Issue History

Date Modified Username Field Change
2012-10-31 18:13 zg New Issue
2012-10-31 18:13 zg File Added: testviewer.7z
2012-10-31 20:08 2useven10 Note Added: 0009686
2012-10-31 21:33 zg Note Added: 0009687
2012-10-31 22:21 2useven10 Note Added: 0009689
2012-10-31 22:53 2useven10 Note Added: 0009690
2012-10-31 22:57 2useven10 Note Edited: 0009689 View Revisions
2012-10-31 23:21 zg Note Added: 0009691
2012-11-01 00:02 2useven10 Note Added: 0009692
2012-11-01 00:09 zg Note Added: 0009693
2012-11-01 12:56 2useven10 Note Added: 0009694
2012-11-01 12:56 2useven10 Assigned To => 2useven10
2012-11-01 12:56 2useven10 Status new => feedback
2013-01-15 12:48 2useven10 Build => 2915
2013-01-15 12:48 2useven10 Status feedback => closed
2013-01-15 12:48 2useven10 Resolution open => fixed
2013-01-15 12:48 2useven10 Fixed in Version => 3.0