Bug 4324

Summary: Ошибка в реализации InitiateSystemShutdownExW
Product: WINE@Etersoft Reporter: Илья Шпигорь <shpigor>
Component: Консоль ; Вызов программAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: critical    
Priority: P2 CC: amorozov, kondratyuk, lav
Version: 1.0.11   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 4171    
Bug Blocks: 3932    

Description Илья Шпигорь 2009-09-30 12:38:11 MSD
Сейчас для реализации InitiateSystemShutdownExW используется запрос к wineserver kill_wineserver. При его выполнении wineserver убивается, но остаются связанные с ним процессы:

shpigor  16054  1.2  0.4 2927584 9544 ?        Sl   12:26   0:00 C:\windows\system32\winedevice.exe MountMgr
shpigor  16073  0.8  0.5 2928428 10348 ?       Sl   12:26   0:00 C:\windows\system32\winedevice.exe
shpigor  16086  0.6  0.4 2927648 9532 ?        Sl   12:26   0:00 C:\windows\system32\winedevice.exe Parport
shpigor  16094  0.7  0.4 2927584 9532 ?        Sl   12:26   0:00 C:\windows\system32\winedevice.exe Usbhub

При многократном выполнении InitiateSystemShutdownExW, wine вообще перестает запускаться (возможно заканчиваются pid'ы или какой-то системный ресурс).

После такого завершения wineserver'а изменения в winecfg на вкладке "Ключи защиты" не сохраняются. Несмотря на то, что изменения в реестр успешно вносятся, после kill_wineserver они сбрасываются.
Comment 1 Илья Шпигорь 2009-09-30 16:00:20 MSD
Выложил патч.

Ошибка была в новом обработчике сервера - kill_wineserver. В нем вызывается kill_lock_owner, которая посылает wineserver'у сигнал SIGINT, но при посылке она ориентируется закрыт ли специальный lock файл. По этому lock файлу определяется pid wineserver'a, а так как kill_lock_owner вызывается из этого же wineserver'а, то проверка lock файла не срабатывает (он оказывается свободным). В результате сигналы не посылаются.

Для решения ошибки необходимо создавать дочерний процесс и посылать все сигналы из него.
Comment 2 Денис Баранов 2010-04-15 17:27:51 MSD
Принято.
WINE@Etersoft 1.0.12 eter5/eter4