SetStartupInfoW, STATUS_STACK_OVERFLOW

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
igor
Posts: 34
Joined: Mon 29 Apr, 2013 08:22
Has thanked: 14 times
Been thanked: 1 time

SetStartupInfoW, STATUS_STACK_OVERFLOW

Post by igor »

Ребят, исследую проблему падения своего плагина. Рука не повернулась запостить тему в баги, чую проблема моя.

В течение дня пользуюсь своим плагином сам. Уходя с работы лочу комп с включенными программами, на утром всегда нахожу крашдамп с довольно странным рекурсивным падением на вызове функции SetStartpupInfoW.

(баг-репорт не пролез по размеру сюда)




Не могу соринтироваться как эта функция может зарекурсится, код внутри довольно простой. Может быть связано со внутренним поведением Фара? Или имеет смысл искать у себя дальше? Думал проверить утечки, утром включил как обычно, сейчас днем по памяти все чинно красиво. Спасибо за помощь как всегда. Если я исчерпал свой лимит доброты на форуме, просьба дать знать)
User avatar
zg
zero-gravity
Posts: 6135
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 194 times
Contact:

SetStartupInfoW, STATUS_STACK_OVERFLOW

Post by zg »

SetStartupInfoW вызывается один раз при загрузке плагина. когда вы уходите у вас плагин не загружен? если да, что приводит к его загрузке?
стек не выглядит, как стэк основного потока фара. единственный случай, который я знаю, когда плагин грузится фаром не из основного потока — это поиск. связано ли ваше падение с поиском?
и в целом апи фара не потокобезопасно, как в вашем плагине с этим обстоят дела?
User avatar
igor
Posts: 34
Joined: Mon 29 Apr, 2013 08:22
Has thanked: 14 times
Been thanked: 1 time

SetStartupInfoW, STATUS_STACK_OVERFLOW

Post by igor »

Когда ухожу, оставляю Фар на, как правило, скрытом виртуальном десктопе (Win11), где плагин загружен и показывает свои диалоги. Только что подумал, что когда прихожу домой и слушаю музыку там, плагин 100% на залоченном компе получает апдейты и реагировать должен честно (поэкспериментирую с этим позже).

Специфичного кода для загрузки плагина у меня нету, только через меню плагинов. Потоки у меня есть: есть один вспомогательный, который опрашивает сервис, события винды слушает некоторые и забирает апдейты с сервиса, есть еще пул для асинхронных http запросов - тут точно мог накрутить. Поиска у меня нет вобще. Чудо.
User avatar
zg
zero-gravity
Posts: 6135
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 194 times
Contact:

SetStartupInfoW, STATUS_STACK_OVERFLOW

Post by zg »

igor wrote: Fri 04 Apr, 2025 15:55Потоки у меня есть: есть один вспомогательный, который опрашивает сервис, события винды слушает некоторые и забирает апдейты с сервиса, есть еще пул для асинхронных http запросов - тут точно мог накрутить.
тут важно, вызываете ли вы из этих потоков какие-либо функции фар апи.
если попробовать только фар+плагин, без других плагинов?
User avatar
igor
Posts: 34
Joined: Mon 29 Apr, 2013 08:22
Has thanked: 14 times
Been thanked: 1 time

SetStartupInfoW, STATUS_STACK_OVERFLOW

Post by igor »

Так, версия: в какой-то момент мой плагин сам закрывается, причину опустим, любая возможная. При этом поток в фоне остается и дергает какие-то стандартные Фаровые функции. Есть ли какие-то функции, может, которые могут инициировать перезагрузку плагина в этом случае?
Last edited by igor on Fri 04 Apr, 2025 16:05, edited 1 time in total.
User avatar
igor
Posts: 34
Joined: Mon 29 Apr, 2013 08:22
Has thanked: 14 times
Been thanked: 1 time

SetStartupInfoW, STATUS_STACK_OVERFLOW

Post by igor »

zg wrote: Fri 04 Apr, 2025 15:59
igor wrote: Fri 04 Apr, 2025 15:55Потоки у меня есть: есть один вспомогательный, который опрашивает сервис, события винды слушает некоторые и забирает апдейты с сервиса, есть еще пул для асинхронных http запросов - тут точно мог накрутить.
тут важно, вызываете ли вы из этих потоков какие-либо функции фар апи.
если попробовать только фар+плагин, без других плагинов?
Очень даже легко: лукавить не буду, потоки добавлял в качестве эксперимента и не все еще дополировал.
User avatar
zg
zero-gravity
Posts: 6135
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 194 times
Contact:

SetStartupInfoW, STATUS_STACK_OVERFLOW

Post by zg »

igor wrote: Fri 04 Apr, 2025 16:04Есть ли какие-то функции, может, которые могут инициировать перезагрузку плагина в этом случае?
DialogInit, Menu, InputBox, ShowHelp, Message, GetMsg, SettingsControl, GetPluginDirList явно грузят плягин, от имени которого их вызвали. что-то ещё, возможно, неявно. в любом случае, даже если плагин не выгружен, так делать нельзя. есть ACTL_SYNCHRO — нужно пользоваться ей.
Post Reply

Return to “Разработка плагинов”