Bug 4002

Summary: Нет совместной работы по NFS при подключении одних пользователей терминально, других - по сети
Product: WINE@Etersoft Reporter: Vitaly Lipatov <lav>
Component: Сетевые файловые системыAssignee: Евгений Синельников <sin>
Status: CLOSED FIXED QA Contact: Евгений Савин <horch>
Severity: critical    
Priority: P2 CC: baraka, boris, kostenko.e, lav, night
Version: 1.0.10   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: 10501 Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 3589, 4046    

Description Vitaly Lipatov 2009-06-04 23:27:26 MSD
Нет совместной работы по NFS при подключении одних пользователей терминально, других - по сети.
Ubuntu Hardy LTS 8.04.x

ядро на NFS-сервере и клиентах штатное,
2.6.24.x-generic и 2.6.24.x-server
схема следующая:

- часть клиентов с Thinstation через XDMCP/Windows
через NX
- часть клиентов с Ubuntu Hardy 8.04.x через NFS+LDAP

если в базу 1С 7.7 зашли "терминальные" клиенты,
то при попытке доступа к базе через NFS
выдается сообщение, указанное в начале
тикета:

"Программа была завершена аварийно. Для
восстановления индексных файлов
запустите программу в монопольном режиме"
Comment 1 Денис Баранов 2009-06-05 18:35:30 MSD
Удалось воспроизвести.
Использовался как сервер ALTLinux, по nfs подключались с Ubuntu, как терминальные клиенты было подключение с Windows по nx.
В итоге:
 - если первым заходит клиент по nfs, то все в порядке.
 - если первый клиент с nx (т.е. для по идее локальный вход получается), клиент с nfs уже войти не может - появляется ошибка приведенная выше.
Comment 2 Денис Баранов 2009-06-05 19:52:28 MSD
Если на сервере для пользователей, подключающихся терминально, смонтировать базу так же как для остальных, то все равно возникает ошибка.
Comment 3 Евгений Синельников 2009-06-09 23:56:40 MSD
В общем, багу я повторил.
Неплохо бы страничку было составить про неё на wiki
Проблемы повторения:
1) # control portmap server
2) sgid не должен присутствовать в каталогах и файлах шары
3) nfslock должен быть запущен как на сервере, так и на клиентах.

У меня никаких ошибок не выпадает, просто после выбора базы программа завершается вот с таким трейсом на WINEDEBUG=+file
...
trace:file:FindNextFileW returning L"1Cv7.LCK" (L"")
trace:file:CreateFileW L"X:\\base\\1Cv7.LCK" GENERIC_READ GENERIC_WRITE FILE_SHARE_READ FILE_SHARE_WRITE  creation 3 attributes 0x80
trace:file:RtlDosPathNameToNtPathName_U (L"X:\\base\\1Cv7.LCK",0x33f924,(nil),(nil))
trace:file:RtlGetFullPathName_U (L"X:\\base\\1Cv7.LCK" 520 0x33f678 (nil))
trace:file:wine_nt_to_unix_file_name L"\\??\\X:\\base\\1Cv7.LCK" -> "/home/test/.wine/dosdevices/x:/base/1Cv7.LCK"
warn:file:CreateFileW Unable to create file L"X:\\base\\1Cv7.LCK" (status c0000022)
trace:file:CreateFileW returning 0xffffffff
trace:file:DeleteFileW L"X:\\base\\1Cv7.LCK"
trace:file:RtlDosPathNameToNtPathName_U (L"X:\\base\\1Cv7.LCK",0x33fa48,(nil),(nil))
trace:file:RtlGetFullPathName_U (L"X:\\base\\1Cv7.LCK" 520 0x33f7dc (nil))
trace:file:wine_nt_to_unix_file_name L"\\??\\X:\\base\\1Cv7.LCK" -> "/home/test/.wine/dosdevices/x:/base/1Cv7.LCK"

Да... NX тут не причём, проблема в NFS... Как вариант, стоит попробовать перенести общий каталог на третий хост... Костыль, но проверить стоит.
Comment 4 Евгений Синельников 2009-06-11 17:22:33 MSD
При поиске проблемы обнаружена странная ошибка:
при локальном запуске 1С7.7 из-под разных пользователей не удаётся начать совместную работа. Второй пользователь закрывается с "ошибкой загрузки журнала регистрации".

Версия wine:
wine-etersoft-network-1.0.10-alt15.M41.16
wine-etersoft-1.0.10-alt22.M41.23

Я использую рабочий wine? Дело в том, что в каталоге дистрибутива лежит версия, с которой у меня тоже возникли проблемы:
http://ftp.etersoft.ru/pub/Etersoft/LINUX@Etersoft/4.1/branch/files/i586/RPMS.nonfree/
Comment 5 Евгений Синельников 2009-06-11 20:20:49 MSD
Проблему нашёл. Жаль, что меня вчера никто не поправил. Второй пункт был ошибочным:
2) sgid не должен присутствовать в каталогах и
файлах шары

 sgid _должен_ присутствовать для каталогов,
 но _не_должен_ присутствовать для файлов.

Итак, всё завелось... Ошибка повторилась...

НО, периодически нормальная конфигурация "ломается", и восстанавливается только копированием старой версии базы... Выглядит это так:

1) после завершения 1C перестаёт запускаться на базе - просто отваливается. Лог показывает, что не находится файл 1Cv7.LCK:
...
trace:file:append_entry long L"SC13.CDX" short L"" mask L"1Cv7.LCK"
trace:file:match_filename (L"SC13.CDX", L"1Cv7.LCK")
trace:file:append_entry long L"dt657.dbf" short L"" mask L"1Cv7.LCK"
trace:file:match_filename (L"dt657.dbf", L"1Cv7.LCK")
trace:file:NtQueryDirectoryFile => c000000f (0)
trace:file:CreateFileW L"X:\\1Cv7.LCK" GENERIC_READ GENERIC_WRITE FILE_SHARE_READ FILE_SHARE_WRITE  creation 3 attributes 0x80
trace:file:RtlDosPathNameToNtPathName_U (L"X:\\1Cv7.LCK",0x33f908,(nil),(nil))
trace:file:RtlGetFullPathName_U (L"X:\\1Cv7.LCK" 520 0x33f64c (nil))
warn:file:wine_nt_to_unix_file_name L"1Cv7.LCK" not found in /home/mastersin/.wine/dosdevices/x:
warn:file:CreateFileW Unable to create file L"X:\\1Cv7.LCK" (status c0000034)
trace:file:CreateFileW returning 0xffffffff
trace:file:DeleteFileW L"X:\\1Cv7.LCK"
trace:file:RtlDosPathNameToNtPathName_U (L"X:\\1Cv7.LCK",0x33fa2c,(nil),(nil))
trace:file:RtlGetFullPathName_U (L"X:\\1Cv7.LCK" 520 0x33f7b0 (nil))
warn:file:wine_nt_to_unix_file_name L"1Cv7.LCK" not found in /home/mastersin/.wine/dosdevices/x:

2) Затем, если создать этот файл вручную, после запуска программа уходит в backtrace:

trace:file:append_entry long L"SC13.CDX" short L"" mask L"1Cv7.LCK"
trace:file:match_filename (L"SC13.CDX", L"1Cv7.LCK")
trace:file:append_entry long L"dt657.dbf" short L"" mask L"1Cv7.LCK"
trace:file:match_filename (L"dt657.dbf", L"1Cv7.LCK")
trace:file:NtQueryDirectoryFile => c000000f (0)
trace:file:CreateFileW L"X:\\1Cv7.LCK" GENERIC_READ GENERIC_WRITE FILE_SHARE_READ FILE_SHARE_WRITE  creation 3 attributes 0x80
trace:file:RtlDosPathNameToNtPathName_U (L"X:\\1Cv7.LCK",0x33f908,(nil),(nil))
trace:file:RtlGetFullPathName_U (L"X:\\1Cv7.LCK" 520 0x33f64c (nil))
warn:file:wine_nt_to_unix_file_name L"1Cv7.LCK" not found in /home/mastersin/.wine/dosdevices/x:
warn:file:CreateFileW Unable to create file L"X:\\1Cv7.LCK" (status c0000034)
trace:file:CreateFileW returning 0xffffffff
trace:file:DeleteFileW L"X:\\1Cv7.LCK"
trace:file:RtlDosPathNameToNtPathName_U (L"X:\\1Cv7.LCK",0x33fa2c,(nil),(nil))
trace:file:RtlGetFullPathName_U (L"X:\\1Cv7.LCK" 520 0x33f7b0 (nil))
warn:file:wine_nt_to_unix_file_name L"1Cv7.LCK" not found in /home/mastersin/.wine/dosdevices/x:

[mastersin@valhalla ~]$ cat problem.1c
trace:file:match_filename (L"mspatcha.dll", L"winedbg.exe")
trace:file:NtQueryDirectoryFile => c000000f (0)
trace:file:GetLongPathNameW not found L"C:\\windows\\system32\\winedbg.exe"!
trace:file:RtlGetFullPathName_U (L"C:\\windows\\system32\\winedbg.exe" 520 0x31e834 (nil))
Unhandled exception: page fault on read access to 0x00000190 in 32-bit code (0x1f31a540).
Register dump:
 CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
 EIP:1f31a540 ESP:0031f9e4 EBP:0031fa54 EFLAGS:00010206(   - 00      - RIP1)
 EAX:0031f9fc EBX:00000000 ECX:0000015c EDX:c0000022
 ESI:0000015c EDI:010eb350
Stack dump:
0x0031f9e4:  2207a665 00000000 010eb350 00436358
0x0031f9f4:  ffffffff 01066688 5f4d1c58 5f4d1c58
0x0031fa04:  7bc33e81 01083460 0000000a 010eb350
0x0031fa14:  7bc3353f 0031fa48 220d9520 00000002
0x0031fa24:  2207c15b 010eb350 00436358 ffffffff
0x0031fa34:  5f401809 5f4d0088 ffffffff 010eb350
Backtrace:
=>0 0x1f31a540 ?GetStringProp@CProfile7@@QBEABVCString@@H@Z() in frame (0x0031fa54)
  1 0x2207b57d in seven (+0x7b57d) (0x0033faf0)
  2 0x004093b7 in 1cv7s (+0x93b7) (0x0033fd78)
  3 0x0040512b in 1cv7s (+0x512b) (0x00436298)
  4 0x00f95858 (0x1f35b3d4)
  5 0x1f318200 ?Attach@CProfile7@@UAEXPAV1@@Z() in frame (0x1f317c00)
0x1f31a540 ?GetStringProp@CProfile7@@QBEABVCString@@H@Z in frame: movl  0x34(%ecx),%eax
Modules:
Module  Address                 Debug info      Name (71 modules)
PE        400000-  453000       Export          1cv7s
PE      1f000000-1f013000       Deferred        type32
PE      1f100000-1f12c000       Deferred        dbeng32
PE      1f200000-1f22e000       Deferred        br32
PE      1f300000-1f399000       Export          frame
PE      1f400000-1f464000       Deferred        zlibeng
PE      20000000-202b1000       Deferred        bkend
PE      21000000-2102b000       Deferred        blang
PE      22000000-22150000       Export          seven
PE      23000000-2302d000       Deferred        txtedt
PE      26000000-26058000       Deferred        userdef
PE      31000000-311c2000       Deferred        1crcrus
PE      5f300000-5f329000       Deferred        olepro32
PE      5f400000-5f4f2000       Deferred        mfc42
PE      65340000-653d2000       Deferred        oleaut32
PE      65f00000-65fc2000       Deferred        ole32
PE      78000000-78044000       Deferred        msvcrt
ELF     7b800000-7b93d000       Deferred        kernel32<elf>
  \-PE  7b820000-7b93d000       \               kernel32
ELF     7bc00000-7bccd000       Deferred        ntdll<elf>
  \-PE  7bc10000-7bccd000       \               ntdll
ELF     7bf00000-7bf05000       Deferred        <wine-loader>
ELF     7e343000-7e376000       Deferred        uxtheme<elf>
  \-PE  7e350000-7e376000       \               uxtheme
ELF     7e38a000-7e390000       Deferred        libxfixes.so.3
ELF     7e390000-7e39a000       Deferred        libxcursor.so.1
ELF     7e39a000-7e39e000       Deferred        libxcomposite.so.1
ELF     7e39e000-7e3a6000       Deferred        libxrandr.so.2
ELF     7e3a6000-7e3b0000       Deferred        libxrender.so.1
ELF     7e3b0000-7e3b6000       Deferred        libxxf86vm.so.1
ELF     7e3b6000-7e3ba000       Deferred        libxinerama.so.1
ELF     7e3ba000-7e3db000       Deferred        imm32<elf>
  \-PE  7e3c0000-7e3db000       \               imm32
ELF     7e3db000-7e3e1000       Deferred        libxdmcp.so.6
ELF     7e3e1000-7e3e5000       Deferred        libxau.so.6
ELF     7e3e5000-7e3fe000       Deferred        libxcb.so.1
ELF     7e3fe000-7e403000       Deferred        libuuid.so.1
ELF     7e403000-7e41c000       Deferred        libice.so.6
ELF     7e41c000-7e539000       Deferred        libx11.so.6
ELF     7e539000-7e549000       Deferred        libxext.so.6
ELF     7e549000-7e552000       Deferred        libsm.so.6
ELF     7e573000-7e60f000       Deferred        winex11<elf>
  \-PE  7e580000-7e60f000       \               winex11
ELF     7e60f000-7e624000       Deferred        keyboard.drv16.so
PE      7e610000-7e624000       Deferred        keyboard.drv16
ELF     7e678000-7e6d5000       Deferred        shlwapi<elf>
  \-PE  7e690000-7e6d5000       \               shlwapi
ELF     7e6d5000-7e864000       Deferred        shell32<elf>
  \-PE  7e6f0000-7e864000       \               shell32
ELF     7e864000-7e92b000       Deferred        comctl32<elf>
  \-PE  7e870000-7e92b000       \               comctl32
ELF     7e92b000-7e980000       Deferred        advapi32<elf>
  \-PE  7e940000-7e980000       \               advapi32
ELF     7e980000-7e9a7000       Deferred        libexpat.so.1
ELF     7e9a7000-7e9bd000       Deferred        libz.so.1
ELF     7e9bd000-7e9ea000       Deferred        libfontconfig.so.1
ELF     7e9ea000-7ea70000       Deferred        libfreetype.so.6
ELF     7ea91000-7eb31000       Deferred        gdi32<elf>
  \-PE  7eaa0000-7eb31000       \               gdi32
ELF     7eb31000-7ec7c000       Deferred        user32<elf>
  \-PE  7eb50000-7ec7c000       \               user32
ELF     7ec7c000-7edbb000       Deferred        libcrypto.so.7
ELF     7edbb000-7ee27000       Deferred        libwine-etersoft.so.1
ELF     7efb6000-7efdf000       Deferred        libm.so.6
ELF     7efed000-7f000000       Deferred        libnatspec.so.0
ELF     b7d7c000-b7d80000       Deferred        libdl.so.2
ELF     b7d80000-b7ed2000       Deferred        libc.so.6
ELF     b7ed2000-b7eea000       Deferred        libpthread.so.0
ELF     b7eea000-b8026000       Deferred        libwine.so.1
ELF     b8044000-b8048000       Deferred        koi8-r.so
ELF     b8048000-b8065000       Deferred        ld-linux.so.2
Threads:
process  tid      prio (all id:s are in hex)
0000000c
        0000003e    0
        00000036    0
        0000002e    0
        00000026    0
        0000001c    0
        00000012    0
        0000000e    0
        0000000d    0
0000000f
        00000014    0
        00000011    0
        00000010    0
00000015
        00000042    0
        0000003a    0
        00000032    0
        0000002a    0
        00000022    0
        00000021    0
        00000018    0
        00000017    0
        00000016    0
00000019
        0000001e    0
        0000001b    0
        0000001a    0
00000023
        00000027    0
        00000025    0
        00000024    0
0000002b
        0000002f    0
        0000002d    0
        0000002c    0
00000033
        00000037    0
        00000035    0
        00000034    0
0000003b
        0000003f    0
        0000003d    0
        0000003c    0
0000001f (D) D:\.wine\dosdevices\c:\Program Files\1Cv77\BIN\1cv7s.exe
        00000046    0 <==
00000020
        00000028    0
Backtrace:
=>0 0x1f31a540 ?GetStringProp@CProfile7@@QBEABVCString@@H@Z() in frame (0x0031fa54)
  1 0x2207b57d in seven (+0x7b57d) (0x0033faf0)
  2 0x004093b7 in 1cv7s (+0x93b7) (0x0033fd78)
  3 0x0040512b in 1cv7s (+0x512b) (0x00436298)
  4 0x00f95858 (0x1f35b3d4)
  5 0x1f318200 ?Attach@CProfile7@@UAEXPAV1@@Z() in frame (0x1f317c00)
Comment 6 Евгений Синельников 2009-06-11 22:07:36 MSD
Итак, проблема локализована.

Во-первых, ошибка повторяется даже на одном хосте, когда один пользователь заходит из-под NFS, а второй локально.

Во-вторых, удалённо (то есть через NFS) запустить 1С 7.7 удаётся только если владельцем файлов является запускающий пользователь.

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

Итого, NFSv3 в стандартной конфигурации вообще не работает.

Все тесты проводились на ядре 2.6.25 из бранча 4.1. Думаю, нужно его обновить и перепроверить всё на другом ядре.
Comment 7 Костенко Евгений 2009-06-14 13:59:07 MSD
(In reply to comment #6)
> Итого, NFSv3 в стандартной конфигурации
> вообще не работает.


NFSv4 проверялся?
Comment 8 Денис Баранов 2009-07-21 19:07:38 MSD
WINE@Etersoft 1.0.11 eter1/eter1
Ошибок нет.
Comment 9 Денис Баранов 2009-07-21 19:08:28 MSD
Принято.
Проверялось в режиме 1 nx клиент с локальной базой, и клиент с базой по нфс