https://bugs.winehq.org/show_bug.cgi?id=47256
Bug ID: 47256 Summary: DigilockMF1 crashes after login in Product: Wine Version: 4.8 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: dark.shadow4@web.de Distribution: ---
This is a small VB6 program using MS Access ODBC.
For it to start up properly, and not complain about being unable to open the database you need to work around a few issues:
WINEARCH=win32 winetricks -q vb6run mdac28 jet40 install https://www.microsoft.com/en-us/download/details.aspx?id=5793 (in mode win98)
Then you can login (Code: 0, Password: <blank>), and it crashes.
I didn't open bugs for the worked around issues because they are known big deficiencies of wine already (correct me if I'm wrong).
https://bugs.winehq.org/show_bug.cgi?id=47256
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |https://www.lockchoice.com/ | |media/attachment/file/d/i/d | |igi_lock_software_nv.zip Keywords| |download
https://bugs.winehq.org/show_bug.cgi?id=47256
pattietreutel katyaberezyaka@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |katyaberezyaka@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=47256
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|DigilockMF1 crashes after |DigilockMF1 5.4 (VB6 app) |login in |crashes after login URL|https://www.lockchoice.com/ |https://web.archive.org/web |media/attachment/file/d/i/d |/20190525123215/https://www |igi_lock_software_nv.zip |.lockchoice.com/media/attac | |hment/file/d/i/digi_lock_so | |ftware_nv.zip CC| |focht@gmx.net
--- Comment #1 from Anastasius Focht focht@gmx.net --- Hello folks,
--- quote --- I didn't open bugs for the worked around issues because they are known big deficiencies of wine already (correct me if I'm wrong). --- quote ---
well, some them are actually not Wine bugs.
The first problem is missing VB6 runtime. The installer assumes it's present by default and runs VB6 SP6 on top.
--- snip --- 002c:Call user32.MessageBoxA(0001008e,00a21fc0 "Setup has detected that your Microsoft Visual Basic 6.0 run-time files are out of date.\nClick OK to install this technology now or Cancel to abort the setup.",00a21f90 "Technology Required",00000031) ret=0045e4c8 --- snip ---
App log:
--- snip --- [05/25/2019 14:35:30] Success Setup started: Z:\home\focht\Downloads\Digi Lock Software NV.exe [05/25/2019 14:35:30] Notice Setup engine version: 9.3.1.0 [05/25/2019 14:35:30] Notice Product: DigilockMF1, version 5.4.55 [05/25/2019 14:35:30] Success Language set: Primary = 9, Secondary = 1 [05/25/2019 14:35:30] Success Verify archive integrity [05/25/2019 14:35:30] Skipped Date expiration check [05/25/2019 14:35:30] Skipped Uses expiration check [05/25/2019 14:35:30] Success System requirements check [05/25/2019 14:35:30] Success Include script: _SUF70_Global_Functions.lua [05/25/2019 14:35:30] Notice Start project event: Global Functions [05/25/2019 14:35:30] Success Run project event: Global Functions [05/25/2019 14:35:30] Success Detection Script: Visual Basic 6.0 (SP6) [05/25/2019 14:35:30] Info VB6 SP6 Module: No version of msvbvm60.dll was found. The VB6 SP6 runtime will be installed. [05/25/2019 14:35:30] Success Extract dependency file: C:\users\focht\Temp_ir_sf_temp_0\vb6sp6\VBRun60sp6.exe [05/25/2019 14:35:30] Success Create folder: C:\users\focht\Temp_ir_sf_temp_0\vb6sp6\ [05/25/2019 14:35:31] Success VB6 SP6 Module: Installation script started. [05/25/2019 14:35:35] Success VB6 SP6 Module: User confirmation received, we are ready to install. [05/25/2019 14:35:35] Success VB6 SP6 Module: Running VB6 installer. [05/25/2019 14:35:36] Success VB6 SP6 Module: VB6 runtime installation complete. --- snip ---
https://blogs.msdn.microsoft.com/deva/2009/12/30/development-is-visual-basic... (considered part of OS so no need for full redist)
'winetricks -q vb6run'
===
The installer has a hard-coded default of 'D:\DigilockMF1' install directory. The embedded Lua script is kinda bugged, it considers non-existing 'D:' as valid until the disk space is re-calculated with after 'Next'.
It's even mentioned in the product manual:
https://www.lockchoice.com/media/attachment/file/m/i/mifare1_card_lock_user_...
I bet these guys never heard of Microsoft Windows Installer Best Practices. Kinda scoped to MSI but there are many valid points *every* installer technology should follow.
===
Failure to register 'MSJet40.dll':
--- snip --- 004d:Call KERNEL32.LoadLibraryA(00a45600 "C:\windows\system32\MSJet40.dll") ret=0042457e 004d:err:module:import_dll Library mswstr10.dll (which is needed by L"C:\windows\system32\MSJet40.dll") not found 004d:Ret KERNEL32.LoadLibraryA() retval=00000000 ret=0042457e 004d:Call KERNEL32.LoadLibraryExA(00a45600 "C:\windows\system32\MSJet40.dll",00000000,00000008) ret=00424590 004d:err:module:import_dll Library mswstr10.dll (which is needed by L"C:\windows\system32\MSJet40.dll") not found 004d:Ret KERNEL32.LoadLibraryExA() retval=00000000 ret=00424590 --- snip ---
--- snip --- [05/25/2019 15:10:11] Success Install archive file: C:\windows\system32\MSJet40.dll [05/25/2019 15:10:11] Error Increment usage count: C:\windows\system32\MSJet40.dll (2) [05/25/2019 15:10:14] Error Register COM file: C:\windows\system32\MSJet40.dll - System Error # 126 (1) [05/25/2019 15:10:14] Success Install archive file: C:\windows\system32\MSJtEr40.dll [05/25/2019 15:10:14] Error Increment usage count: C:\windows\system32\MSJtEr40.dll (2) [05/25/2019 15:10:14] Success Install archive file: C:\windows\system32\MSJtEs40.dll [05/25/2019 15:10:14] Error Increment usage count: C:\windows\system32\MSJtEs40.dll (2) [05/25/2019 15:10:14] Success Register COM file: C:\windows\system32\MSJtEs40.dll [05/25/2019 15:10:14] Success Install archive file: C:\windows\system32\VB5DB.dll [05/25/2019 15:10:14] Error Increment usage count: C:\windows\system32\VB5DB.dll (2) [05/25/2019 15:10:14] Success Install archive file: C:\windows\system32\MSJInt40.dll [05/25/2019 15:10:14] Error Increment usage count: C:\windows\system32\MSJInt40.dll (2) [05/25/2019 15:10:14] Success Install archive file: C:\windows\system32\VBAJet32.dll [05/25/2019 15:10:14] Error Increment usage count: C:\windows\system32\VBAJet32.dll (2) [05/25/2019 15:10:14] Success Install archive file: C:\windows\system32\MSWStr10.dll [05/25/2019 15:10:14] Error Increment usage count: C:\windows\system32\MSWStr10.dll (2) --- snip ---
Instead of using official MS redistributable package for installing DAO/JET engine some genius decided to do it himself. Registering the COM server before all dependent dlls have been installed... how stupid is this?
Anyway, I can't reproduce the crash. After login, a message 'Encoder connect error!' is shown which can be dismissed. This is expected because the card encoder hardware is obviously missing (USB HIB device vs. old USB-to-serial bridge).
There is some ugly user interface with a default 'guest' entry under 'All Room'.
$ sha1sum digi_lock_software_nv.zip c038581cb204e68bced20ad725802c0f46576907 digi_lock_software_nv.zip
$ du -sh digi_lock_software_nv.zip 7.4M digi_lock_software_nv.zip
$ wine --version wine-4.9
Regards
https://bugs.winehq.org/show_bug.cgi?id=47256
--- Comment #2 from Fabian Maurer dark.shadow4@web.de --- Hey Anastasius, thanks for testing! How exactly did you set up your WINEPREFIX? Because I can't go without a crashlog when following my instructions from the first post. Also using wine-4.9.
https://bugs.winehq.org/show_bug.cgi?id=47256
--- Comment #3 from Fabian Maurer dark.shadow4@web.de --- Created attachment 64547 --> https://bugs.winehq.org/attachment.cgi?id=64547 Crash log
https://bugs.winehq.org/show_bug.cgi?id=47256
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello Fabian,
--- quote --- How exactly did you set up your WINEPREFIX? --- quote ---
same setup as you have.
The crash site is located within 'HSDApp.dll'.
--- snip --- $ pwd /home/focht/.wine/drive_c/DigilockMF1
$ file *.{dll,exe} EasyD12_500.dll: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows HSDApp.dll: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows MasterCom.dll: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows MasterRD.dll: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows MURDJE.dll: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows Mwic_32.dll: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows DigilockMF1.exe: PE32 executable (GUI) Intel 80386, for MS Windows
$ winedump -j export HSDApp.dll Contents of HSDApp.dll: 36864 bytes
Exports table:
Name: HSDApp.dll Characteristics: 00000000 TimeDateStamp: 4B8B79ED Mon Mar 1 09:25:17 2010 Version: 0.00 Ordinal base: 1 # of functions: 4 # of Names: 4 Addresses of functions: 00005A08 Addresses of name ordinals: 00005A28 Addresses of names: 00005A18
Entry Pt Ordn Name 00001000 1 HID_Open 00001030 2 HID_Close 00001060 3 HID_Read 000011C0 4 HID_Write
Done dumping HSDApp.dll --- snip ---
All exported API except 'HID_Close' call the sub-routine where the crash site is located. From my trace log I can see 'HID_Open' calls but I don't have any registered HID devices hence the sub-routine might bail out early.
--- snip --- $ WINEDEBUG=+seh,+hid,+relay,+snoop,+setupapi wine ./DigilockMF1.exe >>log.txt 2>&1 ... 0009:Ret PE DLL (proc=0x8d11759,module=0x8d10000 L"HSDApp.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 0009:Call PE DLL (proc=0x8d32151,module=0x8d30000 L"EasyD12_500.DLL",reason=PROCESS_ATTACH,res=(nil)) ... 0009:Ret PE DLL (proc=0x8d02e09,module=0x8d00000 L"MURDJE.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 0009:Ret KERNEL32.LoadLibraryA() retval=08d00000 ret=6600a0b1 0009:Call KERNEL32.SetErrorMode(00008001) ret=6600a0c2 0009:Ret KERNEL32.SetErrorMode() retval=00008001 ret=6600a0c2 0009:Call KERNEL32.GetProcAddress(08d00000,00417618 "TX_Init") ret=6600a0d8 0009:Ret KERNEL32.GetProcAddress() retval=093801ba ret=6600a0d8 0009:RET MSVBVM60.DllFunctionCall() retval=093801ba ret=0041764f 0009:CALL MURDJE.TX_Init(<unknown, check return>) ret=00491784 0009:Call KERNEL32.CreateMutexA(00000000,00000000,08d07084 "RC500USB_MUTEX") ret=08d0149f 0009:Ret KERNEL32.CreateMutexA() retval=00000118 ret=08d0149f 0009:Call KERNEL32.WaitForSingleObject(00000118,000007d0) ret=08d014b0 0009:Ret KERNEL32.WaitForSingleObject() retval=00000000 ret=08d014b0 0009:CALL EasyD12_500.USBInit(<unknown, check return>) ret=08d02aac 0009:Call setupapi.SetupDiGetClassDevsA(08d350f0,00000000,00000000,00000012) ret=08d310f5 0009:trace:setupapi:SetupDiGetClassDevsExW {77f49320-16ef-11d2-ad51-006097b514dd} (null) (nil) 0x00000012 (nil) (null) (nil) 0009:trace:setupapi:SetupDiCreateDeviceInfoListExW {77f49320-16ef-11d2-ad51-006097b514dd} (nil) (null) (nil) 0009:Call ntdll.RtlAllocateHeap(00110000,00000000,00000020) ret=7b8d0715 0009:Ret ntdll.RtlAllocateHeap() retval=089d5e90 ret=7b8d0715 0009:Call advapi32.RegOpenKeyExW(80000002,7b905e20 L"System\CurrentControlSet\Control\DeviceClasses",00000000,00020019,0034dd48) ret=7b8d4414 0009:Ret advapi32.RegOpenKeyExW() retval=00000002 ret=7b8d4414 0009:trace:setupapi:SETUPDI_EnumerateInterfaces 0x89d5e90, {77f49320-16ef-11d2-ad51-006097b514dd}, (null), 00000012 ... 0009:Ret setupapi.SetupDiGetClassDevsA() retval=089d5e90 ret=08d310f5 0009:Call setupapi.SetupDiEnumDeviceInterfaces(089d5e90,00000000,08d350f0,00000000,0034e06c) ret=08d311b5 0009:trace:setupapi:SetupDiEnumDeviceInterfaces devinfo 0x89d5e90, device_data (nil), class {77f49320-16ef-11d2-ad51-006097b514dd}, index 0, iface_data 0x34e06c. 0009:Ret setupapi.SetupDiEnumDeviceInterfaces() retval=00000000 ret=08d311b5 0009:Call KERNEL32.GetLastError() ret=08d311e4 0009:Ret KERNEL32.GetLastError() retval=00000103 ret=08d311e4 ... 0009:Ret setupapi.SetupDiDestroyDeviceInfoList() retval=00000001 ret=08d31208 0009:RET EasyD12_500.USBInit() retval=ffffffff ret=08d02aac 0009:CALL HSDApp.HID_Open(<unknown, check return>) ret=08d02ac2 0009:Call KERNEL32.CreateMutexA(00000000,00000000,08d16030 "HID_MUTEX") ret=08d1131f 0009:Ret KERNEL32.CreateMutexA() retval=0000011c ret=08d1131f 0009:Call KERNEL32.WaitForSingleObject(0000011c,00000bb8) ret=08d11330 0009:Ret KERNEL32.WaitForSingleObject() retval=00000000 ret=08d11330 0009:Call hid.HidD_GetHidGuid(0034e008) ret=08d11380 0009:trace:hid:HidD_GetHidGuid (0x34e008) 0009:Ret hid.HidD_GetHidGuid() retval=30000011 ret=08d11380 0009:Call setupapi.SetupDiGetClassDevsA(0034e008,00000000,00000000,00000012) ret=08d11391 0009:trace:setupapi:SetupDiGetClassDevsExW {4d1e55b2-f16f-11cf-88cb-001111000030} (null) (nil) 0x00000012 (nil) (null) (nil) 0009:trace:setupapi:SetupDiCreateDeviceInfoListExW {4d1e55b2-f16f-11cf-88cb-001111000030} (nil) (null) (nil) ... 0009:Call advapi32.RegOpenKeyExW(80000002,7b905e20 L"System\CurrentControlSet\Control\DeviceClasses",00000000,00020019,0034dcd8) ret=7b8d4414 0009:Ret advapi32.RegOpenKeyExW() retval=00000002 ret=7b8d4414 0009:trace:setupapi:SETUPDI_EnumerateInterfaces 0x89d5e90, {4d1e55b2-f16f-11cf-88cb-001111000030}, (null), 00000012 ... 0009:Ret setupapi.SetupDiGetClassDevsA() retval=089d5e90 ret=08d11391 0009:Call setupapi.SetupDiEnumDeviceInterfaces(089d5e90,00000000,0034e008,00000000,0034e018) ret=08d113bd 0009:trace:setupapi:SetupDiEnumDeviceInterfaces devinfo 0x89d5e90, device_data (nil), class {4d1e55b2-f16f-11cf-88cb-001111000030}, index 0, iface_data 0x34e018. 0009:Ret setupapi.SetupDiEnumDeviceInterfaces() retval=00000000 ret=08d113bd 0009:Call setupapi.SetupDiDestroyDeviceInfoList(089d5e90) ret=08d1154d 0009:trace:setupapi:SetupDiDestroyDeviceInfoList devinfo 0x89d5e90. ... 0009:Ret setupapi.SetupDiDestroyDeviceInfoList() retval=00000001 ret=08d1154d 0009:Call KERNEL32.ReleaseMutex(0000011c) ret=08d1130c 0009:Ret KERNEL32.ReleaseMutex() retval=00000001 ret=08d1130c 0009:RET HSDApp.HID_Open(08d07048) retval=0000fff6 ret=08d02ac2 0009:Call KERNEL32.ReleaseMutex(00000118) ret=08d0148c 0009:Ret KERNEL32.ReleaseMutex() retval=00000001 ret=08d0148c 0009:RET MURDJE.TX_Init() retval=000000ff ret=00491784 0009:CALL MSVBVM60.__vbaSetSystemError() ret=0049178f 0009:Call KERNEL32.GetLastError() ret=660cc261 0009:Ret KERNEL32.GetLastError() retval=00000103 ret=660cc261 0009:RET MSVBVM60.__vbaSetSystemError() retval=00153ce8 ret=0049178f 0009:CALL MSVBVM60.DllFunctionCall(004176c4) ret=004176f3 0009:Call KERNEL32.SetErrorMode(00008001) ret=6600a0a0 0009:Ret KERNEL32.SetErrorMode() retval=00008001 ret=6600a0a0 0009:Call KERNEL32.LoadLibraryA(004175c4 "MURDJE.dll") ret=6600a0b1 0009:Ret KERNEL32.LoadLibraryA() retval=08d00000 ret=6600a0b1 0009:Call KERNEL32.SetErrorMode(00008001) ret=6600a0c2 0009:Ret KERNEL32.SetErrorMode() retval=00008001 ret=6600a0c2 0009:Call KERNEL32.GetProcAddress(08d00000,004176b8 "TX_Close") ret=6600a0d8 0009:Ret KERNEL32.GetProcAddress() retval=09380154 ret=6600a0d8 0009:RET MSVBVM60.DllFunctionCall() retval=09380154 ret=004176f3 0009:CALL MURDJE.TX_Close(<unknown, check return>) ret=0049179f 0009:Call KERNEL32.CreateMutexA(00000000,00000000,08d07084 "RC500USB_MUTEX") ret=08d0149f 0009:Ret KERNEL32.CreateMutexA() retval=00000120 ret=08d0149f ... --- snip ---
Do you have by chance some HID device driver installed/device registered so it might go further?
Regards
https://bugs.winehq.org/show_bug.cgi?id=47256
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|DigilockMF1 5.4 (VB6 app) |DigilockMF1 5.4 (VB6 app) |crashes after login |crashes after login when | |gamepad is plugged in
--- Comment #5 from Fabian Maurer dark.shadow4@web.de --- Hi Anastasius,
now that's what I call great debugging skills! I indeed have a gamepad, and when I unplug it, the crash doesn't happen.
What can I do to help troubleshoot the issue, would a +relay log help?