Глюки и баги, появившиеся в «ночных сборках»

Здесь можно сообщить о найденных багах в Far.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

Внимание: Тема служит исключительно для обсуждения свежих багов Far 3.
  • Под свежими понимаются глюки и баги, проявляющиеся в "ночных" сборках, но отсутствующие в "стабильных".
  • О проблемах, которые существуют давно, следует сообщать в отдельных темах, либо на багтрекере.
  • Вопросы, связанные с ночными сборками, но не касающиеся багов самого фара, обсуждаются в другой теме:
Если баг, о котором вы сообщили, не исправлен "по горячим следам", значит необходимо создать запись на багтрекере

Предыдущие ночные сборки доступны здесь.

Поведение при обнаружении проблем.
https://t.me/FarManager — Telegram чат
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by fps »

Latest post of the previous page:

2useven10,
4094 x86 не повторяется
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Denis »

Да, дебаговая падает.

Кто-то забыл ножницы?
farexcpt.cpp:

Code: Select all

		case DN_CLOSE:
		{
			if (Param1 == 11) // debug
			{
				// It's better to attach debugger ASAP, closing the dialog causes too much work in window manager
				attach_debugger();
				return FALSE;
			}
		}
		break;
Блин, это уже не тот диалог
Last edited by Denis on Tue 09 Sep, 2014 13:13, edited 2 times in total.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by t-rex »

У меня без связи с CtrlL, но один раз упало:

Code: Select all

Addr[ 1]: 00B2DC33 Mod:009E0000 lMod:009E0000 "Far.exe"+0014D033 at ".text"+0014CC33: "__thiscall FilePanels::GetAnotherPanel(Panel const *)" + 00000003
Addr[ 2]: 00BA5154 Mod:009E0000 lMod:009E0000 "Far.exe"+001C4554 at ".text"+001C4154: "__thiscall Panel::ChangeDiskMenu(int, int)" + 000018A4
Addr[ 3]: 00BA5C49 Mod:009E0000 lMod:009E0000 "Far.exe"+001C5049 at ".text"+001C4C49: "__thiscall Panel::ChangeDisk(void)" + 00000079
Addr[ 4]: 00B31932 Mod:009E0000 lMod:009E0000 "Far.exe"+00150D32 at ".text"+00150932: "virtual __thiscall FilePanels::ProcessKey(Manager::Key const &)" + 00001452
Addr[ 5]: 00B910D8 Mod:009E0000 lMod:009E0000 "Far.exe"+001B04D8 at ".text"+001B00D8: "__thiscall Manager::ProcessKey(Manager::Key)" + 00000128
Addr[ 6]: 00B91AA6 Mod:009E0000 lMod:009E0000 "Far.exe"+001B0EA6 at ".text"+001B0AA6: "__thiscall Manager::ProcessMainLoop(void)" + 00000136
Addr[ 7]: 00B91FE9 Mod:009E0000 lMod:009E0000 "Far.exe"+001B13E9 at ".text"+001B0FE9: "__thiscall Manager::EnterMainLoop(void)" + 00000039
Addr[ 8]: 00B8BEB8 Mod:009E0000 lMod:009E0000 "Far.exe"+001AB2B8 at ".text"+001AAEB8: "__cdecl mainImpl(range<wchar_t * *> const &)" + 00000E98
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel »

Ага, повторил (релиз VC2010 билд 4094).
Интересно, что без плагинов падает, а с плагинами - нет.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Denis »

У меня падает со штатными плагинами.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by t-rex »

ECX = 0, т.е. this типа как уже удалили

Code: Select all

;
;; Far.exe::__thiscall FilePanels::GetAnotherPanel(Panel const *)
;
-00B2DC30 55                           push    ebp
-00B2DC31 8B EC                        mov     ebp, esp
>00B2DC33 8B 41 54                     mov     eax, [ecx+54h]
+00B2DC36 39 45 08                     cmp     [ebp+8], eax
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Denis »

Вот тут умирает панель:

Code: Select all

>	Far.exe!Panel::~Panel() Line 170	C++
 	Far.exe!InfoList::~InfoList() Line 128	C++
 	[External Code]	
 	Far.exe!DelayedDestroy::Destroy() Line 184	C++
 	Far.exe!FilePanels::DeletePanel(Panel * Deleted=0x00000000026d4990) Line 343	C++
 	Far.exe!FilePanels::ChangePanel(Panel * Current=0x00000000026d4990, int NewType=0, int CreateNew=1, int Force=0) Line 946	C++
 	Far.exe!Panel::ChangeDiskMenu(int Pos=2, int FirstCall=1) Line 976	C++
 	Far.exe!Panel::ChangeDisk() Line 200	C++
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Denis »

Иногда и в дебаге не падает - бывает, что новая панель создаётся по адресу старой.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by zg »

2useven10 wrote:Открыть info panel (Ctrl-L). Потом для этой панели выбрать диск (Alt-F1 или F2).
Чистый фар без плагинов (x86 vc2010 debug) у меня падает всегда.
если фар с чистым профилем, то только alt-f2 — по дефолту левая панель.
а так у меня тоже 4094 x86 vc2010 debug чистый профиль, не падает.
стек-то хоть какой?
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Denis »

Фикс:

Code: Select all

diff --git i/unicode_far/panel.cpp w/unicode_far/panel.cpp
index ab7488c..1298d94 100644
--- i/unicode_far/panel.cpp
+++ w/unicode_far/panel.cpp
@@ -977,11 +977,11 @@ int Panel::ChangeDiskMenu(int Pos,int FirstCall)
 			NewPanel->SetCurDir(strNewCurDir,true);
 			NewPanel->Show();
 
-			if (Focus || !m_parent->GetAnotherPanel(this)->IsVisible())
+			if (Focus || !NewPanel->m_parent->GetAnotherPanel(NewPanel)->IsVisible())
 				NewPanel->SetFocus();
 
-			if (!Focus && m_parent->GetAnotherPanel(this)->GetType() == INFO_PANEL)
-				m_parent->GetAnotherPanel(this)->UpdateKeyBar();
+			if (!Focus && NewPanel->m_parent->GetAnotherPanel(NewPanel)->GetType() == INFO_PANEL)
+				NewPanel->m_parent->GetAnotherPanel(NewPanel)->UpdateKeyBar();
 		}
 	}
 	else //эта плагин, да
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by Denis »

this может умереть в panel.cpp:975:

Code: Select all

auto NewPanel = m_parent->ChangePanel(this, FILE_PANEL, TRUE, FALSE);
Всё, что ниже оперирует m_parent и this - падает (может).
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by 2useven10 »

Чистый профиль, без плагинов. 4094 vc2010 x86 debug:

Code: Select all

>	Far.exe!FilePanels::GetAnotherPanel(const Panel * Current=0x02cab0b0)  Line 878 + 0x6 bytes	C++
 	Far.exe!Panel::ChangeDiskMenu(int Pos=0x00000002, int FirstCall=0x00000001)  Line 978 + 0x18 bytes	C++
 	Far.exe!Panel::ChangeDisk()  Line 200 + 0x10 bytes	C++
 	Far.exe!FilePanels::ProcessKey(const Manager::Key & Key={...})  Line 673	C++
 	Far.exe!Manager::ProcessKey(Manager::Key key={...})  Line 806 + 0x1b bytes	C++
 	Far.exe!Manager::ProcessMainLoop()  Line 575	C++
 	Far.exe!Manager::EnterMainLoop()  Line 537	C++
 	Far.exe!MainProcess(const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & lpwszEditName="", const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & lpwszViewName="", const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & lpwszDestName1="", const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & lpwszDestName2="", int StartLine=0xffffffff, int StartChar=0xffffffff)  Line 281	C++
 	Far.exe!mainImpl(const range<wchar_t * *> & Args={...})  Line 757 + 0x2f bytes	C++
 	Far.exe!wmain(int Argc=0x00000001, wchar_t * * Argv=0x025543a0)  Line 814 + 0x23 bytes	C++
 	Far.exe!__tmainCRTStartup()  Line 278 + 0x19 bytes	C
 	Far.exe!wmainCRTStartup()  Line 189	C
 	kernel32.dll!7d4e7cc2() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by 2useven10 »

Code: Select all

+		Current	0x02cab0b0 {ProcessingPluginCommand=0xfeeefeee m_parent=0xfeeefeee m_ViewSettings={...} ...}	const Panel *
-		this	0xfeeefeee {LastLeftFilePanel=??? LastRightFilePanel=??? LeftPanel=??? ...}	FilePanels * const
+		window	{m_ID=??? m_DynamicallyBorn=??? m_CanLoseFocus=??? ...}	window
+		ViewerContainer	{...}	ViewerContainer
		LastLeftFilePanel	CXX0030: Error: expression cannot be evaluated	
		LastRightFilePanel	CXX0030: Error: expression cannot be evaluated	
		LeftPanel	CXX0030: Error: expression cannot be evaluated	
		RightPanel	CXX0030: Error: expression cannot be evaluated	
+		TopMenuBar	{...}	MenuBar
		LastLeftType	CXX0030: Error: expression cannot be evaluated	
		LastRightType	CXX0030: Error: expression cannot be evaluated	
		LeftStateBeforeHide	CXX0030: Error: expression cannot be evaluated	
		RightStateBeforeHide	CXX0030: Error: expression cannot be evaluated	
		m_ActivePanel	CXX0030: Error: expression cannot be evaluated	
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by NightRoman »

Far 3.0.4098 (3.0.4096 работает нормально) - вызов перерисовки в редакторе из
EE_GOTFOCUS после изменения текста теперь приводит к вызыву того же
EE_GOTFOCUS, поэтому подобный код приводит к переполнению стека.

Пример. Скрип PowerShellFar ( C:\TEMP\test.ps1 ) в EE_GOTFOCUS добавляет текст
и вызывает перерисовку:

Code: Select all

Open-FarEditor
$Far.Editor.add_GotFocus({
	$this.Add("Hello`n")
	$this.Redraw()
})
Шаги:
- выполнить скрипт: ps: C:\TEMP\test.ps1
- переключиться из отрывшегося редактора в панели
- переключиться обратно в редактор => переполнение стека PowerShell

Переполнение стека PowerShell не приводит к падению, PowerShell прекращает
скрипт. Однако, подобный код в плагине, где была замечена эта проблема,
приводит к падению из-за stack overflow.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

NightRoman
Вроде бы у нас есть специальная тема для обсуждения подобных проблем.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Глюки и баги, появившиеся в «ночных сборках»

Post by NightRoman »

Это разве принципиально? В ночной сборке произошло изменение, сюда и пишу. (И об оконном менеджере это или чисто о редакторе, не могу сказать).
Post Reply

Return to “Глюки и баги”