Page 4 of 5

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

Posted: Wed 01 Jun, 2016 15:53
by HaRT

Latest post of the previous page:

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

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

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

И вот интересно: сложно ли в макросе вместо меню с PID'ами показать меню Task List ([b]CtrlW[/b]), отфильтрованное по этим PID'ам?

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

Posted: Thu 02 Jun, 2016 08:51
by John Doe
HaRT wrote: Предлагаю сделать код вывода в ExitFAR более лаконичным:
Ок
HaRT wrote: сложно ли в макросе вместо меню с PID'ами показать меню Task List
При выходе проблематично, а в макросе можно вызвать через postmacro Task List, пройтись в цикле по пунктам и скрыть ненужные.

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

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

Posted: Thu 02 Jun, 2016 22:45
by John Doe
HaRT wrote: показать меню 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()

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

Posted: Thu 02 Jun, 2016 23:05
by HaRT
John Doe wrote: добавить к скрипту следующий макрос
Спасибо, здорово, но почему-то у меня ни один 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 (последняя буква строчная).

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

Posted: Fri 03 Jun, 2016 00:26
by John Doe
HaRT wrote: Т.е. похоже, к консоли прицеплены какие-то процессы–трамплины, а не сами Блокноты.
Это cmd.exe
Значит фаровский Task list тут безполезен..

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

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

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

Posted: Fri 03 Jun, 2016 12:59
by HaRT
John Doe wrote: Это cmd.exe
Я себе сделал и использую эту ф-ю и в обработчике ExitFAR, и в макросе).
15:41 MSK
Использую так: ,

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

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

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

Posted: Fri 03 Jun, 2016 14:34
by HaRT
HaRT wrote:
HaRT wrote: В каком точно, я не знаю
С помощью ShExView виновник установлен — им оказался
Итак, повторюсь, у меня зависает на выходе из процесса far.exe, если при неотрубленном расширении от avast! через EMenu было вызвано (и сразу закрыто) Контекстное меню Проводника. (без прочих плагинов)
FreeLibrary вызывается для EMenu.dll.

Зависание при закрытии

Posted: Wed 18 Aug, 2021 05:08
by LizardKing
Доброго времени суток.
Редко-редко и весьма случайно проявляется неприятная вещь: при закрытии Фара (корректного, по F10, и отнюдь не после какой-то там интенсивной нагрузки) гаснут панельки - и бесконечно висит чёрная консоль с "Far Manager, version блаблабла". Происходит раз на раз, спокойно снимается Диспетчером задач, с каким-то конкретным билдом, насколько вижу, не связано.
В чём может быть причина, не подскажете?

Зависание при закрытии

Posted: Wed 18 Aug, 2021 07:13
by Yegor
Возможно плагин какой...

Что можно сделать:
1) Взять последнюю версию с github-а, а так же взять pdb-шники
2) Воспроизвести проблему
3) Взять Process Explorer (от sysinternals) и посмотреть какие потоки висят и их call stack-и
3) И/или сделать дамп/минидамп и выложить на "посмотреть"

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

Posted: Wed 18 Aug, 2021 08:19
by Taciturn
У меня было такое из-за повреждённой базы %FARLOCALPROFILE%\history.db. Исправил через

Code: Select all

sqlite3 history.db ".recover" | sqlite3 history_.db
, заменив повреждённый файл результатом .recover. Предварительно проверил на ошибки,

Code: Select all

sqlite3 history.db "PRAGMA integrity_check"
. Остальные базы тоже проверял, с ними проблем не было.

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

Posted: Wed 18 Aug, 2021 10:08
by LizardKing
А ведь и вправду в этом единственном db-файле куча missing rows... которые успешно исправляются, но снова появляются после любой операции с любой Фаровской историей. Такшта, видимо, не вариант, увы.

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

Posted: Wed 18 Aug, 2021 10:38
by Shmuel
LizardKing, я проверил у себя файл истории, там было 2 ошибки, связанные с таблицей editorposition_history.
Поскольку это не самая критичная история, я удалил эту таблицу полностью и перезапустил Фар.
Погулял редактором по разным файлам, меняя позиции в них - пока ошибка не возвращается.

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

Posted: Wed 18 Aug, 2021 10:42
by LizardKing
Gut коли так. Тоже добился отсутствия повторного возникновения ошибок, будем посмотреть. Мож, реально из-за этого висняк.
P.S. А ошибок-то было далеко не две, а много за ДВЕ СОТНИ :facepalm: