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

Здесь можно сообщить о найденных багах в Far.
User avatar
DrKnS
Posts: 4626
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 123 times
Contact:

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

Post by DrKnS » Mon 30 May, 2016 20:24

Latest post of the previous page:

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: 8077
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Mon 30 May, 2016 21:09

HaRT wrote: В каком точно, я не знаю
С помощью ShExView виновник установлен — им оказался
Фар есть инструмент, а не нянька. © 2009 DrKnS

Mammoth
Posts: 10
Joined: Sat 01 Nov, 2008 02:01

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

Post by Mammoth » Tue 31 May, 2016 06:35

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

Запустил фар. Вошёл в видеорежим. Поработал в редакторе. Вышел с видеорежима. f10. Висит. Долго висит. Решил проверить процессы. far.exe присутствует. https://cloud.mail.ru/public/CSus/DnFwXJBDX В итоге убил процесс.

2useven10
Posts: 3012
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 82 times

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

Post by 2useven10 » Tue 31 May, 2016 08:03

Mammoth wrote: Вошёл в видеорежим.
Это что за зверь? Как ходят 'в видеорежим' ?

Mammoth
Posts: 10
Joined: Sat 01 Nov, 2008 02:01

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

Post by Mammoth » Tue 31 May, 2016 09:59

2useven10 wrote:Это что за зверь? Как ходят 'в видеорежим' ?
Входят так https://cloud.mail.ru/public/Kuvq/SW2UgyfDX
Давно пора переименовать пункт во что-то более понятное. Например, в нормальном режиме отображать наименование пункта "Развернуть", а в развёрнутом "Восстановить", по аналогии с ОС.

User avatar
Vertigo
Posts: 61
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 7 times
Been thanked: 2 times

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

Post by Vertigo » Tue 31 May, 2016 22:24

HaRT wrote:виновник установлен — им оказался
Вот никогда у меня в офисе не стоял аваст. А зависоны там случались часто. Однако дома, где стоял до недавних пор аваст, зависаний я не припомню.
Это я к тому, что если аваст и причина, то не единственная и окончательная. Есть и другие. Или были, т.к. недавно запускатель был переписан, и с тех пор я пока проблему не испытывал.

User avatar
HaRT
Moderator
Posts: 8077
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Tue 31 May, 2016 22:35

Vertigo wrote: недавно запускатель был переписан
В моём случае это роли не играет, т.к. для зависания достаточно вызвать контекстное меню Проводника при неотрубленном расширении от Аваста.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Vertigo
Posts: 61
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 7 times
Been thanked: 2 times

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

Post by Vertigo » Tue 31 May, 2016 22:51

Увы, подтвердить не могу, т.к. аваста у меня более нет. Однако, за долгие годы "правления" аваста я не могу утверждать, что любой вызов EMenu приводил к зависанию. Скорее, в случае с авастом наоборот.
Естественно, возможно влияние каких-то настроек.
Last edited by Vertigo on Wed 01 Jun, 2016 11:20, edited 1 time in total.

User avatar
John Doe
Бюрократ
Posts: 11274
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 88 times

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

Post by John Doe » Wed 01 Jun, 2016 09:29

DrKnS wrote:
gene.pavlovsky wrote: Можно ли добавить какую-то дебаг опцию, которая будет выдавать доп информацию
Напишите себе макрос/плагин, который в ExitFAR будет печатать то, что вернёт [url=https://msdn.microsoft.com/en-us/library/windows/desktop/ms683170(v=vs.85).aspx]GetConsoleProcessList[/url]().
  1. --http://forum.farmanager.com/viewtopic.php?p=138276#p138276
  2. local ffi = require("ffi")
  3. local C = ffi.C
  4.  
  5. ffi.cdef[[
  6. //https://msdn.microsoft.com/en-us/library/windows/desktop/ms683170(v=vs.85).aspx
  7. DWORD GetConsoleProcessList(
  8.   LPDWORD lpdwProcessList,
  9.   DWORD   dwProcessCount
  10. );
  11. ]]
  12.  
  13. local maxlen = 256
  14. local function getConsoleProcessPIDS()
  15.   local Buffer = ffi.new("DWORD[?]",maxlen)
  16.   local ListLength = C.GetConsoleProcessList(Buffer,maxlen)
  17.   if ListLength==0 then
  18.     far.Message("","Error",nil,"ew")
  19.   elseif ListLength>maxlen then
  20.     far.Message("buffer is too small","Error",nil,"w")
  21.   else
  22.     local pids = {}; for i=0,ListLength-1 do pids[i+1] = Buffer[i] end
  23.     return ListLength,pids
  24.   end
  25. end
  26.  
  27. Event { group="ExitFAR"; description="check console processes";
  28.   uid="A2DECEBD-EF46-4454-A876-F01472013D8C";
  29.   action=function()
  30.     local ListLength,pids = getConsoleProcessPIDS()
  31.     if ListLength>1 then
  32.       panel.GetUserScreen()
  33.       local ok,msg = pcall(io.write,"Warning: ",ListLength," console processes detected\n","PIDs: ",table.concat(pids," "))
  34.       if not ok then far.Message(msg,"GetConsoleProcessList",nil,"w") end
  35.       panel.SetUserScreen()
  36.     end
  37.   end;
  38. }
  39.  
  40. NoMacro { description="check console processes";
  41.   area="Common"; key="CtrlShiftF7";
  42.   uid="405C3E7E-D7F9-42EA-B65B-96A087004789";
  43.   action=function()
  44.     local ListLength,pids = getConsoleProcessPIDS()
  45.     mf.beep()
  46.     if ListLength>1 then
  47.       if 1==far.Message(ListLength.." console processes detected","Warning","PIDs") then
  48.         far.Show(unpack(pids))
  49.       end
  50.     end
  51.   end;
  52. }

User avatar
HaRT
Moderator
Posts: 8077
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Wed 01 Jun, 2016 11:15

John Doe, спасибо. А как мне удостовериться, что оно у меня работает? Просто ничего не выводится, но зависание после этого есть. Похоже, у меня дело не в процессах в чистом виде.
PS
Да, я понимаю, что этот скрипт ничего не фиксит, а просто помогает диагностировать.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11274
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 88 times

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

Post by John Doe » Wed 01 Jun, 2016 11:27

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

Ну а искусственно воспроизвести проблему можно так: viewtopic.php?p=138209#p138209

P.S.
DrKnS wrote: в ExitFAR
Следует иметь ввиду, что ExitFAR вызывается не только при выходе из фара, но и при любой перезагрузке макросов.

User avatar
sToLp
Posts: 742
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 45 times
Been thanked: 5 times

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

Post by sToLp » Wed 01 Jun, 2016 11:40

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: 8077
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Wed 01 Jun, 2016 11:51

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: 3012
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 82 times

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

Post by 2useven10 » Wed 01 Jun, 2016 11:52

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

User avatar
HaRT
Moderator
Posts: 8077
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Wed 01 Jun, 2016 14:45

John Doe wrote: Печатается вверху экрана.
Да, если есть процессы как таковые, то печатается.
Но у меня ситуация другая: я добавил туда . Так вот если я вызвал и сразу закрыл Контекстное меню Проводника и после этого пытаюсь выйти из Фара, то наблюдаю пустую консоль, без какого бы то ни было текста в ней. Это наводит на мысль, что обработчик ExitFAR даже не получает управления, а зависание происходит где-то раньше. Надо будет подцепиться отладчиком и посмотреть…
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11274
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 88 times

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

Post by John Doe » Wed 01 Jun, 2016 15:25

HaRT wrote: а зависание происходит где-то раньше.
В этом можно убедиться просто открыв Диспетчер Задач (или как это сейчас называется).
Если там есть процесс фара - значит в нём зависание, если я правильно понимаю.
HaRT wrote: Просто у меня ListLength==0.
Так не бывает, значит функция отработала с ошибкой, что предусмотрено скриптом (должно быть сообщение об ошибке)

User avatar
HaRT
Moderator
Posts: 8077
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Wed 01 Jun, 2016 15:53

John Doe wrote: Так не бывает
Извиняюсь, написал, не подумав. Разумеется, не 0, а 1, т.к. сам Фар тоже процесс.
John Doe wrote: Если там есть процесс фара - значит в нём зависание
Всё так, он и висит, голубчик. Буду разбираться. Результаты напишу.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

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