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

Здесь можно сообщить о найденных багах в Far.
User avatar
HaRT
Moderator
Posts: 7908
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 63 times
Been thanked: 94 times

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

Postby HaRT » Wed 01 Jun, 2016 15:53

Latest post of the previous page:

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

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

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

Postby HaRT » Wed 01 Jun, 2016 22:07

John Doe wrote:Source of the post CODE: [ВЫДЕЛИТЬ ВСЁ] [EXPAND/COLLAPSE] [DOWNLOAD] (GETCONSOLEPROCESSLIST.LUA)
Предлагаю сделать код вывода в ExitFAR более лаконичным:
io.write("Warning: ",ListLength," console processes detected\n","PIDs: ",table.concat(pids,' '))

И вот интересно: сложно ли в макросе вместо меню с PID'ами показать меню Task List (CtrlW), отфильтрованное по этим PID'ам?
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Postby John Doe » Thu 02 Jun, 2016 08:51

HaRT wrote:Source of the post Предлагаю сделать код вывода в ExitFAR более лаконичным:
Ок

HaRT wrote:Source of the post сложно ли в макросе вместо меню с PID'ами показать меню Task List
При выходе проблематично, а в макросе можно вызвать через postmacro Task List, пройтись в цикле по пунктам и скрыть ненужные.

Или же можно просто по pid получить имена (OpenProcess + GetModuleFileNameEx|GetModuleBaseName|GetProcessImageFileName + CloseHandle).

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

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

Postby John Doe » Thu 02 Jun, 2016 22:45

HaRT wrote:Source of the post показать меню Task List (CtrlW), отфильтрованное по этим PID'ам?
добавить к скрипту следующий макрос:

Code: Select all

local F = far.Flags
Macro { description="check console processes in Task list";
  area="Common"; key="CtrlW";
  uid="1CACFB07-B3FA-483D-BC65-9AB8C86F73FC";
  action=function()
    Keys"CtrlW"
    local ListLength,pids = getConsoleProcessPIDS()
    if ListLength>1 then mf.beep() end
    local hDlg,ID = far.AdvControl(F.ACTL_GETWINDOWINFO).Id,1
    local list = far.GetDlgItem(hDlg, ID)[6] --[6]  Selected/ListItems: integer/table
    local item
    for i=#list,1,-1 do
      item = list[i]; local pid = tonumber(item.Text:match"%d+")
      for j=1,#pids do
        if pids[j]==pid then
          hDlg:send(F.DM_LISTUPDATE, ID,{Index=i,Text=item.Text,Flags=bor(item.Flags,F.LIF_CHECKED)})
        end
      end
    end
  end;
}

Срабатывает на CtrlW, показывая стандартный список задач, в котором искомые процессы помечены галками.
Если процессов>1, то вызывается mf.beep()

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

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

Postby HaRT » Thu 02 Jun, 2016 23:05

John Doe wrote:Source of the post добавить к скрипту следующий макрос
Спасибо, здорово, но почему-то у меня ни один Notepad, запущенный через start /b cmd /c Notepad.exe, в меню не выделяется (выделяется только сам Фар). И это при том, что в списке первым макросом они все выводятся.
01:08 MSK
Ха, PIDы-то разные:

Code: Select all

11892 │ Untitled - Notepad
12896 │ Untitled - Notepad

Code: Select all

Warning: 3 console processes detected
PIDs: 6340 11504 14308
Т.е. похоже, к консоли прицеплены какие-то процессы–трамплины, а не сами Блокноты.

PS
А ф-ю я переименовал в getConsoleProcessPIDs (последняя буква строчная).
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Postby John Doe » Fri 03 Jun, 2016 00:26

HaRT wrote:Source of the post Т.е. похоже, к консоли прицеплены какие-то процессы–трамплины, а не сами Блокноты.
Это cmd.exe
Значит фаровский Task list тут безполезен..

Karagy
Posts: 56
Joined: Tue 02 May, 2006 08:43
Location: Питер
Been thanked: 3 times

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

Postby Karagy » Fri 03 Jun, 2016 08:30

На заметку: установленый (просто инсталлированый, не включеный) в системе WideCap (это socksifier, с глобальным хуком на winsock, емнип) приводит к незавершению Outlook 2003. Окно скрывается, но процесс аутлука не может завершиться сам. Это я к тому, что причины незавершения фара или иного (неочевидного) владельца консоли - могут быть очень даже разные у разных пользователей. Вирусы, антивирусы, анонимайзеры и прочие "ускорители интернета" - всё это может быть причиной "зависания при закрытии".

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

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

Postby HaRT » Fri 03 Jun, 2016 12:59

John Doe wrote:Source of the post Это cmd.exe
Я себе сделал и использую эту ф-ю и в обработчике ExitFAR, и в макросе).
15:41 MSK
Использую так: ,
Last edited by HaRT on Fri 03 Jun, 2016 14:07, edited 4 times in total.
Reason: Исправлен фильтр процессов; разделены заголовок и список.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Postby Vertigo » Fri 03 Jun, 2016 13:12

HaRT wrote:Я себе сделал дёшево и сердито
Я думаю, в гавке паттерн стоит обрамить в ^(...)$ для точного соответствия. Иначе ищется по подстроке. Ошибка маловероятна, но возможна.

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

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

Postby HaRT » Fri 03 Jun, 2016 14:34

HaRT wrote:
HaRT wrote:Source of the post В каком точно, я не знаю
Source of the post С помощью ShExView виновник установлен — им оказался
Итак, повторюсь, у меня зависает на выходе из процесса far.exe, если при неотрубленном расширении от avast! через EMenu было вызвано (и сразу закрыто) Контекстное меню Проводника. (без прочих плагинов)
FreeLibrary вызывается для EMenu.dll.
Фар есть инструмент, а не нянька. © 2009 DrKnS


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

Who is online

Users browsing this forum: Volodya and 6 guests