Hi all,
While running a program, I got a crash in the CreateProcessA, in the following debug TRACE line :
if (lpStartupInfo->lpDesktop) FIXME("(%s,...): lpStartupInfo->lpDesktop %s ignored\n", name, lpStartupInfo->lpDesktop);
By running the debugger, I got this :
Wine-dbg>print *lpStartupInfo print *lpStartupInfo {cb=83886080, lpReserved=*** Invalid address 0x4c000000 (_end+0xb823758) , lpDesktop=*** Invalid address 0x4c403416 (_end+0xbc26b6e) , lpTitle=*** Invalid address 0x70403416 (_end+0x2fc26b6e) , dwX=1883255830, dwY=406860822, dwXSize=1107296256, dwYSize=-1795162040, dwXCountChars=1849690049, dwYCountChars=1819042932, dwFillAttribute=1819042862, dwFlags=791899392, wShowWindow=26988, cbReserved2=14946, lpReserved2=*** Invalid address 0x7273752f (_end+0x31f5ac87) , hStdInput=409955375, hStdOutput=1107296256, hStdError=-285212600}
It means that we are seeing a very broken application where these fields (lpDesktop and lpTitle) do not seem to be filled in propery...
Now I never tried running this application on Windows to test if it even works, but I suppose it should work (otherwise it would not be burned on the CD :-) ).
So what should we do ? Suppress the '%s' and replace it with a '%p' ? Add a check on the pointer to see if it's valid ?
Lionel
PS: BTW, why is this application that is on a win95 filesystem get run as : Call kernel32.CreateFileA(00405070 "~inst.exe",40000000,00000000,00000000,00000002,00000080,00000000) ret=00401391 tid=080678a0 Thus leading to a "~inst.exe" not found...
On Fri, 20 Apr 2001, Lionel Ulmer wrote: [...]
if (lpStartupInfo->lpDesktop) FIXME("(%s,...): lpStartupInfo->lpDesktop %s ignored\n", name, lpStartupInfo->lpDesktop);
[...]
So what should we do ? Suppress the '%s' and replace it with a '%p' ? Add a check on the pointer to see if it's valid ?
Use debugstr_a?
if (lpStartupInfo->lpDesktop) FIXME("(%s,...): lpStartupInfo->lpDesktop %s ignored\n", debugstr_a(name), debugstr_a(lpStartupInfo->lpDesktop));
-- Francois Gouget fgouget@free.fr http://fgouget.free.fr/ Demander si un ordinateur peut penser revient à demander si un sous-marin peut nager.
On Fri, Apr 20, 2001 at 03:34:40PM -0700, Francois Gouget wrote:
On Fri, 20 Apr 2001, Lionel Ulmer wrote: [...]
if (lpStartupInfo->lpDesktop) FIXME("(%s,...): lpStartupInfo->lpDesktop %s ignored\n", name, lpStartupInfo->lpDesktop);
[...]
So what should we do ? Suppress the '%s' and replace it with a '%p' ? Add a check on the pointer to see if it's valid ?
Use debugstr_a?
if (lpStartupInfo->lpDesktop) FIXME("(%s,...): lpStartupInfo->lpDesktop %s ignored\n", debugstr_a(name), debugstr_a(lpStartupInfo->lpDesktop));
Well, that does not help :
Unhandled exception: page fault on read access to 0x30403416 in 32-bit code (0x4005a7d2).ed setuid root' In 32-bit mode. 0x4005a7d2 (wine_dbgstr_an+0x8a [debugtools.c:87]): movb 0x0(%edi),%cl 87 while (n-- > 0 && *src)
One should such a function that also catches exceptions :-)
Lionel