http://bugs.winehq.org/show_bug.cgi?id=23866
Summary: Microsoft Wine Guide crashes, unimplemented function msvideo.dll16._MCIWNDCREATE Product: Wine Version: 1.2 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: minor Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: markk@clara.co.uk
Created an attachment (id=29963) --> (http://bugs.winehq.org/attachment.cgi?id=29963) +relay,+int21,+mmio log in Windows XP mode
This bug applies to Microsoft Wine Guide 1.0a, a multimedia CD-ROM from 1995.
On attempting to play a video clip, the program crashes with console output like this: wine: Call from 0x7b836872 to unimplemented function msvideo.dll16._MCIWNDCREATE, aborting wine: Unimplemented function msvideo.dll16._MCIWNDCREATE called at address 0x7b836872 (thread 001d), starting debugger... Unhandled exception: unimplemented function msvideo.dll16._MCIWNDCREATE called in 32-bit code (0x7b836872).
However, there is a (probably related) issue with the program trying unsuccessfully to copy some DLLs to the Windows system directory on startup.
Start wine.exe in the root directory of the CD-ROM. A Microsoft Home splash window opens, then there are several error dialog boxes with text like this: "The file C:\windows\SY32\iccvid.dll open, which Wine Guide needs to modify. Please close all other open programs or restart Windows." The dialog box has Abort/Retry/Ignore buttons.
Pressing Ignore each time allows the program to continue. With Wine set to Windows XP mode (the program works fine under Windows XP), the dialog appears for each of these DLLs: iccvid.dll, ir32_32.dll, msadp32.acm, msrle32.dll, msvideo.dll.
The program's main window then opens. If you click the film strip button near the centre of the window (which should cause a video to play), the program crashes with a Wine error dialog saying winevdm.exe needs to close, and console output as above.
Two attached logs: Wine in Windows XP mode, WINEDEBUG=+relay,+int21,+mmio. Start wine.exe, click Ignore for each dialog box, then click film strip button in main window. Wine in Windows 3.1 mode, WINEDEBUG=+relay,+int21. Start wine.exe, dismiss all dialogs until program exits with out of memory dialog.
I don't know why the program tries to look in C:\windows\SY32, but if you set the Wine windows version to Windows 3.1, it instead looks in C:\windows\SY\ (and tries to copy more/different files there).
http://bugs.winehq.org/show_bug.cgi?id=23866
--- Comment #1 from markk@clara.co.uk 2010-08-01 12:08:54 --- Created an attachment (id=29964) --> (http://bugs.winehq.org/attachment.cgi?id=29964) +relay,+int21 log in Windows 3.1 mode
http://bugs.winehq.org/show_bug.cgi?id=23866
--- Comment #2 from Stefan Leichter Stefan.Leichter@camLine.com 2010-08-12 15:15:20 --- Created an attachment (id=30117) --> (http://bugs.winehq.org/attachment.cgi?id=30117) forward MCIWndCreate to MCIWndCreateA
i'm not sure if the attached patch is correct. Please give it a try
http://bugs.winehq.org/show_bug.cgi?id=23866
David Love dlove@nighton.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dlove@nighton.net
--- Comment #3 from David Love dlove@nighton.net 2010-08-13 11:24:14 --- (In reply to comment #2)
Created an attachment (id=30117)
--> (http://bugs.winehq.org/attachment.cgi?id=30117) [details]
forward MCIWndCreate to MCIWndCreateA
i'm not sure if the attached patch is correct. Please give it a try
I'm currently building wine from git on Lucid with the patch applied. I'm actually trying to get this bug:
http://bugs.winehq.org/show_bug.cgi?id=2812
resolved. I'll test with The Journeyman Project Turbo! and tell you how it goes.
P.S. - I actually took off work early when I saw your patch just to try this. (:
http://bugs.winehq.org/show_bug.cgi?id=23866
--- Comment #4 from David Love dlove@nighton.net 2010-08-13 12:15:58 --- Created an attachment (id=30127) --> (http://bugs.winehq.org/attachment.cgi?id=30127) Backtrace with patch applied.
http://bugs.winehq.org/show_bug.cgi?id=23866
--- Comment #5 from Dmitry Timoshkov dmitry@codeweavers.com 2010-08-13 22:54:08 --- (In reply to comment #2)
Created an attachment (id=30117)
--> (http://bugs.winehq.org/attachment.cgi?id=30117) [details]
forward MCIWndCreate to MCIWndCreateA
i'm not sure if the attached patch is correct. Please give it a try
+HWND16 MCIWndCreate16(HWND16 hwnd, HINSTANCE16 hinst16, DWORD style, LPSTR file) +{ + HINSTANCE hinst32; + if (hinst16 == GetModuleHandle16("msvideo.dll")) + hinst32 = GetModuleHandleA("msvfw32.dll"); + else + hinst32 = HINSTANCE_32(GetExePtr( hinst16 )); + return HWND_16(MCIWndCreateA(HWND_32(hwnd), hinst32, style, file)); +} ... +250 cdecl _MCIWndCreate(word word long str) MCIWndCreate16
Why do you think that 16-bit MCIWndCreate is supposed to be cdecl? If that's really the case you need to add CDECL to the API implementation.
http://bugs.winehq.org/show_bug.cgi?id=23866
--- Comment #6 from Dmitry Timoshkov dmitry@codeweavers.com 2010-08-16 00:15:50 --- (In reply to comment #5)
+250 cdecl _MCIWndCreate(word word long str) MCIWndCreate16
Why do you think that 16-bit MCIWndCreate is supposed to be cdecl? If that's really the case you need to add CDECL to the API implementation.
I've found an old copy of 16-bit VFW SDK, and MCIWndCreate is really cdecl there.
http://bugs.winehq.org/show_bug.cgi?id=23866
Stefan Leichter Stefan.Leichter@camLine.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #30117|0 |1 is obsolete| |
--- Comment #7 from Stefan Leichter Stefan.Leichter@camLine.com 2010-08-16 15:27:30 --- Created an attachment (id=30188) --> (http://bugs.winehq.org/attachment.cgi?id=30188) improved patch
http://bugs.winehq.org/show_bug.cgi?id=23866
--- Comment #8 from Dmitry Timoshkov dmitry@codeweavers.com 2010-08-17 01:09:19 --- (In reply to comment #7)
Created an attachment (id=30188)
--> (http://bugs.winehq.org/attachment.cgi?id=30188) [details]
improved patch
+HWND16 VFWAPIV MCIWndCreate16(HWND16 hwnd, HINSTANCE16 hinst16, DWORD style, LPSTR file)
This should be CDECL not VFWAPIV. First SDK defines this API as cdecl, and VFWAPIV assumes variable number of arguments which is not the case here.
http://bugs.winehq.org/show_bug.cgi?id=23866
Stefan Leichter Stefan.Leichter@camLine.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #30188|0 |1 is obsolete| |
--- Comment #9 from Stefan Leichter Stefan.Leichter@camLine.com 2010-08-24 15:26:40 --- (From update of attachment 30188) an implementation is commited (http://source.winehq.org/git/wine.git/?a=commit;h=6894af6fc0232d9ed7b62fa5e8...)
http://bugs.winehq.org/show_bug.cgi?id=23866
--- Comment #10 from David Love dlove@nighton.net 2010-08-24 15:42:11 --- (In reply to comment #9)
(From update of attachment 30188 [details]) an implementation is commited (http://source.winehq.org/git/wine.git/?a=commit;h=6894af6fc0232d9ed7b62fa5e8...)
It still has the problem that it's forwarding 16-bit messages to a function expecting 32-bit messages...
http://bugs.winehq.org/show_bug.cgi?id=23866
--- Comment #11 from Austin English austinenglish@gmail.com 2010-09-22 20:03:44 CDT --- (In reply to comment #10)
(In reply to comment #9)
(From update of attachment 30188 [details] [details]) an implementation is commited (http://source.winehq.org/git/wine.git/?a=commit;h=6894af6fc0232d9ed7b62fa5e8...)
It still has the problem that it's forwarding 16-bit messages to a function expecting 32-bit messages...
Does the application run?
http://bugs.winehq.org/show_bug.cgi?id=23866
--- Comment #12 from David Love dlove@nighton.net 2010-10-21 16:50:17 CDT --- (In reply to comment #11)
(In reply to comment #10)
(In reply to comment #9)
(From update of attachment 30188 [details] [details] [details]) an implementation is commited (http://source.winehq.org/git/wine.git/?a=commit;h=6894af6fc0232d9ed7b62fa5e8...)
It still has the problem that it's forwarding 16-bit messages to a function expecting 32-bit messages...
Does the application run?
Nope. Still crashes hard. I've spent some of my free time trying to handle message translation, but I have little to show for it. I can get the application launching and then complaining about the name of the avi file it's trying to load. I'm guessing I'm not properly converting a string somewhere.
The way I've been trying to do this is very much wrong (lots of duplicated code), but I'm just trying to get a handle on the problem.
The wine codebase is intimidating and scary to those of us who are uninitiated.
http://bugs.winehq.org/show_bug.cgi?id=23866
--- Comment #13 from Mark K markk@clara.co.uk 2012-01-13 15:05:38 CST --- Created attachment 38340 --> http://bugs.winehq.org/attachment.cgi?id=38340 +mci log with Wine 1.3.36, start program and click film strip icon
Testing Wine Guide with Wine 1.3.36, the program still crashes on attempting to play a video clip, but the error is different. Looking at the +mci log (attached), the program opens INTRO.CP which is an AVI file. Wine seems to be relying on the filename extension to determine the file type.
Run WINE.EXE. When the main window appears, click the film strip icon near the centre of the window. Get a message box with MCI Error in the title bar and this text: Cannot determine the device type from the given filename extension.
Clicking OK then causes a crash, the Program Error window mentions winevdm.exe.
http://bugs.winehq.org/show_bug.cgi?id=23866
Mark K markk@clara.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |markk@clara.co.uk
--- Comment #14 from Mark K markk@clara.co.uk 2012-01-17 16:07:55 CST --- After adding a registry key for the .cp extension (in HKLM\Windows NT\CurrentVersion\MCI Extensions) as avivideo, I was able to play one of the video clips. Windows doesn't need that workaround; it doesn't seem to pay attention to the filename extension.
Navigating elsewhere after playing a video clip results in a crash; I'll open a separate bug for that.
http://bugs.winehq.org/show_bug.cgi?id=23866
Damjan Jovanovic damjan.jov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |win16 CC| |damjan.jov@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=23866
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |6894af6fc0232d9ed7b62fa5e83 | |b4dc3e453076b Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED
--- Comment #15 from Austin English austinenglish@gmail.com --- (In reply to Mark K from comment #14)
After adding a registry key for the .cp extension (in HKLM\Windows NT\CurrentVersion\MCI Extensions) as avivideo, I was able to play one of the video clips. Windows doesn't need that workaround; it doesn't seem to pay attention to the filename extension.
Navigating elsewhere after playing a video clip results in a crash; I'll open a separate bug for that.
Please move the current issue to a new bug rather than recyling it. The original bug was fixed.
https://bugs.winehq.org/show_bug.cgi?id=23866
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #16 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.7.37.