View Issue Details

IDProjectCategoryView StatusLast Update
0003332Far ManagerFile Systempublic2017-01-07 15:06
Reportersfinexer Assigned To 
PriorityhighSeverityblockReproducibilityN/A
Status newResolutionopen 
Platformx64OSWindowsOS Version7
Summary0003332: Фар зависает при копирование файлов
DescriptionПри копировании файлов на сетевой диск, фар зависает примерно после нескольких десятков тысяч файлов.
Это касается и стабильной версии и ежедневных срезов.
TagsNo tags attached.
Build

Activities

Px

2016-10-22 17:38

reporter   bugnote:0014946

Берём ежедневный билд, вызываем зависание, если битность ОС и Фара совпадают, то запускаем диспетчер задач, правый клик на процессе, создать файл дампа памяти, и выкладываем его на любой нормальный файлообменник. Если битность не совпадает, то качаем Process Explorer и то же самое делаем в нём

sfinexer

2016-10-23 20:14

reporter   bugnote:0014949

Прошу
http://tiven.ru/Far.DMP от билда 4828 (около 56 мегабайт).
Ранее чем на 3679 билде проверить нет возможности, там ошибка также присутствует, как и в стабильной версии 4774 билде.

Px

2016-10-24 00:23

reporter   bugnote:0014950

# Child-SP RetAddr Call Site
00 00000000`001daf08 00000001`3fa754e9 ntdll!ZwQueryDirectoryFile+0xa
01 00000000`001daf10 00000001`3fa74163 Far!os::fs::file::NtQueryDirectoryFile(void * FileInformation = 0x00000000`02d4fe30, unsigned int64 Length = 0x10000, _FILE_INFORMATION_CLASS FileInformationClass = 0n3 (No matching enumerant), wchar_t * FileName = 0x00000000`027a53d4 "loctlg.cat", bool RestartScan = true)+0xb9
02 00000000`001dafa0 00000001`3fa746f1 Far!os::FindFirstFileInternal(class std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * Name = <Value unavailable error>, struct os::FAR_FIND_DATA * FindData = 0x00000000`001db2d8)+0x3f3
03 00000000`001db080 00000001`3f9f390a Far!os::fs::enum_file::get(unsigned int64 index = <Value unavailable error>, struct os::FAR_FIND_DATA * FindData = 0x00000000`001db2d8)+0x81
04 (Inline Function) --------`-------- Far!enumerator<os::fs::enum_file,os::FAR_FIND_DATA>::iterator_t<os::FAR_FIND_DATA,os::fs::enum_file *>::operator+++0x16
05 00000000`001db160 00000001`3f9f11ce Far!std::_Advance1<enumerator<os::fs::enum_file,os::FAR_FIND_DATA>::iterator_t<os::FAR_FIND_DATA,os::fs::enum_file * __ptr64>,__int64>(class enumerator<os::fs::enum_file,os::FAR_FIND_DATA>::iterator_t<os::FAR_FIND_DATA,os::fs::enum_file *> * _Where = 0x00000000`001db2c8)+0x4a
06 (Inline Function) --------`-------- Far!std::advance+0x8
07 00000000`001db250 00000001`3f9edbb6 Far!std::next<enumerator<os::fs::enum_file,os::FAR_FIND_DATA>::iterator_t<os::FAR_FIND_DATA,os::fs::enum_file * __ptr64> >(class enumerator<os::fs::enum_file,os::FAR_FIND_DATA>::iterator_t<os::FAR_FIND_DATA,os::fs::enum_file *> * _First = 0x00000000`001db2c8)+0x3e
08 00000000`001db2a0 00000001`3fa773f3 Far!enumerator<os::fs::enum_file,os::FAR_FIND_DATA>::begin(void)+0x86
09 00000000`001db370 00000001`3fa053c7 Far!os::GetFindDataEx(class std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * FileName = 0x00000000`001db6d0, struct os::FAR_FIND_DATA * FindData = 0x00000000`001db790)+0x63
0a 00000000`001db5d0 00000001`3fa04984 Far!ShellCopy::ShellCopyOneFile(class std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * Src = 0x00000000`001db9d0, struct os::FAR_FIND_DATA * SrcData = 0x00000000`001dba90, class std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * strDest = 0x00000000`001dba70, int KeepPathPos = 0n0, int Rename = 0n0)+0x607
0b 00000000`001db8d0 00000001`3fa02e10 Far!ShellCopy::CopyFileTree(class std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * Dest = 0x00000000`001dbea0)+0x1324
0c 00000000`001dbbe0 00000001`3faa978b Far!ShellCopy::ShellCopy(class std::shared_ptr<Panel> * SrcPanel = 0x00000000`001dcee0, int Move = 0n0, int Link = <Value unavailable error>, int CurrentOnly = 0n0, int Ask = 0n1, int * ToPlugin = 0x00000000`001dce74, wchar_t * PluginDestPath = 0x00000000`00000000 "", bool ToSubdir = false)+0x2ec0
0d 00000000`001dce20 00000001`3fa9e85f Far!FileList::ProcessCopyKeys(int Key = 0n65652)+0x59b
0e 00000000`001dd620 00000001`3fac3f89 Far!FileList::ProcessKey(class Manager::Key * Key = 0x00000000`001def60)+0x329f
0f 00000000`001de7d0 00000001`3fb2f3e8 Far!FilePanels::ProcessKey(class Manager::Key * Key = 0x00000000`001def60)+0x18e9
10 00000000`001dee00 00000001`3fb2e933 Far!Manager::ProcessKey(class Manager::Key * key = 0x00000000`001def60)+0x518
11 00000000`001deef0 00000001`3fb2e725 Far!Manager::ProcessMainLoop(void)+0x1f3
12 00000000`001df000 00000001`3fb28542 Far!Manager::EnterMainLoop(void)+0x35
13 00000000`001df030 00000001`3fb2b33e Far!MainProcess(class std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * EditName = <Value unavailable error>, class std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * ViewName = <Value unavailable error>, class std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * DestName1 = 0x00000000`001df910, class std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * DestName2 = 0x00000000`001df930, int StartLine = 0n-1, int StartChar = 0n-1)+0x6f2
14 00000000`001df350 00000001`3fb2b620 Far!mainImpl(class range<wchar_t * *> * Args = 0x00000000`001df9b0)+0x11be
15 00000000`001df990 00000001`3fb2b6e4 Far!wmain_seh(int Argc = 0n1, wchar_t ** Argv = 0x00000000`00303150)+0xa0
16 (Inline Function) --------`-------- Far!wmain::__l2::<lambda_1b925234776e9308acbfbe30a45d905d>::operator()+0xb
17 00000000`001dfa50 00000001`3fb2b6bf Far!seh_invoke<<lambda_1b925234776e9308acbfbe30a45d905d>,<lambda_446f0a211efec06a65dc511912303a79>,<lambda_371999b306753007c449eb1557701347> >(class wmain::__l2::<lambda_1b925234776e9308acbfbe30a45d905d> * Callable = 0x00000001`3f901000, class seh_invoke_with_ui::__l2::<lambda_446f0a211efec06a65dc511912303a79> * Filter = 0x00000000`001dfac0)+0x14
18 (Inline Function) --------`-------- Far!seh_invoke_with_ui+0x29
19 00000000`001dfaa0 00000001`3fbe57d9 Far!wmain(int Argc = <Value unavailable error>, wchar_t ** Argv = <Value unavailable error>)+0x3f
1a (Inline Function) --------`-------- Far!invoke_main+0x22
1b 00000000`001dfaf0 00000000`76f059cd Far!__scrt_common_main_seh(void)+0x11d
1c 00000000`001dfb30 00000000`7703b981 kernel32!BaseThreadInitThunk+0xd
1d 00000000`001dfb60 00000000`00000000 ntdll!RtlUserThreadStart+0x1d

stack
Т.е. Фар ждёт возврата из системного вызова, а система занята чем-то другим. Для более глубокого анализа нужно или в полном дампе памяти копаться, или пытаться захватить трейс в xperf/его наследниках, и кто-то более квалифицированный, чем я.
Но есть подозрение, что Фар не виноват...

sfinexer

2016-10-24 07:33

reporter   bugnote:0014951

Антивируса в виндусе нет, проверять файлы при копировании/перемещении может только встроенный в виндус брендмаузер, да и то...
Но эта особенность происходит спонтанно, с чем связано пока понять не могу.
Можно лиш предполагать, да и то, больше фантазировать а не предполагать.
Но из наиболее возможных причин это некие особенности файловой системы ext4, с которыми фар не может поладить.

Но данная ошибка возникает спонтанно и порой даже 60 файлов скопировать нельзя.
Что еще более странно, что фар НЕВОЗМОЖНО закрыть, приходится перезапускать виндус! Диспетчер задач не может снять фар(((

copyTitle

2017-01-07 15:06

reporter   bugnote:0015146

Встречал такое поведение на сборках 4242/4774 при копировании файлов с одного винта на другой, дважды получил зависание при копировании одного и того же файла. После этого запустил "chkdsk /f /r" на диск-источник, он оказался с ошибкой и умер окончательно :).
Возможно, проблема в этом.
Файловая система на обоих дисках - NTFS.

Issue History

Date Modified Username Field Change
2016-10-20 20:23 sfinexer New Issue
2016-10-22 17:38 Px Note Added: 0014946
2016-10-23 20:14 sfinexer Note Added: 0014949
2016-10-24 00:23 Px Note Added: 0014950
2016-10-24 07:33 sfinexer Note Added: 0014951
2017-01-07 15:06 copyTitle Note Added: 0015146