Hi! I started using wine (wine-20020122 compiled from source tarball) a couple of weeks ago to run a store-point-of-sale application. The idea is to port this windows application to linux. Before porting, we decided to check if the app could be emulated on linux with wine or recompiled with winelib. This is also necessary to run proprietary windows DLLs from third parties such as credit card companies that bind the application to specific hardware. The software uses a lot of external hardware such as printers, barcode scanners, special keyboards etc. These hws usually communicate through the serial port. Another important feature of the software is the use of DDE - Dynamic Data Exchange from the windows API. The application is broken into at least two executables that communicate through DDE. The http://www.winehq.com/News/status.html states that the implementation of the serial/parallel port is 90% complete but that DDE is still being implemented by Eric Pouech and not functional. After reviewing the manuals and spending a few days on trial runs, I decided to try and bring in the native DDEML.DLL and see if the exeīs would communicate. QUESTION: Should this native windows library work under wine, has anybody tried this? When I tried running the software with the native DDE engine (from Win98), I get DDE errors and a warning saying that DDE is not functional yet. This is expected as reported by the status.html page. When I tried running the software with a setup that only the DDEML.DLL was native, the program crashed with an exception. I tried running the program with several debug channels but couldnīt detect the problem. The only thing learned was that the program seemed to be crashing inside USER.DLL builtin code. I then tried several different native/builtin setups using mainly the following DLLs: Native DLLs DDEML.DLL OLE32.DLL COMCTL*.DLL COMDLG*.DLL SHELL.DLL SHELL32.DLL I even tried bringing in USER and USER32. Some of these setups were documented not to work and didnīt. Everytime I got a setup that seemed to work, the software would crash with basically an exception or page fault. I then decided to use winedbg. I was able to get a stack trace of the software at the time of the exception. It is at the end of this email. I also put a complete run of winedbg --debugmsg +msg 'c:\sw\store.exe' in http://admin.vmn.com.br/wine/out.txt From the trace it seemed that USER builtin in code was not yet finished and handling correctly DDE messages or had a messaging bug related to DDE or not. I read the functions in c code from the trace and couldnīt see any obvious problems. They seemed complete and finished. QUESTION: Is the builtin USER.DLL complete? QUESTION: Should it interact correctly with DDEML.DLL? If DDEML.DLL and USER.DLL were communicating through COM then they should interact correctly but since DDE is a protocol dating back to win3.1, probably older than OLE and COM, maybe they donīt. I have thought of reworking the original software to use SOCKETS but this is quite a lot of work. I am new to wine so I may be missing something obvious. Thanks in advance for any help. Miguel Feitosa TRACE First chance exception: page fault on read access to 0xc032090d in 32-bit code (0x400a47d6). In 32-bit mode. Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0277 GS:0000 EIP:400a47d6 ESP:40ca69ac EBP:40ca69b0 EFLAGS:00010202( R- 00 I - - 1 ) EAX:c032090f EBX:40100ef8 ECX:000003e7 EDX:c032090d ESI:c032090f EDI:40ca6a10 Stack dump: 0x40ca69ac (_end+0x237d58): 406c1c84 40ca69c8 406266c6 c032090f 0x40ca69bc (_end+0x237d68): 406c1c84 080745a8 40ca6b70 40ca6a84 0x40ca69cc (_end+0x237d78): 4062f205 000003e7 c032090f 40ca6a10 0x40ca69dc (_end+0x237d88): 40ca6a14 406c1c84 080745a8 40ca6b70 0x40ca69ec (_end+0x237d98): 00000000 00000000 00000000 406911ae 0x40ca69fc (_end+0x237da8): 406c1c84 00010021 00000000 00000000 0x40ca6a0c (_end+0x237db8): 004e: sel=0277 base=40cb7000 limit=00000fff 32-bit rw- Backtrace: =>0 0x400a47d6 (GlobalLock+0x1a(hmem=0xc032090f) [global.c:1090] in libntdll.so) (ebp=40ca69b0) 1 0x406266c6 (UnpackDDElParam+0x46(msg=0x3e7, lParam=0xc032090f, uiLo=0x40ca6a10, uiHi=0x40ca6a14) [misc.c:130] in libuser32.so) (ebp=40ca69c8) 2 0x4062f205 (post_dde_message+0x35(dest_tid=0x80745a8, data=0x40ca6b2c, info=0x40ca6b70, data=0x40ca6b2c, data=0x40ca6b2c, data=0x40ca6b2c) [message.c:1142] in libuser32.so) (ebp=40ca6a84) 3 0x4062ff94 (put_message_in_queue+0xc8(dest_tid=0x80745a8, info=0x40ca6b70, reply_size=0x0) [message.c:1587] in libuser32.so) (ebp=40ca6b50) 4 0x40630b0e (PostMessageW+0xba(hwnd=0x10029, msg=0x3e7, wparam=0x27, lparam=0xc032090f) [message.c:1995] in libuser32.so) (ebp=40ca6b94) 5 0x4063173a (PostMessage16+0x66(hwnd16=0x29, msg=0x3e7, wparam=0x27, lparam=0xc032090f) [msg16.c:89] in libuser32.so) (ebp=40ca6bc4) 6 0x4061f4e9 (USER_CallFrom16_p_word_wwwl+0x29(proc=0x406316d4, args=0x403b613e) [user.spec.c:1052] in libuser32.so) (ebp=40ca6be0) 7 0x4008f14a (__wine_call_from_16_word+0x8e [relay16.s] in libntdll.so) (ebp=40ca6c10) 8 0x03af:0x5a71 (bp=a5ae) 9 0x03af:0x38e8 (bp=a5cc) 10 0x03af:0x3617 (bp=a5f0) 11 0x03af:0x150a (bp=a618) 12 0x033f:0x1dec (bp=a640, far call assumed) 13 0x033f:0x1f1f (bp=a668) 14 0x028f:0x0c86 (bp=a904) 15 0x0287:0x00e0 (bp=0000) 0x400a47d6 (GlobalLock+0x1a [global.c:1090] in libntdll.so): cmpw $0x5342,0xfffffffe(%eax) 1090 if(pintern->Magic==MAGIC_GLOBAL_USED) Wine-dbg>First chance exception: page fault on read access to 0xc032090d in 32-bit code (0x400a47d6). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0277 GS:0000 EIP:400a47d6 ESP:40ca69ac EBP:40ca69b0 EFLAGS:00010202( R- 00 I - - 1 ) EAX:c032090f EBX:40100ef8 ECX:000003e7 EDX:c032090d ESI:c032090f EDI:40ca6a10 Stack dump: 0x40ca69ac (_end+0x237d58): 406c1c84 40ca69c8 406266c6 c032090f 0x40ca69bc (_end+0x237d68): 406c1c84 080745a8 40ca6b70 40ca6a84 0x40ca69cc (_end+0x237d78): 4062f205 000003e7 c032090f 40ca6a10 0x40ca69dc (_end+0x237d88): 40ca6a14 406c1c84 080745a8 40ca6b70 0x40ca69ec (_end+0x237d98): 00000000 00000000 00000000 406911ae 0x40ca69fc (_end+0x237da8): 406c1c84 00010021 00000000 00000000 0x40ca6a0c (_end+0x237db8): 004e: sel=0277 base=40cb7000 limit=00000fff 32-bit rw- Backtrace: =>0 0x400a47d6 (GlobalLock+0x1a(hmem=0xc032090f) [global.c:1090] in libntdll.so) (ebp=40ca69b0) 1 0x406266c6 (UnpackDDElParam+0x46(msg=0x3e7, lParam=0xc032090f, uiLo=0x40ca6a10, uiHi=0x40ca6a14) [misc.c:130] in libuser32.so) (ebp=40ca69c8) 2 0x4062f205 (post_dde_message+0x35(dest_tid=0x80745a8, data=0x40ca6b2c, info=0x40ca6b70, data=0x40ca6b2c, data=0x40ca6b2c, data=0x40ca6b2c) [message.c:1142] in libuser32.so) (ebp=40ca6a84) 3 0x4062ff94 (put_message_in_queue+0xc8(dest_tid=0x80745a8, info=0x40ca6b70, reply_size=0x0) [message.c:1587] in libuser32.so) (ebp=40ca6b50) 4 0x40630b0e (PostMessageW+0xba(hwnd=0x10029, msg=0x3e7, wparam=0x27, lparam=0xc032090f) [message.c:1995] in libuser32.so) (ebp=40ca6b94) 5 0x4063173a (PostMessage16+0x66(hwnd16=0x29, msg=0x3e7, wparam=0x27, lparam=0xc032090f) [msg16.c:89] in libuser32.so) (ebp=40ca6bc4) 6 0x4061f4e9 (USER_CallFrom16_p_word_wwwl+0x29(proc=0x406316d4, args=0x403b613e) [user.spec.c:1052] in libuser32.so) (ebp=40ca6be0) 7 0x4008f14a (__wine_call_from_16_word+0x8e [relay16.s] in libntdll.so) (ebp=40ca6c10) 8 0x03af:0x5a71 (bp=a5ae) 9 0x03af:0x38e8 (bp=a5cc) 10 0x03af:0x3617 (bp=a5f0) 11 0x03af:0x150a (bp=a618) 12 0x033f:0x1dec (bp=a640, far call assumed) 13 0x033f:0x1f1f (bp=a668) 14 0x028f:0x0c86 (bp=a904) 15 0x0287:0x00e0 (bp=0000) 0x400a47d6 (GlobalLock+0x1a [global.c:1090] in libntdll.so): cmpw $0x5342,0xfffffffe(%eax) 1090 if(pintern->Magic==MAGIC_GLOBAL_USED) Wine-dbg>First chance exception: page fault on read access to 0xc032090d in 32-bit code (0x400a47d6). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0277 GS:0000 EIP:400a47d6 ESP:40ca69ac EBP:40ca69b0 EFLAGS:00010202( R- 00 I - - 1 ) EAX:c032090f EBX:40100ef8 ECX:000003e7 EDX:c032090d ESI:c032090f EDI:40ca6a10 Stack dump: 0x40ca69ac (_end+0x237d58): 406c1c84 40ca69c8 406266c6 c032090f 0x40ca69bc (_end+0x237d68): 406c1c84 080745a8 40ca6b70 40ca6a84 0x40ca69cc (_end+0x237d78): 4062f205 000003e7 c032090f 40ca6a10 0x40ca69dc (_end+0x237d88): 40ca6a14 406c1c84 080745a8 40ca6b70 0x40ca69ec (_end+0x237d98): 00000000 00000000 00000000 406911ae 0x40ca69fc (_end+0x237da8): 406c1c84 00010021 00000000 00000000 0x40ca6a0c (_end+0x237db8): 004e: sel=0277 base=40cb7000 limit=00000fff 32-bit rw- Backtrace: =>0 0x400a47d6 (GlobalLock+0x1a(hmem=0xc032090f) [global.c:1090] in libntdll.so) (ebp=40ca69b0) 1 0x406266c6 (UnpackDDElParam+0x46(msg=0x3e7, lParam=0xc032090f, uiLo=0x40ca6a10, uiHi=0x40ca6a14) [misc.c:130] in libuser32.so) (ebp=40ca69c8) 2 0x4062f205 (post_dde_message+0x35(dest_tid=0x80745a8, data=0x40ca6b2c, info=0x40ca6b70, data=0x40ca6b2c, data=0x40ca6b2c, data=0x40ca6b2c) [message.c:1142] in libuser32.so) (ebp=40ca6a84) 3 0x4062ff94 (put_message_in_queue+0xc8(dest_tid=0x80745a8, info=0x40ca6b70, reply_size=0x0) [message.c:1587] in libuser32.so) (ebp=40ca6b50) 4 0x40630b0e (PostMessageW+0xba(hwnd=0x10029, msg=0x3e7, wparam=0x27, lparam=0xc032090f) [message.c:1995] in libuser32.so) (ebp=40ca6b94) 5 0x4063173a (PostMessage16+0x66(hwnd16=0x29, msg=0x3e7, wparam=0x27, lparam=0xc032090f) [msg16.c:89] in libuser32.so) (ebp=40ca6bc4) 6 0x4061f4e9 (USER_CallFrom16_p_word_wwwl+0x29(proc=0x406316d4, args=0x403b613e) [user.spec.c:1052] in libuser32.so) (ebp=40ca6be0) 7 0x4008f14a (__wine_call_from_16_word+0x8e [relay16.s] in libntdll.so) (ebp=40ca6c10) 8 0x03af:0x5a71 (bp=a5ae) 9 0x03af:0x38e8 (bp=a5cc) 10 0x03af:0x3617 (bp=a5f0) 11 0x03af:0x150a (bp=a618) 12 0x033f:0x1dec (bp=a640, far call assumed) 13 0x033f:0x1f1f (bp=a668) 14 0x028f:0x0c86 (bp=a904) 15 0x0287:0x00e0 (bp=0000) 0x400a47d6 (GlobalLock+0x1a [global.c:1090] in libntdll.so): cmpw $0x5342,0xfffffffe(%eax) 1090 if(pintern->Magic==MAGIC_GLOBAL_USED) Wine-dbg>130 params = GlobalLock(hMem); Wine-dbg>1142 if (!UnpackDDElParam( info->msg, info->lparam, &uiLo, &uiHi )) Wine-dbg>1587 return post_dde_message( dest_tid, &data, info ); Wine-dbg>1995 return put_message_in_queue( dest_tid, &info, NULL ); Wine-dbg>89 return PostMessageW( hwnd, msg32, wparam32, lparam ); Wine-dbg>1052 return proc( Wine-dbg> _______________________________________________ wine-users mailing list wine-users@winehq.com http://www.winehq.com/mailman/listinfo/wine-users