View Issue Details

IDProjectCategoryView StatusLast Update
0003879Far Manager_Commonpublic2021-07-27 09:25
ReporterAleXH Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionno change required 
Platformx86OSWindowsOS VersionXP SP3
Product Version3.0 
Fixed in Version3.0 
Summary0003879: >5802 под XP не дружат с плагином ConEmu
Description5802 последняя нормально работающая с ConEmu версия.
Steps To ReproduceXPSP3x86, >5802, ConEmu, например последний, 210627. Если плагин ConEmu добавлен к плагинам Far, то вывод far.Message() вызывает загрузку ядра ЦП до 100%, пример:
>lua:far.Message("","")
TagsNo tags attached.
Build0

Activities

DrKnS

2021-07-06 17:01

administrator   bugnote:0017109

AleXH, правильно ли я понимаю, что вы уже написали Maximus5, но он вам ответил, что проблема в Far?

AleXH

2021-07-06 18:38

reporter   bugnote:0017112

Last edited: 2021-07-06 18:40

Да, написал https://github.com/Maximus5/ConEmu/issues/2328, но в реальности это результат изменений в 5803-04. Вам нужно решить между собой, как правильно поступить.

DrKnS

2021-07-06 19:19

administrator   bugnote:0017114

Conemu - прекрасный проект, облегчающий жизнь и делающий невозможное возможным.
Однако, делающий это посредством чудовищных хаков.
Не потому, что его автор делает что-то не так, отнюдь.
Просто других способов, как правило, нет.

Любые операции в обход документированных интерфейсов, любые предположения о работе чего либо, базирующиеся на наблюдаемом поведении, а не на документации, рано или поздно сломаются.

Единственный вариант не ломать код, работающий на предположениях - ничего никогда больше не менять, заморозить все и остановить работу над проектом навсегда. Подозреваю, этот вариант устроит не всех, поэтому вы можете просто остановиться на тех версиях, которые у вас работают. С вашей точки зрения результат будет эквивалентным.

https://www.hyrumslaw.com/
https://xkcd.com/1172/

AleXH

2021-07-07 04:45

reporter   bugnote:0017115

Last edited: 2021-07-07 05:35

Я ни в коем разе не против изменений, особенно учитывая, что поддержке XP уделяется должное внимание, большое спасибо вам за работу над Far, делающей его лучше. Любые положительные изменения только приветствуются. Понятно, что на каком-то этапе поддержка ХР станет более невозможной, тогда стоит зафиксировать последнюю совместимую с ХР версию и впоследствии лишь добавлять в неё по возможности фиксы багов.

С конему сейчас непонятно следующее - когда стоит вносить в него адаптацию под новое состояние Far?

DrKnS

2021-07-07 12:05

administrator   bugnote:0017119

Дело не в XP, все это прекрасно повторяется под 10.
И даже не в изменениях в Far как таковых, по крайней мере не в тех, что отражены в чейнжлоге.

Что я вижу:

1. Conemu перехватывает Windows API, вызываемые Far, например, PeekConsoleInput
2. строит какие-то предположения о том, что происходит внутри Far
3. решает, что надо бы послать ACTL_SYNCHRO и посылает
4. в процессе обработки очереди сообщений Far вызывает PeekConsoleInput
5. Conemu перехватывает его, строит новые предположения
6. решает, что ситуация еще не изменилась и стоит послать еще, что и делает
7. GOTO 4

Проблема в том, что эти перехватывания - карточный домик, замок на песке и подбрасывание монеты, всегда.
Приложение может вызывать любые системные функции в любом количестве и последовательности, или не вызывать вообще.

Скажем, я могу "исправить" это в Far, проверяя, что console input handle в состоянии signaled перед вызовом PeekConsoleInput, что никак не изменит поведение Far, но предотвратит вызов перехватываемой функции и разорвет порочный круг выше. Но при этом в Conemu наверняка отвалится что-то еще, т.к. зачем-то же она перехватывается.

когда стоит вносить в него адаптацию под новое состояние Far?
С подходом, описанным выше, "новое состояние" наступает с каждым новым коммитом.
Поэтому вносить стоит тогда, когда автор Conemu сочтет нужным.

Можете также попробовать выключить ConEmuHk.dll в настройках. Наверное, поможет (и отвалится что-то еще).

AleXH

2021-07-07 14:20

reporter   bugnote:0017120

Я могу пригласить Максимуса сюда для обсуждения, дав ему ссылку, либо разместить в своём issue у него ваш последний пост? Вы могли бы договориться об оптимальном решении.

Inject ConEmuHk.dll в процессы табов в настройках отключен, но ConEmuHk.dll загружается в сам процесс Far, если её удалить, то перестают создаваться табы с открытыми редакторами, вьюверами и тп. Аналогичное происходит если удалить плагин ConEmu. Тогда да, far.Message() ядро не грузит.

DrKnS

2021-07-07 15:13

administrator   bugnote:0017122

На ваше усмотрение.

AleXH

2021-07-27 05:27

reporter   bugnote:0017130

В ConEmu 210718 проблема решена, можно закрывать.

Issue History

Date Modified Username Field Change
2021-07-06 10:22 AleXH New Issue
2021-07-06 17:01 DrKnS Note Added: 0017109
2021-07-06 18:38 AleXH Note Added: 0017112
2021-07-06 18:40 AleXH Note Edited: 0017112
2021-07-06 19:19 DrKnS Note Added: 0017114
2021-07-07 04:45 AleXH Note Added: 0017115
2021-07-07 05:35 AleXH Note Edited: 0017115
2021-07-07 12:05 DrKnS Note Added: 0017119
2021-07-07 14:20 AleXH Note Added: 0017120
2021-07-07 15:13 DrKnS Note Added: 0017122
2021-07-27 05:27 AleXH Note Added: 0017130
2021-07-27 09:25 JohnDoe Status new => closed
2021-07-27 09:25 JohnDoe Resolution open => no change required
2021-07-27 09:25 JohnDoe Fixed in Version => 3.0
2021-07-27 09:25 JohnDoe Build => 0