[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