[Wine-devel] CIFS+блокировка

Vitaly Perov =?iso-8859-1?q?vitperov_=CE=C1_etersoft=2Eru?=
Пн Мар 16 12:07:25 MSK 2009


Имеется следующая проблема (бага №1185):

1) 1с77 открывает файл, выставляет блокировку, и отправляет его на печать.
2) При печати, с помощью fork() создаётся отдельный поток, который остаётся 
жить пока документ посылается на печать.
3) Поток умирает когда печать завершается.

Собственно проблема:
При использовании CIFS документ так и остаётся заблокированным (т.е второй раз 
его открыть нельзя, появляется сообщение о том, что он заблокирован).

Наблюдения:
1) Сложилось такое впечатление, что бага проявляется при закрытии порожденного 
процесса. Если порождённый процесс не завершать, то всё работает, блокировки 
нет.
2) Пробовал в порождённом потоке закрывать все открытые файлы (просто перебор 
дескрипторов до 1000) - ничего не изменилось.

Тесты:
1) Пробовал написать тест воспроизводящий багу - ничего не получилось. Для 
исходного процесса файлы всегдя остаются не блокированными.
2) В ходе тестирования выяснилась другая проблема: в исходном процессе ставим 
блокировку на запись. Смотрим блокировку в порождённом потока.
Результат: ext3 - стоит блокировка на запись, cifs - стоит блокировка на 
ЧТЕНИЕ.


Бага срочная, и к релизу её надо обязательно сделать.
Если у кого-нибудь появятся какие-нибудь соображения  - пишите



-- 
Best wishes,
Vitaly Perov
Russia, Saint-Petersburg. www.etersoft.ru


Подробная информация о списке рассылки Wine-devel