Bug 3179

Summary: 1C 7.7 SQL: Не подключиться, если в базе уже есть Windows-пользователи
Product: CIFS@Etersoft Reporter: Глеб Кордюков <sonner>
Component: блокировки файлов и доступAssignee: Konstantin Baev <kipruss>
Status: CLOSED WORKSFORME QA Contact:
Severity: blocker    
Priority: P2 CC: lav, sin, stas
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: CentOS/RHEL/Scientific   
Whiteboard:
Заявки RT: 9280 Связано с:
Дата напоминания:
Bug Depends on: 3053    
Bug Blocks:    
Attachments: Лог падения SELTA под Windows

Description Глеб Кордюков 2008-12-30 16:59:45 MSK
Базу монтируем: mount.cifs //SQLSERVER/1C /media/temp -o iocharset=koi8-r,username=1c_mounter,workgroup=ascon,ip=10.1.5.10,noperm,forcemand
Базу используют клиенты с windows, при подключении с линукса через cifs - выдает "Доступ к базе данных на сервере возможен только из одного каталога информационной базы!"
Comment 1 Konstantin Baev 2009-01-06 16:11:48 MSK
Пытаюсь воспроизвести - не получается...

[root@valhalla 1C]# cat /proc/fs/cifs/LinuxExtensionsEnabled
1

[kipruss@valhalla mnt]$ rpm -qa | grep wine && rpm -q etercifs
wine-1.0.9-alt37
wine-etersoft-sql-1.0.9-alt15
libwine-1.0.9-alt37
etercifs-4.0.1-alt3

Монтировал по-разному:

cifsmount //server/base7 ~/base -o noperm,forcemand,file_mode=0660,dir_mode=0770
cifsmount //server/base7 ~/base -o noperm,forcemand
sudo mount -t cifs //server/base7 ~/base -o noperm,forcemand

И пробовал также без forcemand и вместо mount -t cifs пробовал mount.cifs, хотя это то же самое. Есть разница в группе, которой принадлежит файл 1Cv7.MD

или (при использовании cifsmount)

[kipruss@valhalla ~]$ ll base | grep 1Cv7.MD
-rw-r-----  1 kipruss kipruss 13824512 Янв  6 15:42 1Cv7.MD

или

[kipruss@valhalla ~]$ ll base | grep 1Cv7.MD
-rw-r-----  1 kipruss ftpadmin 13824512 Янв  6 15:42 1Cv7.MD

Запускал 1с7.7 в Windows XP, затем в ALTLinux в wine и наоборот - ошибку не поймал ни разу.

-------

Попутно поборолся с "Ошибкой загрузки метаданных". По адресу http://www.etersoft.ru/content/view/102/83/ есть такой текст

    * Q: При запуске 1С возникает ошибка “Ошибка загрузки метаданных”.
    * A: Проверьте права на чтение файла 1cv7.md. Также возможно он повреждён или отсутствует.

На самом деле у нас почему-то как раз был файл 1cv7.md (возможно, после каких-то предыдущих экспериментов, возможно с отключенными LinuxExtensions - это догадки), но это не спасало, так как выяснилось при помощи WINEDIAG=+file, что требуется файл 1Cv7.MD, а поскольку LinuxExtensionsEnabled, то это важно. Так что надо бы и FAQ поправить. Багу сейчас повешу, если найду куда.

Примечание: (кусок вывода запуска 1С7.7 с WINEDIAG=+file)

trace:file:CreateFileW L"E:\\home\\kipruss\\base\\1Cv7.MD" GENERIC_READ FILE_SHARE_READ FILE_SHARE_WRITE  creation 3 attributes 0x80
trace:file:RtlDosPathNameToNtPathName_U (L"E:\\home\\kipruss\\base\\1Cv7.MD",0x33f7fc,(nil),(nil))
trace:file:RtlGetFullPathName_U (L"E:\\home\\kipruss\\base\\1Cv7.MD" 520 0x33f570 (nil))
trace:file:wine_nt_to_unix_file_name L"\\??\\E:\\home\\kipruss\\base\\1Cv7.MD" -> "/home/kipruss/.wine/dosdevices/e:/home/kipruss/base/1Cv7.MD"
warn:file:CreateFileW Unable to create file L"E:\\home\\kipruss\\base\\1Cv7.MD" (status c000000f)
Comment 2 Konstantin Baev 2009-01-06 16:23:47 MSK
Похоже не совсем в ту багу написал. Я реагировал на http://rt.etersoft.ru/Ticket/Display.html?id=9356, а не http://rt.etersoft.ru/Ticket/Display.html?id=9280

Разница в шаре. В-общем я тестировал на Самбе.
Comment 3 Vitaly Lipatov 2009-01-06 16:27:55 MSK
(In reply to comment #2)
> Похоже не совсем в ту багу написал. Я
Надо бы тогда написать в ту багу, учтя, что регистр букв не должен ни на что влиять.
 
> Разница в шаре. В-общем я тестировал на
> Самбе.
Да, возможно. Там наверняка Windows-сервер.
Тогда не ясно, почему надо было тестировать с
/proc/fs/cifs/LinuxExtensionsEnabled = 1 
Comment 4 Konstantin Baev 2009-01-06 17:27:05 MSK
(In reply to comment #3)
> (In reply to comment #2)
> > Похоже не совсем в ту багу написал. Я
> Надо бы тогда написать в ту багу, учтя, что
> регистр букв не должен ни на что влиять.
> 
> > Разница в шаре. В-общем я тестировал на
> > Самбе.
> Да, возможно. Там наверняка Windows-сервер.
> Тогда не ясно, почему надо было тестировать
> с
> /proc/fs/cifs/LinuxExtensionsEnabled = 1 
> 

1. Написал ссылку в багу 3053
2. Насчёт регистра файла md - я уже и сам не могу это воспроизвести. Возможно, это что-то локальное тут у нас. Предлагаю пока переключиться на более важные вещи.
3. На виндовой шаре тоже проблема не воспроизводится
Comment 5 Vitaly Lipatov 2009-01-06 19:18:10 MSK
(In reply to comment #1)
> Пытаюсь воспроизвести - не получается...
Суть была в том, что 1С подключалась к SQL-серверу. Ты проверял без этого, поэтому и не воспроизвелось.

... 
> Попутно поборолся с "Ошибкой загрузки
> метаданных". По адресу
...

> На самом деле у нас почему-то как раз был
> файл 1cv7.md (возможно, после каких-то
> предыдущих экспериментов, возможно с
> отключенными LinuxExtensions - это догадки), но это
> не спасало, так как выяснилось при помощи
> WINEDIAG=+file, что требуется файл 1Cv7.MD, а
> поскольку LinuxExtensionsEnabled, то это важно. Так
Не может быть важно, поскольку для Wine (если нет баги с cifs + stat, уже закрытой в 4.0.1) безразличен регистр.


Comment 6 Konstantin Baev 2009-01-06 19:33:57 MSK
(In reply to comment #5)
> Суть была в том, что 1С подключалась к
> SQL-серверу. Ты проверял без этого, поэтому и
> не воспроизвелось.

А в случае работы с SQL-сервером тоже надо монтировать шару через cifs? Я этого не понимаю.
Comment 7 Vitaly Lipatov 2009-01-06 21:32:52 MSK
(In reply to comment #6)
> А в случае работы с SQL-сервером тоже надо
> монтировать шару через cifs? Я этого не
> понимаю.
Всё очень просто: в SQL хранятся таблицы.
Но ещё ещё файл MD, содержащий формы интерфейса и отчётов, программные модули.
Не говоря о том, что SYSLOG (журнал событий) тоже в файлах
остаётся.
Таким образом при работе через SQL только большинство таблиц
в базе, всё остальное на месте и должно разделяться через файлы.

Ещё у меня есть предположение, что тот способ, которым вы проверяете,
что 1С работает, отличается от того, в котором работают клиенты.
8-го будем проверять.

Comment 8 Konstantin Baev 2009-01-06 22:57:25 MSK
(In reply to comment #7)
> Ещё у меня есть предположение, что тот
> способ, которым вы проверяете,
> что 1С работает, отличается от того, в
> котором работают клиенты.
> 8-го будем проверять.
> 
В случае SQL-сервера мы и не можем ничего проверить по причине отсутствия SQL-сервера.
Comment 9 Vitaly Lipatov 2009-01-07 21:58:13 MSK
(In reply to comment #8)
> В случае SQL-сервера мы и не можем ничего
> проверить по причине отсутствия SQL-сервера.
Ну поставить SELTA и PostgreSQL не так сложно.

Comment 10 Konstantin Baev 2009-01-13 19:43:03 MSK
(In reply to comment #9)
> (In reply to comment #8)
> > В случае SQL-сервера мы и не можем ничего
> > проверить по причине отсутствия SQL-сервера.
> Ну поставить SELTA и PostgreSQL не так сложно.
> 

Пробую ставить SELTA. Пока никак. Версии пробовал 1.0.4 и 1.0.5

[kipruss@valhalla /]$ rpm -qa | grep wine
wine-etersoft-sql-1.0.9-alt15
libwine-1.0.9-alt39
wine-1.0.9-alt39

[kipruss@valhalla Downloads]$ wine start selta5.msi
[kipruss@valhalla Downloads]$ fixme:advapi:RegisterEventSourceA ((null),"MsiInstaller"): stub
fixme:advapi:RegisterEventSourceW (L"",L"MsiInstaller"): stub
fixme:advapi:ReportEventA (0xcafe4242,0x0001,0x0000,0x000003f5,(nil),0x0006,0x00000000,0x33e4b0,(nil)): stub
fixme:advapi:ReportEventW (0xcafe4242,0x0001,0x0000,0x000003f5,(nil),0x0006,0x00000000,0x12f2d0,(nil)): stub
err:eventlog:ReportEventW L"=====================================================\r\nException code: C0000005 ACCESS_VIOLATION\r\nFunction: 0x0\r\n=====================================================\r\n\r\nRegisters:\r\nEAX:00000000  EBX:004BEF2D  ECX:0033E4EC  EDX:7BC96568  ESI:0033E674  EDI:00000000\r\nCS:EIP:0073:00000000 "...
err:eventlog:ReportEventW L""
err:eventlog:ReportEventW L""
err:eventlog:ReportEventW L""
err:eventlog:ReportEventW L""
err:eventlog:ReportEventW L""
fixme:advapi:DeregisterEventSource (0xcafe4242) stub

[kipruss@valhalla Downloads]$
Comment 11 Konstantin Baev 2009-01-13 19:45:45 MSK
содержимое selta.log

=== Verbose logging started: 13.01.2009  19:44:37  Build type: SHIP ANSI 2.00.2600.02  Calling process: C:\windows\system32\msiexec.exe ===
=====================================================
Exception code: C0000005 ACCESS_VIOLATION
Function: 0x0
=====================================================

Registers:
EAX:00000000  EBX:004BEF2D  ECX:0033E4EC  EDX:7BC96568  ESI:0033E674  EDI:00000000
CS:EIP:0073:00000000 SS:ESP:007B:0033E4FC  EBP:00000000
DS:007B  ES:007B  FS:0033  GS:003B
Flags:00010202

Call stack:
Address   Frame

=== Verbose logging stopped: 13.01.2009  19:44:37 ===
Comment 12 Konstantin Baev 2009-01-14 13:02:00 MSK
Установил SELTA, Postgres

«Доступ к базе данных на сервере возможен только из одного каталога информационной базы!» у меня появляется без всякого монтирования по cifs. Все - локально. Вывод strace большой слишком, если надо перешлю по почте. Пока посмотрю сам.
Comment 13 Konstantin Baev 2009-01-14 15:19:01 MSK
(In reply to comment #12)
Резюмирую сегодняшние результаты тестирования:

Шара - на Linux-компьютере, расшарена по Samba. Конфиг:

[baseselta]
  path = /home/kipruss/baseselta
  public = yes
  browseable = yes
  writable = yes
  guest ok = yes
  force user = kipruss

в [global] все стандартно.

Линукс-клиент с 1С7.7, SELTA, Postgres
Windows-клиент с 1С7.7, SELTA

1. Запуск L -> W
результат: Доступ к базе данных на сервере возможен только из одного каталога информационной базы

2. Запуск W -> L
тут очень интересно всё.
при первом запуске в линуксе "Ошибка загрузки метаданных"
при втором 1С просто падает без всяких сообщений
при третьем "Ошибка при запуске журнала регистрации"
И после этого в Винде пропадает информация о пользователе. Список активных пользователей пуст
Я это три раза проверил подрял. Именно такая последовательность!

TODO: Копать глубже с strace, например.

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

TODO: Смонтировать по cifs и посмотреть. Также посмотреть на 2 линукс-клиента как локально, так и через cifs.
Comment 14 Vitaly Lipatov 2009-01-14 18:04:25 MSK
(In reply to comment #13)
> Примечание: Линуксовый клиент обращается к
> каталогу базы напрямую, локально, без
> монтирования по cifs.
Если при этом к базе идёт и со стороны Самбы, то 
все результаты теряют значимость в связи с неверной конфигурацией стенда.
Comment 15 Konstantin Baev 2009-01-15 18:52:40 MSK
Протестировал заново.
Монтировал свою шару так: (первый случай)
cifsmount //valhalla/baseselta ~/base -o noperm,file_mode=0660,dir_mode=0770

затем, во втором и третьем случае, добавлял forcemand и nounix (учитывая сказанное в http://wiki.office.etersoft.ru/testing/cifs/dostup )

Запуск L -> W (во всех случаях монтирования)
Результат: все нормально, видны оба пользователя и там и тут.

Запуск W -> L (первый случай)
Результат: 1с запускается, но в Виндовс не видно пользователя Linux в списке активных пользователей.

Запуск W -> L (первый случай {forcemand})
Результат: все нормально, видны оба пользователя и там и тут.

Запуск W -> L (первый случай {nounix})
Результат: Ошибка загрузки метаданных

Вывод: с параметром nounix я не был бы так уверен. А вот forcemand в моем случае помогает.

====

Дотестировался до того, что на винде перестала запускаться SELTA. 

Подпись ошибки:
AppName: selta.exe	 AppVer: 0.0.0.0	 ModName: msvcrt.dll
ModVer: 7.0.2600.2180	 Offset: 000360c1

Если надо, заведу отдельную багу.
Comment 16 Konstantin Baev 2009-01-15 18:53:14 MSK
Created attachment 1024 [details]
Лог падения SELTA под Windows
Comment 17 Konstantin Baev 2009-01-15 18:53:53 MSK
Переустановка SELTA не помогает
Comment 18 Konstantin Baev 2009-01-15 19:43:10 MSK
Обращаю внимание на строки, касающиеся файла 1Cv7.LCK в логах, приведенных в http://rt.etersoft.ru/Ticket/Attachment/136327/63777/wine.log к тикету http://rt.etersoft.ru/Ticket/Display.html?id=9280

trace:file:wine_nt_to_unix_file_name L"\\??\\E:\\temp\\TradeCadCamWrk\\usr-kotrehov\\1Cv7.LCK" -> "/home/gorbuntsov/.wine/dosdevices/e:/temp/TradeCadCamWrk/usr-kotrehov/1Cv7.LCK"
warn:file:CreateFileW Unable to create file L"E:\\temp\\TradeCadCamWrk\\usr-kotrehov\\1Cv7.LCK" (status c0000022)
Comment 19 Vitaly Lipatov 2009-01-15 19:46:38 MSK
(In reply to comment #16)
> Created an attachment (id=1024) [details]
> Лог падения SELTA под Windows
SELTA стала падать только под Windows?
Думаю, надо завести багу, если переустановка не помогает, и решить её со Стасом. Не может быть из-за вируса?
Comment 20 Konstantin Baev 2009-01-15 20:01:54 MSK
(In reply to comment #19)
> Не может быть из-за вируса?
> 

Вряд ли. Windows поставили пару дней назад и используется она только для запуска на рей rect и 1c. Сейчас проверяю возможный конфликт rect с SELTA.
Comment 21 Konstantin Baev 2009-01-15 20:39:30 MSK
(In reply to comment #19)
> 
> Если надо, заведу отдельную багу.
> 

Завел. http://bugs.etersoft.ru/show_bug.cgi?id=3253

С проблемами SELTA - туда.