Бутылка bugs/3895. Запускаем WINEDLLOVERRIDES="ole32,rpcrt4,oleaut32,olecnv32,olethk32,olepro32,msi,msiexec.exe=n" WINDOWS_VERSION=win98 ww DrvFRTst.exe Настройка свойств -> Поиск оборудования... -> Закрыть В консоли при этом появляется: X Error of failed request: BadWindow (invalid Window parameter) Major opcode of failed request: 4 (X_DestroyWindow) Resource id in failed request: 0x1100c8 Serial number of failed request: 6640 Current serial number in output stream: 6644 Воспроизводится на текущем eterhack. На 1.0.10-eter25/18 не падает.
Выложил патч. Причина падения - очистка памяти. В функции notify_forward_header в процессе работы используются 2 указателя - text и filter. Они ссылаются на поля локальных структур (значения которых берутся из структур входных параметров). В конце функции для этих указателей вызывается Free. Не понятно, зачем это делать если локальные структуры целиком удаляются по завершении работы функции. Вероятнее всего, пока X-ы удаляли память по этим указателям, функция завершала свою работу. В результате происходила очистка одной и той же памяти в 2-х разных процессах.
Забыл сказать - сломалось коммитом из оригинально wine: commit 34b802caf088e526eadc23d785582e81ea5374cd Author: Nikolay Sivov <bunglehead@gmail.com> Date: Tue Jun 16 01:46:11 2009 +0400 comctl32/listview: Convert forwarded header notifications to ANSI if NFR_ANSI is current format.
Проверено bottle bugs/3895 WINE@Etersoft 1.0 SQL 1.0.12-eter14/28 eterhack bottle bugs/7915 WINE@Etersoft 1.0 SQL 2.0.0-eter0.12/2 c:/Program Files/ШТРИХ-М/Драйвер ФР 4.9/DrvFRTst.exe Падений не было.