Hi Eric,

we still get
        ERR("IData not found for pid=%08lx. Suicide !!!\n", GetCurrentProcessId());

---------------------------------------------
This happens e.g. for Pirates for Windows:
trace:relay:start_process Starting Win32 process (entryproc=0x8048780)
err:module:LoadModule16 name: T:\wp.exe
err:module:MODULE_LoadModule16 T:\wp.exe: 0
err:module:NE_InitProcess
err:module:NE_LoadDLLs implicit load: WPIRSND.DLL
err:module:NE_LoadModule
err:module:NE_LoadDLLs implicit load: MMSYSTEM.DLL
err:module:MODULE_LoadModule16 MMSYSTEM.DLL: 1
err:module:NE_LoadDLLs implicit load2: MMSYSTEM.DLL
err:module:MODULE_LoadModule16 WPIRSND.DLL: 1
err:module:NE_LoadDLLs implicit load2: WPIRSND.DLL
err:module:NE_LoadDLLs implicit load: WIN87EM.DLL
err:module:MODULE_LoadModule16 WIN87EM.DLL: 1
err:module:NE_LoadDLLs implicit load2: WIN87EM.DLL
CallTo16(func=026f:0000,ds=0407) ss:sp=0407:c674
     AX=0000 BX=3000 CX=2000 DX=0000 SI=0000 DI=0406 BP=0000 ES=025f FS=0000
Call KERNEL.91: INITTASK() ret=026f:0005 ds=0407
     AX=0000 BX=3000 CX=2000 DX=0000 SI=0000 DI=0406 ES=025f EFL=00000286
err:task:InitTask16
CallTo16(func=0427:0054,ds=042f) ss:sp=0407:c640
     AX=0000 BX=0000 CX=1000 DX=0000 SI=0000 DI=042f BP=c66a ES=042f FS=0000
Call KERNEL.4: LOCALINIT(0x042f,0x0000,0x1000) ret=0427:0080 ds=042f
Ret  KERNEL.4: LOCALINIT() retval=0x0001 ret=0427:0080 ds=042f
Call KERNEL.23: LOCKSEGMENT(0xffff) ret=0427:008d ds=042f
Ret  KERNEL.23: LOCKSEGMENT() retval=0x042f ret=0427:008d ds=042f
Call KERNEL.3: GETVERSION() ret=0427:0092 ds=042f
Ret  KERNEL.3: GETVERSION() retval=0x07005f03 ret=0427:0092 ds=042f
Call KERNEL.102: DOS3CALL() ret=0427:00a7 ds=042f
     AX=305f BX=0000 CX=0001 DX=0700 SI=0000 DI=042f ES=042f EFL=00000202
Ret  KERNEL.102: DOS3CALL() retval=none ret=0427:00a7 ds=042f
     AX=0007 BX=00ff CX=0000 DX=0700 SI=0000 DI=042f ES=042f EFL=00000202
Call KERNEL.131: GETDOSENVIRONMENT() ret=0427:02c5 ds=042f
Ret  KERNEL.131: GETDOSENVIRONMENT() retval=0x00970000 ret=0427:02c5 ds=042f
Call KERNEL.15: GLOBALALLOC(0x2002,0x00001000) ret=0427:06af ds=042f
Ret  KERNEL.15: GLOBALALLOC() retval=0x041e ret=0427:06af ds=042f
Call KERNEL.18: GLOBALLOCK(0x041e) ret=0427:06c1 ds=042f
Ret  KERNEL.18: GLOBALLOCK() retval=0x041f0000 ret=0427:06c1 ds=042f
Call KERNEL.20: GLOBALSIZE(0x041f) ret=0427:06d3 ds=041f
Ret  KERNEL.20: GLOBALSIZE() retval=0x00001000 ret=0427:06d3 ds=041f
Call KERNEL.74: OPENFILE(0x0427202a "AWEMAN.DLL",0407:c57c,0x0400) ret=0427:0910 
ds=042f
Ret  KERNEL.74: OPENFILE() retval=0xffff ret=0427:0910 ds=042f
Call MMSYSTEM.404: 
WAVEOUTOPEN(042f:0414,0xffff,042f:042a,0x04270aaa,0x00000000,0x00030000) ret=0427:0a8b 
ds=042f
Ret  MMSYSTEM.404: WAVEOUTOPEN() retval=0x00000002 ret=0427:0a8b ds=042f
Call MMSYSTEM.701: MCISENDCOMMAND(0x0000,0x0803,0x00002000,0x042f0416) ret=0427:14c7 
ds=042f
err:mmsys:MULTIMEDIA_GetIData IData not found for pid=080628b8. Suicide !!!
Call user32.411: MessageBoxA(00000000,40ba4aac "Unhandled exception 0x80000003 at 
address 0x40ce3a43.\nDo you wish to debug it ?",400efbca "Error",00000014) 
ret=400cdca4 fs=024f
--------------------------------------------------

This execution is *perfectly* normal (except for the crash ;).
For implicitly loaded DLLs (wpirsnd.dll hexdump here):
00000008 : 4E 45 05 32 9B 00 0F 00-00 00 00 00 05 83 02 00 : NE.2............
00000009 : 00 10 00 00 54 00 01 00-00 00 00 00 02 00 03 00 : ....T...........
0000000A : 1C 00 40 00 50 00 50 00-7F 00 85 00 2A 01 00 00 : ..@.P.P.^?...*...
0000000B : 00 00 04 00 00 00 02 08-16 00 76 02 00 00 0A 03 : ..........v.....
0000000C : 18 00 27 21 60 0D 27 21-44 02 46 04 61 0D 46 04 : ..'!`.'!D.F.a.F.
0000000D : 07 57 50 49 52 53 4E 44-00 00 0F 5F 5F 5F 45 58 : .WPIRSND...___EX
0000000E : 50 4F 52 54 45 44 53 54-55 42 01 00 0F 57 41 56 : PORTEDSTUB...WAV
0000000F : 45 4F 55 54 43 41 4C 4C-42 41 43 4B 03 00 00 01 : EOUTCALLBACK....
00000010 : 00 0A 00 11 00 00 08 4D-4D 53 59 53 54 45 4D 06 : .......MMSYSTEM.
00000011 : 4B 45 52 4E 45 4C 04 55-53 45 52 04 01 03 A0 05 : KERNEL.USER... .
00000012 : 03 9A 08 03 AA 0A 03 76-10 00 06 53 4F 55 4E 44 : ....ª..v...SOUND
00000013 : 21 00 00 03 57 45 50 02-00 09 5F 53 4E 44 53 4F : !...WEP..._SNDSO
00000014 : 55 4E 44 04 00 00 00 00-00 00 00 00 00 00 00 00 : UND.............
, the DllEntryPoint *never* has to be called !!
And Wine does just that: it doesn't call it.

And as wp.exe implicitly (i.e. without LoadModule) references wpirsnd.dll,
which in turn implicitly references MMSYSTEM and does the calls to
 waveOutOpen, mciSendCommand, your MMSYSTEM init code is broken
and you need to fix it ;-)
That is my opinion and I'm pretty sure it's correct.

Or does anybody object to that ?

Andreas Mohr

Reply via email to