dde problems

Josh Duncan duncan at msmd.net
Tue Oct 30 10:25:19 CST 2001


Eric,

thanks for the pointers.  I removed the ms versions of the user32, kernel32
dlls.

I have attached a log file, containing the last ~100 lines of wine execution.
(the command I ran was "wine --debugmsg +dde,+relay --managed ./LOGOS.EXE")

am I doing something wrong if wine locks up my computer about half of the time
that I try running this app?  sometimes I can go back to a virtual console and
kill the wine processes(which in turn kills X, annoying but not so bad since xdm
kicks in), but often I have to reach for the power button.

--Josh

On Tue, Oct 30, 2001 at 07:45:05AM -0500, wine-devel-request at winehq.com wrote:
> Send wine-devel mailing list submissions to
> 	wine-devel at winehq.com
> 
> To subscribe or unsubscribe via the World Wide Web, visit
> 	http://www.winehq.com/mailman/listinfo/wine-devel
> or, via email, send a message with subject or body 'help' to
> 	wine-devel-request at winehq.com
> 
> You can reach the person managing the list at
> 	wine-devel-admin at winehq.com
> 
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of wine-devel digest..."
> 
> 
> Today's Topics:
> 
>    1. Re:problems with dde, I think... (Eric Pouech)
>    2. Re: Colour problems with latest DIB fix (=?iso-8859-1?Q?Fran=E7ois?= Gouget)
>    3. Re:(no subject) (Eric Pouech)
> 
> --__--__--
> 
> Message: 1
> Date: Tue, 30 Oct 2001 09:56:56 +0100
> Subject: Re:problems with dde, I think...
> From: "Eric Pouech"<eric.pouech at voila.fr>
> To: duncan at msmd.net
> Cc: wine-devel at winehq.com
> 
> > I can get the "library" window to show up when running wine, and the initial
> > "quick tip" window, but when I click the close button of the tip window wine
> > encounters an exception.  I believe the exception is in user32.dll, in the
> > ddeuninitialize16 function. This is going from my memory of the one time I was
> > able to attach to the wine process to catch the exception.
> well you have to be sure of that... you can always trace with -debugmsg +dde,+relay and see what gives (and post the 100 lines before the exception is thrown)
> 
> > I attempted copying the kernel32, user32 dll's from a win98 machine into my wine
> > dir, but this did not help.  
> never do that. native kernel, user and gdi DLL won't work under wine.
> A+
> 
> ---------------     
> Eric Pouech 
> (http://perso.wanadoo.fr/eric.pouech/)
> The future will be better tomorrow, 
> Vice President Dan Quayle
> 
> 
> ____________________________________________________________
> Faites un voeu et puis Voila ! www.voila.fr 
> Avec Voila Mail, consultez vos e-mails sur votre mobile Wap. 
> 
> 
> 
> --__--__--
> 
> Message: 2
> Date: Tue, 30 Oct 2001 01:06:35 -0800
> From: =?iso-8859-1?Q?Fran=E7ois?= Gouget <fgouget at codeweavers.com>
> To: Gerard Patel <gerard.patel at nerim.net>
> CC: wine-devel at winehq.com
> Subject: Re: Colour problems with latest DIB fix
> 
> Gerard Patel wrote:
> > 
> > At 12:53 PM 29/10/2001 -0800, you wrote:
> > 
> > >> Anyway, the attached patch is displaying the failing picture correctly.
> > >> What do you think ?
> > >
> > >   If I apply your patch, then I see that the red and blue are exchanged
> > >when I run vnc as:
> > >   vncserver :1 -geometry 800x600 -depth 16 -pixelformat bgr565
> > 
> > Could you explain a bit more what you are doing ? I would like to
> > try the same but I don't see how to do it.
> 
>    I guess you don't know about VNC then. Here's a description of VNC.
> VNC is a pretty cool open-source application which lets you access a
> computer remotely, kind of like X but different :-) It is composed of
> two parts, a server and a client.
>    The command above starts an VNC X server. This X server is not using
> any graphics card because it is not actually displaying anything. It
> just uses a chunk of memory to store the 'screen'. Because of that you
> can use about any pixel representation. In the above I specified that I
> wanted a 800x600 screen in 16 bits per pixel with the red, green and
> blue components in BGR order.
>    Once you have this server, you can start the client as 'xvncviewer
> :1'. This connects to the above VNC server and creates an 800x600 window
> that shows you what is displayed in that X server. The client can be run
> on the same computer or on another. Because the client/server protocol
> involves exchanging bitmap chunks the client is very simple and can run
> on about any platform. So you can access the above VNC server from an
> Windows computer if you want. 
>    There is also a VNC server for Windows. And this leads to one of the
> most interesting applications of VNC: remotely controlling a Windows
> computer. From another Windows computer, from any Unix platform, I
> believe there's even a client for PalmOS!
> 
>    Anyway, by playing with the -depth and -pixelformat options you can
> test Wine as if it were running into all sorts of X servers.
> 
> 
> > Also, if you use vnc to test, did you consider the possibility that vnc
> > could have a bug somewhere ?
> 
>    There's always that possibility but the results I get with VNC (based
> on XFree 3.3.6) are consistent with those I get from the
> neomagic&permedia drivers of XFree 4.1.0.
> 
> 
> [...]
> > I had (of course) a number of problems with your app.
> > First on my current computer - a Mandrake 8, with Xfree 4,
> > your procedure ran fine until it tried to link the thing and then it
> > reported that WinMain was missing. I changed in your code
> > 'main' to 'WinMain' and all was well.
> 
>    Sorry about that. By default winemaker assumes that applications are
> graphical applications. So it created a .spec file with "mode guiexe"
> and "init WinMain" instead of "mode cuiexe" and "init main".
> 
> 
> > I tried then to do the same on my other computer (Suse 6.1 with
> > Xfree 3.3 and a hand-compiled glibc 2.1.3). No joy. Configure
> > always failed with libwine.so failing to find symbols like dlclose
> > and the like. I did not figure out what is happening, I just
> > copied the binary from my other box and it worked.
> 
>    That's strange. It should be investigated...
> 
> 
> > As for the results, what I see is 11 lines of 13 blocks of 4 colors :
> > black, red, green, blue. I guess that when you speak of red and
> > blue exchanged, you mean that in one of these blocks the red
> > and blue lines are exchanged, right ?
> 
>    Yes. 
> 
> 
> > What is strange is that on both of my computers the display
> > of your app is the same with or without my patch. No line
> > exchanged that I can see.
> 
>    This probably means that you have a 16bpp rgb565 screen. Which seems
> normal. It also means that the Dib is a bgr888 Dib which does not exist
> in Windows. So something weird is happening. Here are the interesting
> kind of lines:
> 
> trace:bitmap:X11DRV_DIB_SetImageBits Dib: depth=24 r=ff0000 g=ff00 b=ff
> trace:bitmap:X11DRV_DIB_SetImageBits Bmp: depth=16/16 r=f800 g=7e0 b=1f
> 
>    This tells us that the Dib is a 24bpp dib and that it is an RGB dib,
> the only kind of 24bit DIB in Windows. What tells us that it's an RGB
> DIB is the r,g,b masks: the red color is encoded in the high bits of the
> 24bit value: 0xff0000. Then you hace the green, 0xff00, and the blue,
> 0xff, hence the rgb888 shorthand.
>    Similarly the 'Bmp', i.e. an XImage, is a 16bpp rgb image. Here you
> will notice that the mask for the green color, 0x7e0, uses 6 bits
> instead of just 5. This gives you the rgb565 denomination.
>    Finally we are in SetImage so we are converting the Dib into a Bmp,
> i.e. from rgb888 to rgb565 so we will call Convert_888_to_565_asis
> (since both are rgb).
>    Now I suspect that with your application the Dib masks don't look
> like the above.
> 
>    Actually I have a buffer overflow patch to send for the new DIB code.
> I don't think it's related but then, who knows. I will try to send it
> tomorrow morning.
> 
> 
> > >   As for The Sims, if you can also check the -debugmsg +bitmap output
> > >and make sure it's coherent.
> > 
> > I don't have The Sims... I use a little freeware app that is not available
> > from the internet anymore, unfortunately :-/.
> 
>    Do you think you could send this freeware app to me? Would I be able
> to run it without too much trouble?
> 
> 
> -- 
> François Gouget
> fgouget at codeweavers.com
> 
> 
> --__--__--
> 
> Message: 3
> Date: Tue, 30 Oct 2001 10:09:05 +0100
> Subject: Re:(no subject)
> From: "Eric Pouech"<eric.pouech at voila.fr>
> To: ughbash at yahoo.com
> Cc: wine-devel at winehq.com
> 
> > I had an idea for using poll or select (rather than
> > calculating expected play time and using a timeout) in
> > audio.c The idea is to have a thread that sits on a
> > select and dispatches a synthetic wine event  (ie.
> > we'd make up a WM_DSP_READY event) when the select
> > returns.
> well, from a generic point of view this is something to be done
> however, I don't see where you'd like to dispatch the event to ?
> the playback thread in this case would have to wait on two different things:
> - the /dev/dsp fd (when the queue becomes non full)
> - the external events (play/pause/stop/quit)
> so you have to decide whether you use unix or Windows sync mechanisms here. unix would be more effective, but a bit harder to do. Windows would be nice (you just need to call the wine server request to create from a unix fd into a windows handle and wait on it.
>  
> A+
> ---------------     
> Eric Pouech 
> (http://perso.wanadoo.fr/eric.pouech/)
> The future will be better tomorrow, 
> Vice President Dan Quayle
> 
> 
> ____________________________________________________________
> Faites un voeu et puis Voila ! www.voila.fr 
> Avec Voila Mail, consultez vos e-mails sur votre mobile Wap. 
> 
> 
> 
> 
> --__--__--
> 
> _______________________________________________
> wine-devel mailing list  -  wine-devel at winehq.com
> http://www.winehq.com/mailman/listinfo/wine-devel
> 
> 
> End of wine-devel Digest
-------------- next part --------------
08075d10:Call KERNEL.49: GETMODULEFILENAME(0x09a6,09a7:2af2,0x0104) ret=097f:27c1 ds=09a7
08075d10:Ret  KERNEL.49: GETMODULEFILENAME() retval=0x0012 ret=097f:27c1 ds=09a7
08075d10:Call KERNEL.88: LSTRCPY(0x09a72af2,0x09a72bf6 "C:") ret=097f:27f4 ds=09a7
08075d10:Ret  KERNEL.88: LSTRCPY() retval=0x09a72af2 ret=097f:27f4 ds=09a7
08075d10:Call KERNEL.89: LSTRCAT(09a7:2af2 "C:",0x09a72cf6 "\\LOGOS20\\") ret=097f:2805 ds=09a7
08075d10:Ret  KERNEL.89: LSTRCAT() retval=0x09a72af2 ret=097f:2805 ds=09a7
08075d10:Call KERNEL.89: LSTRCAT(09a7:2af2 "C:\\LOGOS20\\",0x097f41cc "LRSDVI16.DLL") ret=097f:2816 ds=09a7
08075d10:Ret  KERNEL.89: LSTRCAT() retval=0x09a72af2 ret=097f:2816 ds=09a7
08075d10:Call KERNEL.95: LOADLIBRARY(0x09a72af2 "C:\\LOGOS20\\LRSDVI16.DLL") ret=097f:2821 ds=09a7
08075d10:CallTo16(func=09c7:037e,ds=09cf) ss:sp=09a7:2abc
     AX=0000 BX=0000 CX=0400 DX=0000 SI=0000 DI=09ce BP=2ae6 ES=09cf FS=0000
08075d10:Call KERNEL.4: LOCALINIT(0x09cf,0x0000,0x0400) ret=09c7:03aa ds=09cf
08075d10:Ret  KERNEL.4: LOCALINIT() retval=0x0001 ret=09c7:03aa ds=09cf
08075d10:Call KERNEL.23: LOCKSEGMENT(0xffff) ret=09c7:03b7 ds=09cf
08075d10:Ret  KERNEL.23: LOCKSEGMENT() retval=0x09cf ret=09c7:03b7 ds=09cf
08075d10:Call KERNEL.3: GETVERSION() ret=09c7:03bc ds=09cf
08075d10:Ret  KERNEL.3: GETVERSION() retval=0x07005f03 ret=09c7:03bc ds=09cf
08075d10:Call KERNEL.102: DOS3CALL() ret=09c7:03d1 ds=09cf
     AX=305f BX=0000 CX=0001 DX=0700 SI=0000 DI=09ce ES=09cf EFL=00000202
08075d10:Ret  KERNEL.102: DOS3CALL() retval=none ret=09c7:03d1 ds=09cf
     AX=0007 BX=00ff CX=0000 DX=0700 SI=0000 DI=09ce ES=09cf EFL=00000202
08075d10:Call KERNEL.131: GETDOSENVIRONMENT() ret=09c7:05f1 ds=09cf
08075d10:Ret  KERNEL.131: GETDOSENVIRONMENT() retval=0x009f0000 ret=09c7:05f1 ds=09cf
08075d10:Call KERNEL.15: GLOBALALLOC(0x2002,0x00001000) ret=09c7:097d ds=09cf
08075d10:Ret  KERNEL.15: GLOBALALLOC() retval=0x09be ret=09c7:097d ds=09cf
08075d10:Call KERNEL.18: GLOBALLOCK(0x09be) ret=09c7:098f ds=09cf
08075d10:Ret  KERNEL.18: GLOBALLOCK() retval=0x09bf0000 ret=09c7:098f ds=09cf
08075d10:Call KERNEL.20: GLOBALSIZE(0x09bf) ret=09c7:09a1 ds=09bf
08075d10:Ret  KERNEL.20: GLOBALSIZE() retval=0x00001000 ret=09c7:09a1 ds=09bf
08075d10:RetFrom16() ss:sp=09a7:2abc
     AX=0001 BX=000b CX=0000 DX=09c7 BP=2ae6 SP=2abc
08075d10:Ret  KERNEL.95: LOADLIBRARY() retval=0x09ce ret=097f:2821 ds=09a7
08075d10:Call USER.118: REGISTERWINDOWMESSAGE(0x097f4208 "DVI TALKBACK") ret=097f:2881 ds=09a7
08075d10:Ret  USER.118: REGISTERWINDOWMESSAGE() retval=0xc051 ret=097f:2881 ds=09a7
08075d10:Call USER.175: LOADBITMAP(0x09a6,0x0000006a #006a) ret=097f:3e21 ds=09a7
08075d10:Call x11drv.GetDeviceCaps(40c5ed7c,0000000c) ret=40a8be27
08075d10:Ret  x11drv.GetDeviceCaps() retval=00000010 ret=40a8be27
08075d10:Call x11drv.GetDeviceCaps(40c5ed7c,0000000e) ret=40a8be27
08075d10:Ret  x11drv.GetDeviceCaps() retval=00000001 ret=40a8be27
08075d10:Ret  USER.175: LOADBITMAP() retval=0x0c38 ret=097f:3e21 ds=09a7
08075d10:Call USER.175: LOADBITMAP(0x09a6,0x00000069 #0069) ret=097f:3e2e ds=09a7
08075d10:Call x11drv.GetDeviceCaps(40c5ed7c,0000000c) ret=40a8be27
08075d10:Ret  x11drv.GetDeviceCaps() retval=00000010 ret=40a8be27
08075d10:Call x11drv.GetDeviceCaps(40c5ed7c,0000000e) ret=40a8be27
08075d10:Ret  x11drv.GetDeviceCaps() retval=00000001 ret=40a8be27
08075d10:Ret  USER.175: LOADBITMAP() retval=0x0c3c ret=097f:3e2e ds=09a7
08075d10:Call GDI.82: GETOBJECT(0x0c38,0x000e,09a7:0688) ret=097f:3e40 ds=09a7
08075d10:Ret  GDI.82: GETOBJECT() retval=0x000e ret=097f:3e40 ds=09a7
08075d10:Call KERNEL.127: GETPRIVATEPROFILEINT(0x097f4294 "DVI",0x097f4342 "WatchDOSBox",0x0000,0x097f4216 "LOGOS20.INI") ret=097f:38ea ds=09a7
08075d10:Ret  KERNEL.127: GETPRIVATEPROFILEINT() retval=0x0000 ret=097f:38ea ds=09a7
08075d10:Call KERNEL.127: GETPRIVATEPROFILEINT(0x097f4294 "DVI",0x097f434e "MONITORINTERVAL",0x03e8,0x097f4216 "LOGOS20.INI") ret=097f:3903 ds=09a7
08075d10:Ret  KERNEL.127: GETPRIVATEPROFILEINT() retval=0x03e8 ret=097f:3903 ds=09a7
08075d10:Call KERNEL.127: GETPRIVATEPROFILEINT(0x097f4294 "DVI",0x097f42b4 "LastBibleSelected",0x0000,0x097f4216 "LOGOS20.INI") ret=097f:391b ds=09a7
08075d10:Ret  KERNEL.127: GETPRIVATEPROFILEINT() retval=0x0000 ret=097f:391b ds=09a7
08075d10:Call KERNEL.128: GETPRIVATEPROFILESTRING(0x097f4294 "DVI",0x097f42a6 "Position",0x097f435e "0,0",098f:0000,0x0104,0x097f4216 "LOGOS20.INI") ret=097f:3944 ds=09a7
08075d10:Ret  KERNEL.128: GETPRIVATEPROFILESTRING() retval=0x0003 ret=097f:3944 ds=09a7
08075d10:Call KERNEL.47: GETMODULEHANDLE(09a7:0564 "LOGOS.EXE") ret=097f:3851 ds=09a7
08075d10:Ret  KERNEL.47: GETMODULEHANDLE() retval=0x09af00bf ret=097f:3851 ds=09a7
08075d10:Call DDEML.2: DDEINITIALIZE(09a7:2ae2,0x097f3282,0x00000000,0x00000000) ret=097f:3420 ds=09a7
08075d10:Call x11drv.CreateWindow(00030021,417c6cd4,00000000) ret=40bbab77
08075d10:Call window proc 0x40b58810 (hwnd=00030021,msg=WM_NCCREATE,wp=00000000,lp=417c6cd4)
08075d10:Ret  window proc 0x40b58810 (hwnd=00030021,msg=WM_NCCREATE,wp=00000000,lp=417c6cd4) retval=00000001
08075d10:Call window proc 0x40b58810 (hwnd=00030021,msg=WM_NCCALCSIZE,wp=00000000,lp=417c6a80)
08075d10:Ret  window proc 0x40b58810 (hwnd=00030021,msg=WM_NCCALCSIZE,wp=00000000,lp=417c6a80) retval=00000000
08075d10:Call window proc 0x40b58810 (hwnd=00030021,msg=WM_CREATE,wp=00000000,lp=417c6cd4)
08075d10:Ret  window proc 0x40b58810 (hwnd=00030021,msg=WM_CREATE,wp=00000000,lp=417c6cd4) retval=00000000
08075d10:Call window proc 0x40b58810 (hwnd=00030021,msg=WM_SIZE,wp=00000000,lp=00000000)
08075d10:Ret  window proc 0x40b58810 (hwnd=00030021,msg=WM_SIZE,wp=00000000,lp=00000000) retval=00000000
08075d10:Call window proc 0x40b58810 (hwnd=00030021,msg=WM_MOVE,wp=00000000,lp=00000000)
08075d10:Ret  window proc 0x40b58810 (hwnd=00030021,msg=WM_MOVE,wp=00000000,lp=00000000) retval=00000000
08075d10:Ret  x11drv.CreateWindow() retval=00000001 ret=40bbab77
08075d10:Ret  DDEML.2: DDEINITIALIZE() retval=0x0000 ret=097f:3420 ds=09a7
08075d10:Call DDEML.21: DDECREATESTRINGHANDLE(0x00000003,0x097f4302 "Logos",0x03ec) ret=097f:3438 ds=09a7
08075d10:Ret  DDEML.21: DDECREATESTRINGHANDLE() retval=0x0000c008 ret=097f:3438 ds=09a7
08075d10:Call DDEML.22: DDEFREESTRINGHANDLE(0x00000003,0x0000c008) ret=097f:3453 ds=09a7
08075d10:Ret  DDEML.22: DDEFREESTRINGHANDLE() retval=0x0001 ret=097f:3453 ds=09a7
08075d10:Call DDEML.3: DDEUNINITIALIZE(0x00000003) ret=097f:345e ds=09a7
fixme:ddeml:DdeUninitialize16  stub calling DdeUninitialize
08075d10:Call x11drv.ResetSelectionOwner(00030021,00000000) ret=40bbb34c
08075d10:Ret  x11drv.ResetSelectionOwner() retval=00000000 ret=40bbb34c
08075d10:Call x11drv.ShowWindow(00030021,00000000) ret=40bbf972
08075d10:Ret  x11drv.ShowWindow() retval=00000000 ret=40bbf972
08075d10:Call x11drv.ResetSelectionOwner(00030021,00000001) ret=40bbb164
08075d10:Ret  x11drv.ResetSelectionOwner() retval=00000000 ret=40bbb164
08075d10:Call window proc 0x40b58810 (hwnd=00030021,msg=WM_DESTROY,wp=00000000,lp=00000000)
08075d10:Ret  window proc 0x40b58810 (hwnd=00030021,msg=WM_DESTROY,wp=00000000,lp=00000000) retval=00000000
08075d10:Call window proc 0x40b58810 (hwnd=00030021,msg=WM_NCDESTROY,wp=00000000,lp=00000000)
08075d10:Ret  window proc 0x40b58810 (hwnd=00030021,msg=WM_NCDESTROY,wp=00000000,lp=00000000) retval=00000000
08075d10:Call x11drv.DestroyWindow(00030021) ret=40bba1da
08075d10:Ret  x11drv.DestroyWindow() retval=00000001 ret=40bba1da
wine: Unhandled exception, starting debugger...
Warning: /usr/bin/winedbg.exe not accessible from a configured DOS drive
Warning: /usr/bin/winedbg not accessible from a configured DOS drive
Warning: /usr/bin/winedbg 134652320.exe not accessible from a configured DOS drive
Warning: /usr/bin/winedbg 134652320 not accessible from a configured DOS drive
Warning: /usr/bin/winedbg 134652320 112.exe not accessible from a configured DOS drive
Warning: /usr/bin/winedbg 134652320 112 not accessible from a configured DOS drive
err:seh:start_debugger Couldn't start debugger ("/usr/bin/winedbg 134652320 112") (2)
Read the Wine Developers Guide on how to set up winedbg or another debugger


More information about the wine-devel mailing list