Зависание при закрытии (выходе через F10)

Здесь можно сообщить о найденных багах в Far.
User avatar
Vertigo
Posts: 85
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 11 times
Been thanked: 4 times

Зависание при закрытии (выходе через F10)

Post by Vertigo »

Latest post of the previous page:

HaRT wrote: В каком точно, я не знаю, но грешу на git Shell integration/ TortoiseGit/TortoiseSVN/TortoiseCVS
У меня стоят TortoiseGit/SVN, коими я активно пользуюсь - проблема, очевидно, не в них. Не исключено, правда, что у меня в них что-то подкручено (по крайней мере, точно отключено отображение иконок, дабы тестовое меню работало). Git Cheetah никогда (ну, в самый первый раз разве, на 5 минут) не включал. Он точно активно гадил в консоль, что было хорошо видно, из-за чего он и был убит, собственно. Но они все не есть процессы, а всего лишь длл-ки, загруженные в процесс. И вряд ли могут завладеть консолью.
gene.pavlovsky
Posts: 173
Joined: Tue 16 Feb, 2010 17:55
Location: Luxembourg
Has thanked: 13 times
Been thanked: 9 times
Contact:

Зависание при закрытии (выходе через F10)

Post by gene.pavlovsky »

Я не могу точно сказать, как воспроизвести, знал бы, сказал бы. TortoiseGIT-ом тоже пользуюсь, кстати.
Можно ли добавить какую-то дебаг опцию, которая будет выдавать доп информацию, которая может помочь отследить, откуда проблема возникает?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Зависание при закрытии (выходе через F10)

Post by DrKnS »

gene.pavlovsky wrote: Можно ли добавить какую-то дебаг опцию, которая будет выдавать доп информацию
Напишите себе макрос/плагин, который в ExitFAR будет печатать то, что вернёт GetConsoleProcessList().
Last edited by HaRT on Mon 30 May, 2016 20:29, edited 1 time in total.
Reason: Добавлена ссылка на документацию
User avatar
HaRT
Moderator
Posts: 10858
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Зависание при закрытии (выходе через F10)

Post by HaRT »

HaRT wrote: В каком точно, я не знаю
С помощью ShExView виновник установлен — им оказался
Фар есть инструмент, а не нянька. © 2009 DrKnS
Mammoth
Posts: 10
Joined: Sat 01 Nov, 2008 02:01

Зависание при закрытии (выходе через F10)

Post by Mammoth »

Far Manager, version 3.0 (build 4693) x86
Win 7 Pro x32

Запустил фар. Вошёл в видеорежим. Поработал в редакторе. Вышел с видеорежима. f10. Висит. Долго висит. Решил проверить процессы. far.exe присутствует. https://cloud.mail.ru/public/CSus/DnFwXJBDX В итоге убил процесс.
2useven10
Posts: 5226
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 314 times

Зависание при закрытии (выходе через F10)

Post by 2useven10 »

Mammoth wrote: Вошёл в видеорежим.
Это что за зверь? Как ходят 'в видеорежим' ?
Mammoth
Posts: 10
Joined: Sat 01 Nov, 2008 02:01

Зависание при закрытии (выходе через F10)

Post by Mammoth »

2useven10 wrote:Это что за зверь? Как ходят 'в видеорежим' ?
Входят так https://cloud.mail.ru/public/Kuvq/SW2UgyfDX
Давно пора переименовать пункт во что-то более понятное. Например, в нормальном режиме отображать наименование пункта "Развернуть", а в развёрнутом "Восстановить", по аналогии с ОС.
User avatar
Vertigo
Posts: 85
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 11 times
Been thanked: 4 times

Зависание при закрытии (выходе через F10)

Post by Vertigo »

HaRT wrote:виновник установлен — им оказался
Вот никогда у меня в офисе не стоял аваст. А зависоны там случались часто. Однако дома, где стоял до недавних пор аваст, зависаний я не припомню.
Это я к тому, что если аваст и причина, то не единственная и окончательная. Есть и другие. Или были, т.к. недавно запускатель был переписан, и с тех пор я пока проблему не испытывал.
User avatar
HaRT
Moderator
Posts: 10858
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Зависание при закрытии (выходе через F10)

Post by HaRT »

Vertigo wrote: недавно запускатель был переписан
В моём случае это роли не играет, т.к. для зависания достаточно вызвать контекстное меню Проводника при неотрубленном расширении от Аваста.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Vertigo
Posts: 85
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 11 times
Been thanked: 4 times

Зависание при закрытии (выходе через F10)

Post by Vertigo »

Увы, подтвердить не могу, т.к. аваста у меня более нет. Однако, за долгие годы "правления" аваста я не могу утверждать, что любой вызов EMenu приводил к зависанию. Скорее, в случае с авастом наоборот.
Естественно, возможно влияние каких-то настроек.
Last edited by Vertigo on Wed 01 Jun, 2016 11:20, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Зависание при закрытии (выходе через F10)

Post by John Doe »

DrKnS wrote:
gene.pavlovsky wrote: Можно ли добавить какую-то дебаг опцию, которая будет выдавать доп информацию
Напишите себе макрос/плагин, который в ExitFAR будет печатать то, что вернёт GetConsoleProcessList().
  1. --http://forum.farmanager.com/viewtopic.php?p=138276#p138276
  2.  
  3. local ffi = require("ffi")
  4.  
  5. local C = ffi.C
  6.  
  7.  
  8.  
  9. ffi.cdef[[
  10.  
  11. //https://msdn.microsoft.com/en-us/library/windows/desktop/ms683170(v=vs.85).aspx
  12.  
  13. DWORD GetConsoleProcessList(
  14.  
  15.   LPDWORD lpdwProcessList,
  16.  
  17.   DWORD   dwProcessCount
  18.  
  19. );
  20.  
  21. ]]
  22.  
  23.  
  24.  
  25. local maxlen = 256
  26.  
  27. local function getConsoleProcessPIDS()
  28.  
  29.   local Buffer = ffi.new("DWORD[?]",maxlen)
  30.  
  31.   local ListLength = C.GetConsoleProcessList(Buffer,maxlen)
  32.  
  33.   if ListLength==0 then
  34.  
  35.     far.Message("","Error",nil,"ew")
  36.  
  37.   elseif ListLength>maxlen then
  38.  
  39.     far.Message("buffer is too small","Error",nil,"w")
  40.  
  41.   else
  42.  
  43.     local pids = {}; for i=0,ListLength-1 do pids[i+1] = Buffer[i] end
  44.  
  45.     return ListLength,pids
  46.  
  47.   end
  48.  
  49. end
  50.  
  51.  
  52.  
  53. Event { group="ExitFAR"; description="check console processes";
  54.  
  55.   uid="A2DECEBD-EF46-4454-A876-F01472013D8C";
  56.  
  57.   action=function()
  58.  
  59.     local ListLength,pids = getConsoleProcessPIDS()
  60.  
  61.     if ListLength>1 then
  62.  
  63.       panel.GetUserScreen()
  64.  
  65.       local ok,msg = pcall(io.write,"Warning: ",ListLength," console processes detected\n","PIDs: ",table.concat(pids," "))
  66.  
  67.       if not ok then far.Message(msg,"GetConsoleProcessList",nil,"w") end
  68.  
  69.       panel.SetUserScreen()
  70.  
  71.     end
  72.  
  73.   end;
  74.  
  75. }
  76.  
  77.  
  78.  
  79. NoMacro { description="check console processes";
  80.  
  81.   area="Common"; key="CtrlShiftF7";
  82.  
  83.   uid="405C3E7E-D7F9-42EA-B65B-96A087004789";
  84.  
  85.   action=function()
  86.  
  87.     local ListLength,pids = getConsoleProcessPIDS()
  88.  
  89.     mf.beep()
  90.  
  91.     if ListLength>1 then
  92.  
  93.       if 1==far.Message(ListLength.." console processes detected","Warning","PIDs") then
  94.  
  95.         far.Show(unpack(pids))
  96.  
  97.       end
  98.  
  99.     end
  100.  
  101.   end;
  102.  
  103. }
User avatar
HaRT
Moderator
Posts: 10858
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Зависание при закрытии (выходе через F10)

Post by HaRT »

John Doe, спасибо. А как мне удостовериться, что оно у меня работает? Просто ничего не выводится, но зависание после этого есть. Похоже, у меня дело не в процессах в чистом виде.
PS
Да, я понимаю, что этот скрипт ничего не фиксит, а просто помогает диагностировать.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Зависание при закрытии (выходе через F10)

Post by John Doe »

HaRT wrote: Просто ничего не выводится
Печатается вверху экрана.
HaRT wrote: А как мне удостовериться, что оно у меня работает?
Там ещё макрос прилагается, если нужен то NoMacro исправьте на Macro, и вызывайте для проверки в любой момент, не выходя из фара.

Ну а искусственно воспроизвести проблему можно так: http://forum.farmanager.com/viewtopic.p ... 09#p138209

P.S.
DrKnS wrote: в ExitFAR
Следует иметь ввиду, что ExitFAR вызывается не только при выходе из фара, но и при любой перезагрузке макросов.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Зависание при закрытии (выходе через F10)

Post by sToLp »

John Doe
Спасибо за полезный макрос!
В Фаре, работающем из под ConEmu, при наличии данного макроса во время перезагрузки макросов в консоль выводится следующее сообщение:
  • Warning: 3 console processes detected
    PIDS: 2544 2276 928
Однако кроме указанных в нём процессов (2544 — Far.exe, 2276 — cmd.exe, 928 — ConEmuC64.exe) есть ещё относящийся к Фару процесс, не указанный в сообщении, PID 4508 — conemu64.exe.
User avatar
HaRT
Moderator
Posts: 10858
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Зависание при закрытии (выходе через F10)

Post by HaRT »

John Doe wrote: вызывайте для проверки в любой момент
Так и делаю. Просто у меня ListLength==01.
Я себе на этот случай добавил туда MessagePopup, скопированный из luacheck_editor.lua.
Last edited by HaRT on Wed 01 Jun, 2016 15:51, edited 1 time in total.
Reason: Исправлен 0 на 1
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5226
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 314 times

Зависание при закрытии (выходе через F10)

Post by 2useven10 »

sToLp wrote: есть ещё относящийся к Фару процесс, не указанный в сообщении, PID 4508 — conemu64.exe.
Это чисто гуёвый процесс. Он в GetConsoleProcessList отображаться не должен.
Post Reply

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