Bug 2599

Summary: Невозможно зайти с двух клиентов 1С8.1
Product: CIFS@Etersoft Reporter: Денис Баранов <baraka>
Component: блокировки файлов и доступAssignee: Денис Баранов <baraka>
Status: CLOSED FIXED QA Contact:
Severity: blocker    
Priority: P1 CC: baraka, boris, kipruss, lav, sonner
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 1153, 2710    
Attachments: Таблица тестирования запуска и совместной работы 1cv8.1
Обновленая таблица тестирования запуска и совместной работы 1cv8.1

Description Денис Баранов 2008-10-14 09:29:40 MSD
Шара располагается на линукс машине (cellar). Пытаюсь зайти с одной машины (lin-test) под разными пользователями. Первый заходит без проблем, при выборе и попытке зайти 2 пользователем выдается ошибка доступа у файлу.

Лог с трайсом по +file прилагаю.
Comment 1 Денис Баранов 2008-10-14 09:30:32 MSD
uname -r
2.6.25-std-def-alt9

Монтировал mount -t cifs //cellar/sharewine /mnt/cifs/ -o uid=guest,gid=guest,file_mode=0660,dir_mode=0770

linux-cifs-3.1
Comment 2 Vitaly Lipatov 2008-10-14 10:16:01 MSD
На данный момент основная проблема здесь.
Comment 3 Konstantin Baev 2008-10-14 17:10:29 MSD
(In reply to comment #1)
> uname -r
> 2.6.25-std-def-alt9
> 
> Монтировал mount -t cifs //cellar/sharewine /mnt/cifs/ -o
> uid=guest,gid=guest,file_mode=0660,dir_mode=0770
> 
> linux-cifs-3.1
> 

см. http://bugs.etersoft.ru/show_bug.cgi?id=1153#c18
монтировали мы так:

$ cifsmount //server/base ~/base -o user=guest

Через симлинк ~/.wine/dosdevices/e: 1с получает доступ к базе.
Comment 4 Konstantin Baev 2008-10-14 17:36:28 MSD

*** This bug has been marked as a duplicate of bug 1153 ***
Comment 5 Vitaly Lipatov 2008-10-14 21:53:53 MSD
Просьба багу не закрывать как дублирующую, она посвящена конкретной проблеме, специально чтобы не отвлекаться в сторону.
Comment 6 Евгений Синельников 2008-10-14 22:25:57 MSD
В общем на пустой информационной базе, когда предлагается сделать её не из шаблона, а вручную... несколько пользователей подключаются и работают нормально... Возможно это искусственный тест... Но хотелось бы его подтвердить на cellar. Проверите?

300Мб база у меня не грузится даже на 1 клиенте... Хотелось бы получить базу поменьше, также шаблоны для создания этой баз, которые будут хоть что-то собой представлять...

В общем, проблемы нескольких пользователей у меня не подтвердились. А вот проблемы загрузки больших баз выявились. Думаю стоит сделать набор тестовых разного объёма и конфигураций.
Comment 7 Konstantin Baev 2008-10-15 12:08:10 MSD
(In reply to comment #6)
> 300Мб база у меня не грузится даже на 1
> клиенте...
подтверждаю:

вывод top:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
10614 kipruss   20   0 2602M  62M  35M R 99.4  3.2   4:50.13 1cv8.exe

и так можно ждать

Запуск из консоли:

[kipruss@valhalla bin]$ ./1cv8.exe
fixme:heap:HeapSetInformation 0xbd0000 0 0x33fb7c 4
fixme:rpc:alloc_serverprotoseq protseq "mswmsg" not supported
fixme:rpc:alloc_serverprotoseq protseq "mswmsg" not supported
fixme:gdi:ExtCreatePen Hatches not implemented

и все...

Запустил strace ./1cv8.exe

В конце концов непрерывно бегут вот такие строчки:

read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=97, events=POLLIN}], 1, -1)   = 1 ([{fd=97, revents=POLLIN}])
read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=97, events=POLLIN}], 1, -1)   = 1 ([{fd=97, revents=POLLIN}])
read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=97, events=POLLIN}], 1, -1)   = 1 ([{fd=97, revents=POLLIN}])
read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=97, events=POLLIN}], 1, -1)   = 1 ([{fd=97, revents=POLLIN}])
read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily unavailable)
Comment 8 Konstantin Baev 2008-10-15 12:33:04 MSD
Весь файл вывода out1:

strace ./1cv8.exe > out 2>&1
head out -n 150000 > out1

даже чуть урезанный с конца более 7 Мб. Если нужно - перешлю.

Вот последние строки перед началом кучи повторяющихся похожих строк указанного вида:

open("/home/kipruss/.wine/dosdevices/e:/home/kipruss/base", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 97
fstat64(97, {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0
fcntl64(97, F_SETFD, FD_CLOEXEC)        = 0
getdents64(97, /* 9 entries */, 16384)  = 272
close(97)                               = 0
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
writev(3, [{"\"\0\0\0H\0\0\0\0\0\0\0\0\0\0\300@\0\0\0\3\0\0\0\1\0\0\0P\0\0\0\0"..., 64}, {"\0\0\0\0\0\0\0\0\0\0\0\0"..., 12}, {"/home/kipruss/.wine/dosdevices/e:"..., 60}], 3) = 136
read(5, "\0\0\0\0\0\0\0\0\200\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [HUP INT USR1 USR2 ALRM CHLD IO], 8) = 0
write(3, "%\0\0\0\0\0\0\0\0\0\0\0\200\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
read(5, "\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\237\1\22\0P\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
rt_sigprocmask(SIG_SETMASK, [HUP INT USR1 USR2 ALRM CHLD IO], NULL, 8) = 0
recvmsg(4, {msg_name(0)=NULL, msg_iov(1)=[{"\200\4\0\0"..., 4}], msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, {97}}, msg_flags=0}, 0) = 4
fcntl64(97, F_SETFD, FD_CLOEXEC)        = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
fstat64(97, {st_mode=S_IFREG|S_ISGID|0767, st_size=162538, ...}) = 0
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
_llseek(97, 162538, [162538], SEEK_SET) = 0
gettimeofday({1224058659, 556558}, NULL) = 0
time(NULL)                              = 1224058659
time(NULL)                              = 1224058659
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
write(3, "'\0\0\0\0\0\0\0\0\0\0\0\200\4\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0"..., 64) = 64
read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
gettimeofday({1224058659, 556962}, NULL) = 0
time(NULL)                              = 1224058659
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
_llseek(97, 0, [0], SEEK_SET)           = 0
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=97, events=POLLIN}], 1, -1)   = 1 ([{fd=97, revents=POLLIN}])
read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=97, events=POLLIN}], 1, -1)   = 1 ([{fd=97, revents=POLLIN}])
read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=97, events=POLLIN}], 1, -1)   = 1 ([{fd=97, revents=POLLIN}])
read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=97, events=POLLIN}], 1, -1)   = 1 ([{fd=97, revents=POLLIN}])
read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily unavailable)
Comment 9 Konstantin Baev 2008-10-15 12:36:25 MSD
Если подключать пустую базу, то работоспособность тоже какая-то мнимая, ибо если посмотреть в strace, то там будут такие повторяющиеся строки строки:

rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
write(3, "{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\0\0\0\0@"..., 64) = 64
read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\23\1\0\0\377\177\0\0'\0\377\377\0\0\0\0\0"..., 64) = 64
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(82, 0x7c0c1b5c, 4096)              = -1 EAGAIN (Resource temporarily unavailable)
read(82, 0x7c0c1b5c, 4096)              = -1 EAGAIN (Resource temporarily unavailable)
read(10, 0x7c059864, 4096)              = -1 EAGAIN (Resource temporarily unavailable)
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
write(3, "{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\0\0\0\0@"..., 64) = 64
read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\23\1\0\0\377\177\0\0'\0\377\377\0\0\0\0\0"..., 64) = 64
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(82, 0x7c0c1b5c, 4096)              = -1 EAGAIN (Resource temporarily unavailable)
read(82, 0x7c0c1b5c, 4096)              = -1 EAGAIN (Resource temporarily unavailable)
read(10, 0x7c059864, 4096)              = -1 EAGAIN (Resource temporarily unavailable)
Comment 10 Konstantin Baev 2008-10-15 13:16:46 MSD
Из винды (виртуалбокс) зашел в базу кассиром. Причем ждал не больше 5 секунд. Конфигурация управление торговлей, редакция 10.3
Comment 11 Konstantin Baev 2008-10-15 15:22:50 MSD
Ещё информация:
0. Есть у меня некая база для 1с 8.0
1. Пытался я её конвертировать в 1с под wine - не получилось.
2. В винде все конвертируется и потом запускается
3. В Линуксе уже сконвертированную виндой базу открыть не получается (даже локально). Выводится сообщение от wine:

Запись дампа
Подождите пожалуйста!
Выполняется сохранение информации об ошибке для возможности последующего анализа.

Куда они сохраняются я не нашёл.

Версии ПО совпадают с указанными тут: http://bugs.etersoft.ru/show_bug.cgi?id=1153#c18
Comment 12 Konstantin Baev 2008-10-15 15:31:09 MSD
Скопировал тестовую базу, присланную нам из Питера в локальный каталог - пытался открыть 1с под wine - не получилось. Симптомы аналогичны описанным мною выше: http://bugs.etersoft.ru/show_bug.cgi?id=2599#c7 и далее
Comment 13 Konstantin Baev 2008-10-15 17:18:50 MSD
Уточняю, что на локальной базе (Питерской) проблемы проявляются при вхождении Кассиром. Если зайти администратором, то работает. Пришлите базы, которые хотя бы локально точно работают.

Возможно, у нас разные версии wine

Итог (локальный): Выяснились две разные проблемы:

1. При нахождении базы на линуксовой шаре 1cv8.exe отжирает почти весь один процессор и не работает (см. http://bugs.etersoft.ru/show_bug.cgi?id=2599#c7 )

2. Некоторые базы вешают 1с даже локально - см. http://bugs.etersoft.ru/show_bug.cgi?id=2599#c11
Comment 14 Boris Savelev 2008-10-15 17:44:44 MSD
Константин, попробуйте протестировать так же, как монтировал Денис.
Опции user и uid разные.
Убедитесь что версии wine и linux-cifs у вас с Денисом одинаковые.
Проблема у меня воспроизводилась и на демо-базе. Размер в данном случае значения не имеет.
Так же проверьте как себя ведет смонтированный ресурс при использовании опции noperm, потому что я замечал различия в работе при явном указании владельца/группы и noperm.
Comment 15 Konstantin Baev 2008-10-15 18:00:28 MSD
(In reply to comment #14)
> Константин, попробуйте протестировать так
> же, как монтировал Денис.
> Опции user и uid разные.
> Убедитесь что версии wine и linux-cifs у вас с
> Денисом одинаковые.
> Проблема у меня воспроизводилась и на
> демо-базе. Размер в данном случае значения
> не имеет.
> Так же проверьте как себя ведет
> смонтированный ресурс при использовании
> опции noperm, потому что я замечал различия в
> работе при явном указании владельца/группы
> и noperm.
> 

Смонтировать так не получается из-за настроек самбы.
Пишет: bad user name "guest"
Пришлите настройки самбы для шары на компьютере cellar

Напоминаю версии пакетов у нас:

1с - содержимое папки 1Cv81-8.1.11.67-Windows-i386

wine-1.0.9-alt24
libwine-1.0.9-alt24
linux-cifs-3.2-alt2
haspd-2.0-alt10
haspd-modules-2.0-alt10
wine-etersoft-sql-1.0.9-alt5
Comment 16 Boris Savelev 2008-10-15 18:10:02 MSD
> Смонтировать так не получается из-за
> настроек самбы.
> Пишет: bad user name "guest"
> Пришлите настройки самбы для шары на
> компьютере cellar
у Вас нет доступа к cellar?
[global]
<skip>
   security = share
<skip>
[share]
   path = /var/share
   public = yes
   writable = yes
   guest ok = yes
[sharewine]
   path = /var/local/share
   public = yes
   force user = wine
   force group = winetester
   writable = yes
   guest ok = yes
   create mask = 0775
   directory mask = 0775
Comment 17 Konstantin Baev 2008-10-15 19:16:17 MSD
(In reply to comment #14)
> Константин, попробуйте протестировать так
> же, как монтировал Денис.
> Опции user и uid разные.
> Убедитесь что версии wine и linux-cifs у вас с
> Денисом одинаковые.
> Проблема у меня воспроизводилась и на
> демо-базе. Размер в данном случае значения
> не имеет.
> Так же проверьте как себя ведет
> смонтированный ресурс при использовании
> опции noperm, потому что я замечал различия в
> работе при явном указании владельца/группы
> и noperm.
> 

Да. Воспроизвелось.
Монтировал:

cifsmount //server/base8 /home/kipruss/base -o user=guest,file_mode=0660,dir_mode=0770,noperm

и

cifsmount //server/base8 /home/mastersin/base -o user=guest,file_mode=0660,dir_mode=0770,noperm

user=guest - это нам надо из-за того, что шара с паролем. noperm на результат не влияет. Без него тоже воспроизводится.

Насчёт доступа к cellar - он есть. Я сразу почему-то не догадался...

Будем думать.
Comment 18 Евгений Синельников 2008-10-15 21:48:50 MSD
Итак, копирую письмо, в котором описал решение... Просьба внимательно просмотреть и проверить...

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

Приготовьтесь я немного опишу процесс, и всё, что мне не нравится, ибо
не тривиально всё это, особенно для клиентов...

Итак, запуск и установка вроде работают... Но первая непреодолимая
преграда - это монтирование. Мы два дня голову ломали над тем, чтобы
вместо
$ cifsmount //server/base base -ouser=guest
написать
$ cifsmount //server/base base -ouser=guest,file_mode=0660,dir_mode=0770
Если смонтировать без этих опций 1С виснет даже на этапе запуска
одного клиента, съедая при этом 99% процессора. Этот вопрос был
описан, в частности, в #2599. К сожалению, никто так и не ответил, что
такое может быть... А самое главное, как быть с этим делом клиентам?
Это надо написать большими красными буквами на коробке, если больше
нигде про это не написано...

Вторая проблема - это сама база... Странное дело, но для тестирования
хотелось бы иметь кучу разных баз, а у нас одна и то не вся
работоспособная... В тестовой базе у нас забито два пользователя -
Кассир и Администратор (Фёдоров). Так вот... Если зайти под
Администратором, то всё вроде работает, но если зайти под Кассиром
выходит сообщение о том, что склад не выбран и предлагается завершить
работу... Далее, вне зависимости от ответа, появляется сообщение в
стиле win3.11 "Запись дампа" с сообщением "Подождите, пожалуйста! Идёт
сохранение информации об ошибке для возможности последующего
анализа"...

Это ведь надо догадаться, что это нормально и никто возможно не
проверял... Но для нас это означало, что 1С вообще не работает, по
крайней мере у нас... Начали уже грешить на релизы wine - может патчи
шибко разные в наших сборках wine-1.0.9...

Такая проблема есть не только с этой базой... Такая же проблема
возникла и с базой по-меньше, которую с мигрировал kipruss@ в поисках
тестовой базы, пока разбирались с запуском 1С на нормальной базе
вообще (искали проблему, которая была в отсутсвии флагов
file_mode=0660,dir_mode=0770)... Интересен тот факт, что в Windows и
наша база с пользователем Кассир, и мигрированная база работают
нормально. Если для кассира не выбрать завершение, то выдаётся окошко
с документацией или чем-то похожим (детали можно уточнить у
kipruss@)...

Проблема третья - сама основная проблема #2599... Решена в рамках
проверки запуска 1С etercifs, но включенными LinuxExtensions. Так вот,
как я уже писал в #2563, поведение, которого мы добивались с помощью
отключения LinuxExtensions легко можно добиться с помощью опции noperm
- в этом случае авторизация полностью отдаётся на откуп серверу. В
попытке проверить, а как же оно себя будет в этом случае вести, я и
нашёл решение для текущей проблемы. Если включить LinuxExtensions (а
лучше перезагрузить модуль не выключая), а потом смонтировать шару
командой:
$ cifsmount //server/base base -ouser=guest,noperm,file_mode=0660,dir_mode=0770
То всё работает.
Кстати, user=guest - это тоже не обязательный параметр. Я его
использую, чтобы шара была с паролем. Так что минимальный вариант
выглядит так:
$ cifsmount //server/base base -onoperm,file_mode=0660,dir_mode=0770
Если монтировать от рута, то нужно иметь в виду локальный маппинг
пользователей и делать команду вида:
$ mount //server/base base
-ouid=$LOCAL_USER,gid=$LOCAL_GROUP,noperm,file_mode=0660,dir_mode=0770

В общем в альтах, а также там, где тоже есть cifsmount, как-то по
удобнее.... Хотя я никак не могу понять как можно объяснить бухгалтеру
выполение этой команды.... А также я никак не могу понять, как это
сделать на автомате, не прибегая к костылям в fstab или pam_mount... Я
думаю, что механизм должен подключать шару в момент доступа к ней...
Иначе могут быть тормоза при перезагрузке сервера или проблемах в
сетевом подключении...

Резюме. Запустить удалось, но не все варианты оттестированы. Есть
проблемы при работе самой 1С. Есть проблемы доступа к разным базам под
разными пользователями.
Comment 19 Boris Savelev 2008-10-16 00:08:03 MSD
> cifsmount //server/base8 /home/kipruss/base -o
> user=guest,file_mode=0660,dir_mode=0770,noperm
смысл использования file_mode, dir_mode и noperm одновременно?
раньше noperm сбрасывал права на root:root(Х777). сейчас что-то поменялось?
Comment 20 Konstantin Baev 2008-10-16 00:17:29 MSD
(In reply to comment #19)
> > cifsmount //server/base8 /home/kipruss/base -o
> > user=guest,file_mode=0660,dir_mode=0770,noperm
> смысл использования file_mode, dir_mode и noperm
> одновременно?
> раньше noperm сбрасывал права на root:root(Х777).
> сейчас что-то поменялось?
> 

Сперва тестировал без noperm. Потом просто добавил и не удалил остальное.

P.S. Поскольку в etercifs убрано отключение LinuxExtersions, монтирование происходит с -o noperm всегда. В итоге будет достаточно команды:

cifsmount //server/base /path/to/local/base

в случае шары без пароля. А такую команду уже можно попытаться объяснить даже бухгалтеру.

Но это пока предположение. Я пока не знаю замеченных Евгением проблем с разными пользователями.
Comment 21 Евгений Синельников 2008-10-16 01:17:25 MSD
(In reply to comment #19)
> > cifsmount //server/base8 /home/kipruss/base -o
> > user=guest,file_mode=0660,dir_mode=0770,noperm
> смысл использования file_mode, dir_mode и noperm
> одновременно?
> раньше noperm сбрасывал права на root:root(Х777).
> сейчас что-то поменялось?
> 

Вы не внимательно прочли то, что я написал:

"Так вот, как я уже писал в #2563, поведение, которого мы добивались с помощью
отключения LinuxExtensions легко можно добиться с помощью опции noperm
- в этом случае авторизация полностью отдаётся ___на_откуп_серверу___"

Это означает, что в случае, если проставлен noperm проверка uid'ов и gid'ов, присылаемых сервером, на уровне драйвера отключена, и соответственно все проблемы прав доступа решаются при запросах на сервере... Вы полагаете, что file_mode, dir_mode отвечают за проверку прав доступа на уровне драйвера клиента?

noperm сбрасывает права на root:root(Х777, X775, X755 и т.д.) только если монтировать это рутом... причём нужная маска как раз и выставляется с помощью дополнительных флагов... Если же монтировать, с помощью суидного cifsmount, то получаем:
[sin@tartarus ~]$ cifsmount //server/base8 base8 -ouser=guest,file_mode=0660,dir_mode=0770
[sin@tartarus ~]$ mount|grep cifs
//server/base8 on /home/sin/base8 type cifs (rw,mand,nosuid,nodev,user=sin)
[sin@tartarus ~]$ ls -l ~/base8
итого 348944
-rwxrwxr-x 1 sin sin 356483072 Окт 15 20:57 1Cv8.1CD
-rw-rw-r-- 1 sin sin         0 Окт 15 20:47 1Cv8.1CL
drwxrwxr-x 2 sin sin         0 Окт 14 19:55 1Cv8FTxt
drwxrwxr-x 2 sin sin         0 Окт 14 20:36 1Cv8Log
-rwxrwxr-x 1 sin sin    162538 Авг 18 13:42 1Cv8.pfl
-rwxrw-r-- 1 sin sin    323584 Окт 15 20:58 1Cv8tmp.1CD
-rw-rw-r-- 1 sin sin         0 Окт 15 20:47 1Cv8tmp.1CL

Если монтировать от рута то этого же эффекта можно добиться командой:
$ mount //server/base base
-ouid=$LOCAL_USER,gid=$LOCAL_GROUP,noperm,file_mode=0660,dir_mode=0770
Comment 22 Евгений Синельников 2008-10-16 01:28:21 MSD
(In reply to comment #20)
> (In reply to comment #19)
> > > cifsmount //server/base8 /home/kipruss/base -o
> > > user=guest,file_mode=0660,dir_mode=0770,noperm
> > смысл использования file_mode, dir_mode и noperm
> > одновременно?
> > раньше noperm сбрасывал права на root:root(Х777).
> > сейчас что-то поменялось?
> > 
> 
> Сперва тестировал без noperm. Потом просто
> добавил и не удалил остальное.
> 
> P.S. Поскольку в etercifs убрано отключение

etercifs - это светлое будущее, к кторому нужно ещё подготовиться... Во-первых, решив проблему проверки наличия нашего драйвера; во-вторых, изменив wine на использование новых значений флагов и проставив правильные на то зависимости; во-третьих, исправив кучу проблем, в частности oplocks...

Так что сейчас, предлагаю оторвать LinuxExtensions в linux-cifs и составить подробную документацию по монтированию... Возможно стоит сделать скрипты и подумать о процессе автомазации монтирования с помоьщью того же automount.

> LinuxExtersions, монтирование происходит с -o noperm
> всегда. В итоге будет достаточно команды:
> 
> cifsmount //server/base /path/to/local/base
> 
> в случае шары без пароля. А такую команду
> уже можно попытаться объяснить даже
> бухгалтеру.
> 

Чушь... На надо такое предлагать конечным пользователям... Только по желанию, но вы пока альтернатив не предложили.. Руками каждый раз - это не дело... В крайнем случае описание для внедренцев, которые сделают костыли в pam_mount для таких не завершённых решений...

> Но это пока предположение. Я пока не знаю
> замеченных Евгением проблем с разными
> пользователями.
> 

Каких проблем с разными пользователями? Ты о чём? Чего ты не знаешь?
Comment 23 Konstantin Baev 2008-10-16 01:47:58 MSD
(In reply to comment #22)
> Каких проблем с разными пользователями? Ты
> о чём? Чего ты не знаешь?
> 

Вот об этом я хотел спросить поподробнее:

(In reply to comment #18)

> Есть проблемы
> доступа к разным базам под
> разными пользователями.
> 

Если, конечно, ты не имел в виду "Кассира" и "Админа". Об этом я сто-то не подумал тогда.
Comment 24 Евгений Синельников 2008-10-16 01:50:22 MSD
> (In reply to comment #18)
> 
> > Есть проблемы
> > доступа к разным базам под
> > разными пользователями.
> > 
> 
> Если, конечно, ты не имел в виду "Кассира" и
> "Админа". Об этом я сто-то не подумал тогда.
> 

Именно это и имел в виду...
Comment 25 Konstantin Baev 2008-10-16 16:03:22 MSD
Created attachment 792 [details]
Таблица тестирования запуска и совместной работы 1cv8.1

Протестировал запускаемость 1с на некотором тестовом покрытии. Перебирал разные параметры: клиент, сервер, наличие/отсутствие некоторых параметров монтирования, состояние LinuxExtensions

Таблица - в приложении pdf

Выводы:
1. На виндовой шаре флаг LinuxExtensions не имеет смысла. Ни разу не удалось запустить программу
2. При отключенном LinuxExtensions на самбе 1с совместно работает только в случае L → W
3. При отключенном LinuxExtensions, если нет параметра file_mode, то программа виснет
Comment 26 Vitaly Lipatov 2008-10-16 17:03:40 MSD
(In reply to comment #25)

> 1. На виндовой шаре флаг LinuxExtensions не имеет
> смысла. Ни разу не удалось запустить
> программу
Это понятно, потому что сервер не поддерживает их (они на самом деле Unix Extensions, просто в CIFS их назвали немного по-левому).

А положительные выводы есть?
Comment 27 Konstantin Baev 2008-10-16 17:12:57 MSD
(In reply to comment #26)

> 
> А положительные выводы есть?
> 

Положительный вывод - то, что хоть как-то, пока только на самбе, но совместная работа возможна. Кроме описанных Женей в http://bugs.etersoft.ru/show_bug.cgi?id=2599#c18 других положительных выводов пока нет.

Если в Питере все же удавалось запускать 1сv8.1 на виндовой шаре, то хотелось бы узнать об этом поподробнее.
Comment 28 Konstantin Baev 2008-10-20 14:58:55 MSD
(In reply to comment #8)
> Весь файл вывода out1:
> 

Ещё раз обращаю внимание на проблему:

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

Вот мы открываем файл, получаем дескриптор

> open("/home/kipruss/.wine/dosdevices/e:/home/kipruss/base",
> O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 97
> fstat64(97, {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0
> fcntl64(97, F_SETFD, FD_CLOEXEC)        = 0
> getdents64(97, /* 9 entries */, 16384)  = 272
> close(97)                               = 0

... закрываем файловый дескриптор (в данном случае - 97).

(тут убрал часть кода, в которой нет упоминания о файловом дескрипторе 97)

Далее почему-то происходит попытка работы с уже закрытым файловым дескриптором и почему-то это не появляется соответствующая ошибка.

> msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS,
> {97}}, msg_flags=0}, 0) = 4
> fcntl64(97, F_SETFD, FD_CLOEXEC)        = 0
> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> fstat64(97, {st_mode=S_IFREG|S_ISGID|0767, st_size=162538, ...}) = 0
> rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> _llseek(97, 162538, [162538], SEEK_SET) = 0
> gettimeofday({1224058659, 556558}, NULL) = 0
> time(NULL)                              = 1224058659
> time(NULL)                              = 1224058659
> rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
> write(3,
> "'\0\0\0\0\0\0\0\0\0\0\0\200\4\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0"..., 64) =
> 64
> read(5,
> "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) =
> 64
> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> gettimeofday({1224058659, 556962}, NULL) = 0
> time(NULL)                              = 1224058659
> rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> _llseek(97, 0, [0], SEEK_SET)           = 0
> rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily
> unavailable)
> poll([{fd=97, events=POLLIN}], 1, -1)   = 1 ([{fd=97, revents=POLLIN}])
> read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily
> unavailable)
> 

Существует предположение, что поскольку для старых ядер такого не было, то, видимо, в новом cifs появилась такая проблема.
Comment 29 Vitaly Lipatov 2008-10-20 15:25:46 MSD
(In reply to comment #28)
> (In reply to comment #8)
> > Весь файл вывода out1:
> > 
> 
> Ещё раз обращаю внимание на проблему:
> 
> попробую описать словами ту часть кода, где
> возникают непонятные вещи:
> 
> Вот мы открываем файл, получаем дескриптор
> 
> > open("/home/kipruss/.wine/dosdevices/e:/home/kipruss/base",
> > O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 97
Но это же не файл.

> Далее почему-то происходит попытка работы
> с уже закрытым файловым дескриптором и
> почему-то это не появляется
> соответствующая ошибка.
> 
> > msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS,
> > {97}}, msg_flags=0}, 0) = 4
> > fcntl64(97, F_SETFD, FD_CLOEXEC)        = 0
> > rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> > fstat64(97, {st_mode=S_IFREG|S_ISGID|0767, st_size=162538, ...}) = 0
> > rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
> > rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> > _llseek(97, 162538, [162538], SEEK_SET) = 0
Похоже, всё же пропустили, как он открылся.

...
> > read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily
> > unavailable)
> > poll([{fd=97, events=POLLIN}], 1, -1)   = 1 ([{fd=97, revents=POLLIN}])
> > read(97, 0x33e50c, 16)                  = -1 EAGAIN (Resource temporarily
> > unavailable)
> > 
> 
> Существует предположение, что поскольку
> для старых ядер такого не было, то, видимо, в
> новом cifs появилась такая проблема.
Возможно изменился режим блокирование, для этих файлов блокировка стала обязательной? Легко же посмотреть, в каком случае модуль CIFS может вернуть EAGAIN из вызова read.
 

Comment 30 Konstantin Baev 2008-10-22 18:57:29 MSD
Created attachment 813 [details]
Обновленая таблица тестирования запуска и совместной работы 1cv8.1

Добавлено:
L → W → L : Означает, что проверены все варианты: L → W, W → L, L → L
Comment 31 Vitaly Lipatov 2008-11-15 15:50:47 MSK
Перевешиваю для тестирования. Тут слишком много написали, пора закрывать.
Comment 32 Денис Баранов 2008-11-15 18:42:03 MSK
Проверил на последних сборках. Кажется от проблем в CIFS с 1Cv81 избавились наконец то.
Проверил L>W, W>L, L>L. Удалось зайти во всех случаях.

wine-etersoft-sql-1.0.9-alt0.M41.13
libwine-1.0.9-alt0.M41.34.1
wine-1.0.9-alt0.M41.34.1
libwine-gl-1.0.9-alt0.M41.34.1

etercifs-3.8.0-alt0.M41.4