Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 2740 - При инициализации окружения не записывается odbc32.dll   Make a simular bug
Summary: При инициализации окружения не записывается odbc32.dll
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Общее (show other bugs)
Version: unspecified
Hardware: PC Linux
: P2 critical
Target Milestone: ---
Assignee: Anton Rudnev
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 2710
  Show dependency treegraph
 
In work:
Reported: 2008-10-27 13:26 MSK by Александр Морозов
Modified: 2008-11-12 13:38 MSK (History)
2 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Александр Морозов 2008-10-27 13:26:59 MSK
$ wine
First running... Using WINEPREFIX=/home/amorozov/.wine
Creating default file tree...
Copying prepared tree from '/usr/share/wine/skel' ...
WINE@Etersoft 1.0 SQL (1.0.9), registration number is EEEE-C0DE.
Legality check is available on the page http://sales.etersoft.ru/product/.

Initialize registry and environments...
ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: Отказано в доступе
err:mshtml:check_version Could not open VERSION file
Could not load Mozilla. HTML rendering will be disabled.
Xlib:  extension "GLX" missing on display "localhost:10.0".
err:wgl:X11DRV_WineGL_InitOpenglInfo  couldn't initialize OpenGL, expect problems
wine: configuration in '/home/amorozov/.wine' has been updated.
Building local environment...
Device 'p:' created as link for '/var/ftp/pvt' target.
Flash Player 9 ActiveX installing...
Device 'e:' created as link for '/media' target.
Device 'e::' created as link for '/dev/cdrom' target.
Device 'd:' created as link for '/home/amorozov/Documents' target.
Device 'com1' created as link for '/dev/ttyS0' target.
Device 'com2' created as link for '/dev/ttyS1' target.
Device 'com3' created as link for '/dev/ttyS2' target.
Device 'com4' created as link for '/dev/ttyS3' target.
Device 'lpt1' created as link for '/dev/lp0' target.
Device 'lpt2' created as link for '/dev/lp1' target.
Device 'lpt3' created as link for '/dev/lp2' target.
Device 'lpt4' created as link for '/dev/lp3' target.
MDAC 2.7 installing...
      [ ERROR ]

После этого при запуске любой программы под wine получаем сообщение:
ERROR: Your WINE dir (/home/amorozov/.wine) is obsoleted. It can cause some problems.
It is recommended to rename (remove) old /home/amorozov/.wine and set new WINE environment.
Also you can update you WINE tree with wine --update command.

Фрагмент sh -x /usr/bin/wine:
++ test -f /home/amorozov/.wine/dosdevices/c:/windows/system32/odbc32.dll
++ test -f /home/amorozov/.wine/dosdevices/c:/windows/system32/ODBC32.dll
++ failed
++ echo '      [ ERROR ]'
      [ ERROR ]
++ '[' '' = y ']'
++ exit 1
+ signal_handler
+ local rc=1
+ trap - HUP PIPE INT TERM QUIT EXIT
+ stop_splash
+ rm -f /home/amorozov/.wine/winesplash.progress
+ exit 1
Comment 1 Константин Кондратюк 2008-10-27 15:28:58 MSK
При установке MDAC_TYP.EXE в трейсе по file множество строк типа:
warn:file:CreateFileW Unable to create file L"C:\\windows\\temp\\IXP000.TMP\\oledb32a.dll" (status c0000043)
непосредственно перед завершением установки с ошибкой.

Что менялось: поставляемый MSJet. Устанавливаем мы его до MDAC'а.
Comment 2 Константин Кондратюк 2008-10-28 12:33:10 MSK
MSJet не играет роли, тем более, что ставится он позже.

Вполне возможно, что это следствия той же поломки:

Initialize registry and environments...
+ /usr/bin/wine-glibc wineboot.exe --init
+ /usr/bin/wine-glibc wineboot.exe --update
err:mshtml:check_version Could not open VERSION file
Could not load Mozilla. HTML rendering will be disabled.
Comment 3 Александр Морозов 2008-10-28 12:49:07 MSK
Если закомментировать
        if (!check_sharing( fd, access, sharing ))
        {
            release_object( fd );
            set_error( STATUS_SHARING_VIOLATION );
            return NULL;
        }
в open_fd (server/fd.c), то установка MDAC_TYP.EXE завершается успешно.
Comment 4 Константин Кондратюк 2008-10-29 10:12:47 MSK
Проблема в glibc сизифа, вне вайна?
Comment 5 Константин Кондратюк 2008-10-29 16:04:18 MSK
Нужно обязательно разобраться, в чём дело с новым glibc
Comment 6 Anton Rudnev 2008-10-31 14:45:39 MSK
Вот одно (самое первое) обращение к файлу на целларе:
call NtCreateFile: 
	handle=0 access=c0000000 name=L"\\??\\C:\\Program Files\\Common Files\\System\\OLE DB\\oledb32a.dll" objattr=00000040 root=(nil) sec=(nil) io=0x7e256620 alloc_size=(nil)attr=00000000 sharing=00000000 disp=1 options=00000050 ea=(nil).0x00000000
ret NtCreateFile(*handle = 0 ...) -> c0000034 (ending)
далее закрытия файла не происходит (поскольку ошибка)

то же самое обращение на атланте:
call NtCreateFile: handle=0 access=c0000000 name=L"\\??\\C:\\Program Files\\Common Files\\System\\OLE DB\\oledb32a.dll" objattr=00000040 root=(nil) sec=(nil) io=0x7e0e0620 alloc_size=(nil)attr=00000000 sharing=00000000 disp=1 options=00000050 ea=(nil).0x00000000
    call open_fd(/home/mibori/.wine/dosdevices/c:/Program Files/Common Files/System/OLE DB/oledb32a.dll, flags=8800, *mode=666, access=12019f, sharing=0, options=50)
    ret open_fd(/home/mibori/.wine/dosdevices/c:/Program Files/Common Files/System/OLE DB/oledb32a.dll, *mode=100664) -> 8301158 (non error)
ret NtCreateFile(*handle = bc ...) -> 0 (ending)
а затем закрытие
mib call NtClose(bc)
    call fd_destroy(8301158)
    ret fd_destroy(8301158)
mib ret NtClose(bc) -> 0

то, что за период установки это первое обращение к файлу C:\\Program Files\\Common Files\\System\\OLE DB\\oledb32a.dll различно для двух машин, является основанием для написания теста.

Судя по аргументам NtCreateFile это один и тот же вызов.
Comment 7 Anton Rudnev 2008-10-31 17:19:30 MSK
похоже я немного ошибся.

вот cellar:
call NtCreateFile:
 *handle = 7e25a630
 access = c0000000
 *attr={Length=18, RootDirectory=0, ObjectName={Length=78, MaximumLength=80, Buffer=L"\\??\\C:\\Program Files\\Common Files\\System\\OLE DB\\oledb32a.dll"},  Attributes=40, SecurityDescriptor=0, SecurityQualityOfService=0}
 *io = 7e25a650
 alloc_size = 0
 attributes=0
 sharing=0
 disposition=1
 options=50
 ea_buffer=0
 ea_length=0
ret NtCreateFile(*handle = 0 ...) -> c0000034 (ending)

вот atlant:
call NtCreateFile:
 *handle = 7e0d1630
 access = c0000000
 *attr={Length=18, RootDirectory=0, ObjectName={Length=78, MaximumLength=80, Buffer=L"\\??\\C:\\Program Files\\Common Files\\System\\OLE DB\\oledb32a.dll"},  Attributes=40, SecurityDescriptor=0, SecurityQualityOfService=0}
 *io = 7e0d1650
 alloc_size = 0
 attributes=0
 sharing=0
 disposition=1
 options=50
 ea_buffer=0
 ea_length=0
ret NtCreateFile(*handle = ffffffff ...) -> c000003a (ending)

и тот и другой завершается ошибкой.
но с разными кодами завершения NTSTATUS
Comment 8 Anton Rudnev 2008-10-31 18:08:07 MSK
(In reply to comment #7)
> 
> и тот и другой завершается ошибкой.
> но с разными кодами завершения NTSTATUS
> 

#define STATUS_OBJECT_NAME_NOT_FOUND     ((NTSTATUS) 0xC0000034)
#define STATUS_OBJECT_PATH_NOT_FOUND     ((NTSTATUS) 0xC000003A)

что означает, что тест я проводил в неравных условиях.
Comment 9 Anton Rudnev 2008-11-01 16:20:16 MSK
разницу поведения достаточно точно видно при обращении к файлу C:\\windows\\temp\\IXP000.TMP\\oledb32a.dll

на atlant файл открывается, и тут же закрывается.
а на cellar закрытия файла не происходит

лог на atlant
call NtCreateFile:
 *handle = 7dbaf7a8
 access = c0000000
 *attr={Length=18, RootDirectory=0, ObjectName={Length=56, MaximumLength=5e, Buffer=L"\\??\\C:\\windows\\temp\\IXP000.TMP\\oledb32a.dll"},  Attributes=40, SecurityDescriptor=0, SecurityQualityOfService=0}
 *io = 7dbaf7c8
 alloc_size = 0
 attributes=80
 sharing=0
 disposition=2
 options=50
 ea_buffer=0
 ea_length=0
    call open_fd(/home/mibori/.wine/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, flags=88c0, *mode=666, access=12019f, sharing=0, options=50)
    ret open_fd(/home/mibori/.wine/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, *mode=100644) -> 81e7080 (non error)
ret NtCreateFile(...) -> io->u.Status=0, io->Information=2 (ending), *handle = 17c

mib call NtClose(17c)
    call fd_destroy(81e7080)
    ret fd_destroy(81e7080)
mib ret NtClose(17c) -> 0

call NtCreateFile:
 *handle = 7dbaf7a8
 access = c0000000
 *attr={Length=18, RootDirectory=0, ObjectName={Length=56, MaximumLength=5e, Buffer=L"\\??\\C:\\windows\\temp\\IXP000.TMP\\msorc32r.dll"},  Attributes=40, SecurityDescriptor=0, SecurityQualityOfService=0}
 *io = 7dbaf7c8
 alloc_size = 0
 attributes=80
 sharing=0
 disposition=2
 options=50
 ea_buffer=0
 ea_length=0
    call open_fd(/home/mibori/.wine/dosdevices/c:/windows/temp/IXP000.TMP/msorc32r.dll, flags=88c0, *mode=666, access=12019f, sharing=0, options=50)
    ret open_fd(/home/mibori/.wine/dosdevices/c:/windows/temp/IXP000.TMP/msorc32r.dll, *mode=100644) -> 81e7080 (non error)
ret NtCreateFile(...) -> io->u.Status=0, io->Information=2 (ending), *handle = 17c
--------------------

лог на cellar
call NtCreateFile:
 *handle = 7dd597b0
 access = c0000000
 *attr={Length=18, RootDirectory=0, ObjectName={Length=56, MaximumLength=5e, Buffer=L"\\??\\C:\\windows\\temp\\IXP000.TMP\\oledb32a.dll"},  Attributes=40, SecurityDescriptor=0, SecurityQualityOfService=0}
 *io = 7dd597d0
 alloc_size = 0
 attributes=80
 sharing=0
 disposition=2
 options=50
 ea_buffer=0
 ea_length=0
call open_fd(/net/wine/.wine-eterbug-2740/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, flags=88c0, *mode=666, access=12019f, sharing=0, options=50)
ret open_fd(/net/wine/.wine-eterbug-2740/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, *mode=100644) -> 87b2b10 (non error)
ret NtCreateFile(...) -> io->u.Status=0, io->Information=2 (ending), *handle = 25c

call NtCreateFile:
 *handle = 7dd597b0
 access = c0000000
 *attr={Length=18, RootDirectory=0, ObjectName={Length=56, MaximumLength=5e, Buffer=L"\\??\\C:\\windows\\temp\\IXP000.TMP\\msorc32r.dll"},  Attributes=40, SecurityDescriptor=0, SecurityQualityOfService=0}
 *io = 7dd597d0
 alloc_size = 0
 attributes=80
 sharing=0
 disposition=2
 options=50
 ea_buffer=0
 ea_length=0
call open_fd(/net/wine/.wine-eterbug-2740/dosdevices/c:/windows/temp/IXP000.TMP/msorc32r.dll, flags=88c0, *mode=666, access=12019f, sharing=0, options=50)
ret open_fd(/net/wine/.wine-eterbug-2740/dosdevices/c:/windows/temp/IXP000.TMP/msorc32r.dll, *mode=100644) -> 87b2c28 (non error)
ret NtCreateFile(...) -> io->u.Status=0, io->Information=2 (ending), *handle = 260
---------------
нужно разобраться, что происходит между этого файла и следующего.
и почему не происходит закрытие первого
Comment 10 Anton Rudnev 2008-11-01 16:36:18 MSK
> нужно разобраться, что происходит между
> этого файла и следующего.
> и почему не происходит закрытие первого

вход и выход функций NtCreateFile и open_fd идентичен на двух машинах (при отладке нужно сократить вывод информации об аргументах NtCreateFile)
Нужно проверить вызывается ли CloseHandle на cellar
Comment 11 Anton Rudnev 2008-11-01 17:44:56 MSK
> Нужно проверить вызывается ли CloseHandle на cellar

не вызывается
----------------------------------
на cellar
call NtCreateFile(L"\\??\\C:\\windows\\temp\\IXP000.TMP\\oledb32a.dll")
	call open_fd(/net/wine/.wine-eterbug-2740/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, flags=88c0, *mode=666, access=12019f, sharing=0, options=50)
	ret open_fd(/net/wine/.wine-eterbug-2740/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, *mode=100644) -> 8b2c508 (non error)
ret NtCreateFile(...) -> io->u.Status=0, io->Information=2 (ending), *handle = 25c

call NtCreateFile(L"\\??\\C:\\windows\\temp\\IXP000.TMP\\msorc32r.dll")
	call open_fd(/net/wine/.wine-eterbug-2740/dosdevices/c:/windows/temp/IXP000.TMP/msorc32r.dll, flags=88c0, *mode=666, access=12019f, sharing=0, options=50)
	ret open_fd(/net/wine/.wine-eterbug-2740/dosdevices/c:/windows/temp/IXP000.TMP/msorc32r.dll, *mode=100644) -> 8b2c620 (non error)
ret NtCreateFile(...) -> io->u.Status=0, io->Information=2 (ending), *handle = 260
-----------------------------------

на atlant
call NtCreateFile(L"\\??\\C:\\windows\\temp\\IXP000.TMP\\oledb32a.dll")
    call open_fd(/home/mibori/.wine/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, flags=88c0, *mode=666, access=12019f, sharing=0, options=50)
    ret open_fd(/home/mibori/.wine/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, *mode=100644) -> 823dbf8 (non error)
ret NtCreateFile(...) -> io->u.Status=0, io->Information=2 (ending), *handle = 17c
call CloseHandle(17c)
    mib call NtClose(17c)
        call fd_destroy(823dbf8)
        ret fd_destroy(823dbf8)
    mib ret NtClose(17c) -> 0
ret CloseHandle(17c) -> TRUE (ending)

call NtCreateFile(L"\\??\\C:\\windows\\temp\\IXP000.TMP\\msorc32r.dll")
    call open_fd(/home/mibori/.wine/dosdevices/c:/windows/temp/IXP000.TMP/msorc32r.dll, flags=88c0, *mode=666, access=12019f, sharing=0, options=50)
    ret open_fd(/home/mibori/.wine/dosdevices/c:/windows/temp/IXP000.TMP/msorc32r.dll, *mode=100644) -> 823dbf8 (non error)
ret NtCreateFile(...) -> io->u.Status=0, io->Information=2 (ending), *handle = 17c
----------------------------------

поведение установщика меняется.
нужно посмотреть что даст +msi

 

Comment 12 Anton Rudnev 2008-11-05 14:20:41 MSK
пробую падать в NtCreateFile и NtClose на cellar и atlant

для cellar NtCreate падаем так:
=>1 0x7bc3bd17 NtCreateFile+0xb6(handle=0x7dd537b0, access=3221225472, attr=0x7dd5377c, io=0x7dd537a0, alloc_size=(nil), attributes=128, sharing=0, disposition=2, options=80, ea_buffer=(nil), ea_length=0) [/srv/mibori/Projects/wine/dlls/ntdll/file.c:199] in ntdll (0x7dd53714)
  2 0x7b847934 CreateFileW+0x470(filename=0x7ffccc00, access=3221225472, sharing=0, sa=(nil), creation=1, attributes=128, template=(nil)) [/srv/mibori/Projects/wine/dlls/kernel32/file.c:1504] in kernel32 (0x7dd537d4)
  3 0x7b847afd CreateFileA+0x52(filename="C:\windows\temp\IXP000.TMP\oledb32a.dll", access=3221225472, sharing=0, sa=(nil), creation=1, attributes=128, template=(nil)) [/srv/mibori/Projects/wine/dlls/kernel32/file.c:1566] in kernel32 (0x7dd53814)
  4 0x7dc34192 fdi_notify_extract+0x295(fdint=fdintCOPY_FILE, pfdin=0x7dd538fc) [/home/mibori/Projects/wine/dlls/cabinet/cabinet_main.c:242] in cabinet (0x7dd53884)
  5 0x7dc448d7 FDICopy+0xe5c(hfdi=0x175080, pszCabinet="MDACxpak.CAB", pszCabPath="C:\windows\temp\IXP000.TMP", flags=0, pfnfdin=0x7dc33efd, pfnfdid=(nil), pvUser=0x7dd6ab38) [/home/mibori/Projects/wine/dlls/cabinet/fdi.c:2734] in cabinet (0x7dd6aa74)
  6 0x7dc34425 Extract+0x18b(dest=0x7dd6ab38, szCabName="C:\windows\temp\IXP000.TMP\MDACxpak.CAB") [/home/mibori/Projects/wine/dlls/cabinet/cabinet_main.c:367] in cabinet (0x7dd6aad4)
  7 0x7e5a6321 ExtractFilesA+0x2a8(CabName="C:\windows\temp\IXP000.TMP\MDACxpak.CAB", ExpandDir="C:\windows\temp\IXP000.TMP", Flags=0, FileList=0x0, LReserved=(nil), Reserved=0) [/home/mibori/Projects/wine/dlls/advpack/files.c:729] in advpack (0x7dd6ae74)
  8 0x7e561f5f extract_cabinet_file+0x2ee(cabinet=0x1679d0, root=0x1674c8, src=0x174dd8, dst=0x174e38) [/srv/mibori/Projects/wine/dlls/setupapi/queue.c:445] in setupapi (0x7dd6aef4)
  9 0x7e563de7 SetupCommitFileQueueW+0x4c9(owner=(nil), handle=0x1664d8, handler=0x7e5a2d2c, context=0x165d70) [/srv/mibori/Projects/wine/dlls/setupapi/queue.c:1254] in setupapi (0x7dd6b174)
  10 0x7e55785b SetupInstallFromInfSectionW+0xd9(owner=(nil), hinf=0x121db8, section=0x169a88, flags=16, key_root=(nil), src_root=0x167bf8, copy_flags=4, callback=0x7e5a2d2c, context=0x165d70, devinfo=(nil), devinfo_data=(nil)) [/home/mibori/Projects/wine/dlls/setupapi/install.c:943] in setupapi (0x7dd6b1c4)
  11 0x7e5a7547 spapi_install+0xa5(info=0x7dd6b248) [/home/mibori/Projects/wine/dlls/advpack/install.c:323] in advpack (0x7dd6b224)
  12 0x7e5a8148 ExecuteCabW+0x122(hwnd=0x20034, pCab=0x7dd6b2b8, pReserved=(nil)) [/home/mibori/Projects/wine/dlls/advpack/install.c:685] in advpack (0x7dd6b284)
  13 0x7e5a875c LaunchINFSectionExW+0x237(hWnd=0x20034, hInst=0x1000000, cmdline=0x166530, show=0) [/home/mibori/Projects/wine/dlls/advpack/install.c:883] in advpack (0x7dd6b4f4)
  14 0x7e5a8503 LaunchINFSectionExA+0x9e(hWnd=0x20034, hInst=0x1000000, cmdline="C:\windows\temp\IXP000.TMP\MDACXPDL.INF,DefaultInstall,,32,N", show=0)
-----------------------


на atlant в этом же месте:
=>1 0x7bc3bd17 NtCreateFile+0xb6(handle=0x7dbb57a8, access=3221225472, attr=0x7dbb5774, io=0x7dbb5798, alloc_size=(nil), attributes=128, sharing=0, disposition=2, options=80, ea_buffer=(nil), ea_length=0) [/srv/mibori/Projects/wine/dlls/ntdll/file.c:199] in ntdll (0x7dbb570c)
  2 0x7b847934 CreateFileW+0x470(filename=0x7ffccc00, access=3221225472, sharing=0, sa=(nil), creation=1, attributes=128, template=(nil)) [/srv/mibori/Projects/wine/dlls/kernel32/file.c:1504] in kernel32 (0x7dbb57cc)
  3 0x7b847afd CreateFileA+0x52(filename="C:\windows\temp\IXP000.TMP\oledb32a.dll", access=3221225472, sharing=0, sa=(nil), creation=1, attributes=128, template=(nil)) [/srv/mibori/Projects/wine/dlls/kernel32/file.c:1566] in kernel32 (0x7dbb580c)
  4 0x7da8a192 fdi_notify_extract+0x295(fdint=fdintCOPY_FILE, pfdin=0x7dbb58f4) [/home/mibori/Projects/wine/dlls/cabinet/cabinet_main.c:242] in cabinet (0x7dbb587c)
  5 0x7da9a8d7 FDICopy+0xe5c(hfdi=0x17b348, pszCabinet="MDACxpak.CAB", pszCabPath="C:\windows\temp\IXP000.TMP", flags=0, pfnfdin=0x7da89efd, pfnfdid=(nil), pvUser=0x7dbccb30) [/home/mibori/Projects/wine/dlls/cabinet/fdi.c:2734] in cabinet (0x7dbcca6c)
  6 0x7da8a425 Extract+0x18b(dest=0x7dbccb30, szCabName="C:\windows\temp\IXP000.TMP\MDACxpak.CAB") [/home/mibori/Projects/wine/dlls/cabinet/cabinet_main.c:367] in cabinet (0x7dbccacc)
  7 0x7e3a6321 ExtractFilesA+0x2a8(CabName="C:\windows\temp\IXP000.TMP\MDACxpak.CAB", ExpandDir="C:\windows\temp\IXP000.TMP", Flags=0, FileList=0x0, LReserved=(nil), Reserved=0) [/home/mibori/Projects/wine/dlls/advpack/files.c:729] in advpack (0x7dbcce6c)
  8 0x7e361f5f extract_cabinet_file+0x2ee(cabinet=0x16d190, root=0x16ce68, src=0x17b0a0, dst=0x17b100) [/srv/mibori/Projects/wine/dlls/setupapi/queue.c:445] in setupapi (0x7dbcceec)
  9 0x7e363de7 SetupCommitFileQueueW+0x4c9(owner=(nil), handle=0x16de88, handler=0x7e3a2d2c, context=0x1298b0) [/srv/mibori/Projects/wine/dlls/setupapi/queue.c:1254] in setupapi (0x7dbcd16c)
  10 0x7e35785b SetupInstallFromInfSectionW+0xd9(owner=(nil), hinf=0x165b48, section=0x16c348, flags=16, key_root=(nil), src_root=0x16c5c0, copy_flags=4, callback=0x7e3a2d2c, context=0x1298b0, devinfo=(nil), devinfo_data=(nil)) [/home/mibori/Projects/wine/dlls/setupapi/install.c:943] in setupapi (0x7dbcd1bc)
  11 0x7e3a7547 spapi_install+0xa5(info=0x7dbcd240) [/home/mibori/Projects/wine/dlls/advpack/install.c:323] in advpack (0x7dbcd21c)
  12 0x7e3a8148 ExecuteCabW+0x122(hwnd=0x20034, pCab=0x7dbcd2b0, pReserved=(nil)) [/home/mibori/Projects/wine/dlls/advpack/install.c:685] in advpack (0x7dbcd27c)
  13 0x7e3a875c LaunchINFSectionExW+0x237(hWnd=0x20034, hInst=0x1000000, cmdline=0x16c8b8, show=0) [/home/mibori/Projects/wine/dlls/advpack/install.c:883] in advpack (0x7dbcd4ec)
  14 0x7e3a8503 LaunchINFSectionExA+0x9e(hWnd=0x20034, hInst=0x1000000, cmdline="C:\windows\temp\IXP000.TMP\MDACXPDL.INF,DefaultInstall,,32,N", show=0) [/home/mibori/Projects/wine/dlls/advpack/install.c:806] in advpack (0x7dbcd52c)
Comment 13 Anton Rudnev 2008-11-05 14:24:00 MSK
(In reply to comment #12)
> пробую падать в NtCreateFile и NtClose на cellar и atlant
> 

на NtClose надо падать только от значения счётчика.
передать как-либо значение открытого дескриптора внутрь NtClose не получается (NtClose и NtCreateFile находятся в разных модулях).
Comment 14 Anton Rudnev 2008-11-05 15:08:37 MSK
> (In reply to comment #12)
> передать как-либо значение открытого
> дескриптора внутрь NtClose не получается

получается
Comment 15 Anton Rudnev 2008-11-05 15:41:42 MSK
для NtClose на atlant

=>1 0x7bc51c67 NtClose+0x79(Handle=0x17c) [/srv/mibori/Projects/wine/dlls/ntdll/om.c:318] in ntdll (0x7dbb67dc)
  2 0x7b87fdc8 CloseHandle+0xb1(handle=0x17c) [/srv/mibori/Projects/wine/dlls/kernel32/process.c:2678] in kernel32 (0x7dbb681c)
  3 0x7da8b27d fdi_notify_extract+0x380(fdint=fdintCLOSE_FILE_INFO, pfdin=0x7dbb68f4) [/srv/mibori/Projects/wine/dlls/cabinet/cabinet_main.c:272] in cabinet (0x7dbb687c)
  4 0x7da9c033 FDICopy+0x15b8(hfdi=0x17b2f8, pszCabinet="MDACxpak.CAB", pszCabPath="C:\windows\temp\IXP000.TMP", flags=0, pfnfdin=0x7da8aefd, pfnfdid=(nil), pvUser=0x7dbcdb30) [/srv/mibori/Projects/wine/dlls/cabinet/fdi.c:2873] in cabinet (0x7dbcda6c)
  5 0x7da8b425 Extract+0x18b(dest=0x7dbcdb30, szCabName="C:\windows\temp\IXP000.TMP\MDACxpak.CAB") [/srv/mibori/Projects/wine/dlls/cabinet/cabinet_main.c:367] in cabinet (0x7dbcdacc)
  6 0x7e3a7321 ExtractFilesA+0x2a8(CabName="C:\windows\temp\IXP000.TMP\MDACxpak.CAB", ExpandDir="C:\windows\temp\IXP000.TMP", Flags=0, FileList=0x0, LReserved=(nil), Reserved=0) [/srv/mibori/Projects/wine/dlls/advpack/files.c:729] in advpack (0x7dbcde6c)
call fd_destroy(8235c20)
ret fd_destroy(8235c20)
call fd_destroy(8236190)
ret fd_destroy(8236190)
call fd_destroy(8236208)
ret fd_destroy(8236208)
call fd_destroy(8235ec8)
ret fd_destroy(8235ec8)
call fd_destroy(8233a68)
ret fd_destroy(8233a68)
call fd_destroy(8233428)
ret fd_destroy(8233428)
  7 0x7e362f5f extract_cabinet_file+0x2ee(cabinet=0x16f318, root=0x16e9a8, src=0x17b050, dst=0x17b0b0) [/srv/mibori/Projects/wine/dlls/setupapi/queue.c:445] in setupapi (0x7dbcdeec)
  8 0x7e364de7 SetupCommitFileQueueW+0x4c9(owner=(nil), handle=0x16d068, handler=0x7e3a3d2c, context=0x16c840) [/srv/mibori/Projects/wine/dlls/setupapi/queue.c:1254] in setupapi (0x7dbce16c)
  9 0x7e35885b SetupInstallFromInfSectionW+0xd9(owner=(nil), hinf=0x16c578, section=0x16c1a8, flags=16, key_root=(nil), src_root=0x16cd08, copy_flags=4, callback=0x7e3a3d2c, context=0x16c840, devinfo=(nil), devinfo_data=(nil)) [/srv/mibori/Projects/wine/dlls/setupapi/install.c:943] in setupapi (0x7dbce1bc)
  10 0x7e3a8547 spapi_install+0xa5(info=0x7dbce240) [/srv/mibori/Projects/wine/dlls/advpack/install.c:323] in advpack (0x7dbce21c)
  11 0x7e3a9148 ExecuteCabW+0x122(hwnd=0x20034, pCab=0x7dbce2b0, pReserved=(nil)) [/srv/mibori/Projects/wine/dlls/advpack/install.c:685] in advpack (0x7dbce27c)
  12 0x7e3a975c LaunchINFSectionExW+0x237(hWnd=0x20034, hInst=0x1000000, cmdline=0x16c8a8, show=0) [/srv/mibori/Projects/wine/dlls/advpack/install.c:883] in advpack (0x7dbce4ec)
  13 0x7e3a9503 LaunchINFSectionExA+0x9e(hWnd=0x20034, hInst=0x1000000, cmdline="C:\windows\temp\IXP000.TMP\MDACXPDL.INF,DefaultInstall,,32,N", show=0) [/srv/mibori/Projects/wine/dlls/advpack/install.c:806] in advpack (0x7dbce52c)
Comment 16 Anton Rudnev 2008-11-05 15:44:08 MSK
=> причину несрабатывания NtClose следует искать от fdi_notify_extract в cabinet_main.c
Comment 17 Anton Rudnev 2008-11-05 16:53:15 MSK
(In reply to comment #16)
> => причину несрабатывания NtClose следует
> искать от fdi_notify_extract в cabinet_main.c

в ней на atlant после CreateFileW(...) -> handle вызов SetFileTime(handle, &ftLocal, 0, &ftLocal) отрабатывает с истиной на возврате, а на cellar ложью.

для atlant:
call fdi_notify_extract(fdint=fdintCOPY_FILE, pfdin=7dbb58f4)
    call NtCreateFile(L"\\??\\C:\\windows\\temp\\IXP000.TMP\\oledb32a.dll")
    call detected
        call open_fd(/home/mibori/.wine/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, flags=88c0, *mode=666, access=12019f, sharing=0, options=50)
        ret open_fd(/home/mibori/.wine/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, *mode=100644) -> 8252538 (non error)
    ret NtCreateFile(...) -> io->u.Status=0, io->Information=2 (ending), *handle = 17c
    ntClose init...
ret fdi_notify_extract(...) -> 17c (ending)

call fdi_notify_extract(fdint=fdintCLOSE_FILE_INFO, pfdin=7dbb58f4)
    call CloseHandle(17c)
        mib call NtClose(17c)
        nt close call detected
            call fd_destroy(8252538)
            ret fd_destroy(8252538)
        mib ret NtClose(17c) -> 0
    ret CloseHandle(17c) -> TRUE (ending)
ret fdi_notify_extract(...) -> TRUE (ending)
-------------------------------

для cellar:
call fdi_notify_extract(fdint=fdintCOPY_FILE, pfdin=7dd488fc)
	call NtCreateFile(L"\\??\\C:\\windows\\temp\\IXP000.TMP\\oledb32a.dll")
	call detected
		call open_fd(/net/wine/.wine-eterbug-2740/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, flags=88c0, *mode=666, access=12019f, sharing=0, options=50)
		ret open_fd(/net/wine/.wine-eterbug-2740/dosdevices/c:/windows/temp/IXP000.TMP/oledb32a.dll, *mode=100644) -> 9484b50 (non error)
	ret NtCreateFile(...) -> io->u.Status=0, io->Information=2 (ending), *handle = 25c
	ntClose init...
ret fdi_notify_extract(...) -> 25c (ending)

call fdi_notify_extract(fdint=fdintCLOSE_FILE_INFO, pfdin=7dd488fc)
ret fdi_notify_extract(...) -> FALSE (SetFileTime)
Comment 18 Anton Rudnev 2008-11-07 14:50:29 MSK
см. проблему https://bugzilla.altlinux.org/show_bug.cgi?id=17806

патч http://lists.etersoft.ru/pipermail/wine-patches/2008-November/000071.html

С патчем MDAC должен ставится с выводом сообщения об ошибке:
err:ntdll:NtSetInformationFile futimes(...) -> -1, errno = 14 (Bad Address)