On Thu, Jan 22, 2009 at 6:59 PM, Reece Dunn msclrhd@googlemail.com wrote:
2009/1/22 Luke Kenneth Casson Leighton lkcl@lkcl.net:
0010:trace:file:RtlGetFullPathName_U (L"C:\windows\system32\cmd.exe.manifest" 520 0xff9aaaf4 (nil)) attr=00000000 sharing=00000001 disp=1 options=00000010 ea=(nil).0x00000000 0009:trace:seh:start_debugger Starting debugger "winedbg --auto 8 100"
????? !!!!
ahh fer xxxx's sake :)
this is after various complicated ways to create a subprocess with which to communicate (stdin / stdout) involving CreatePipe, open_osfhandle, - but it's being done from an app that's compiled with msvcr80.
0009: close_handle() = 0 0010:trace:heap:RtlAllocateHeap (0x110000,00000002,00000038): returning 0x114e58 0010:trace:actctx:get_manifest_in_module looking for res #0001 in module 0x7ec10000 L"C:\windows\system32\cmd.exe" 0010:trace:heap:RtlFreeHeap (0x110000,00000002,0x114e58): returning TRUE 0010:trace:resource:LdrFindResource_U module 0x7ec10000 type #0018 name #0001 lang 0000 level 3 0010:trace:resource:find_entry_by_id root 0x7ec322e4 dir 0x7ec322e4 id 0018 not found 0010:trace:actctx:get_manifest_in_associated_manifest looking for manifest associated with (null) id 1 0010:trace:heap:RtlAllocateHeap (0x110000,00000002,00000060): returning 0x114e58 0009:trace:heap:RtlFreeHeap (0x110000,00000002,0x1361e0): returning TRUE 0010:trace:file:RtlDosPathNameToNtPathName_U (L"C:\windows\system32\cmd.exe.manifest",0xffdc6170,(nil),(nil)) 0009:trace:process:CreateProcessW started process pid 000f tid 0010 0010:trace:file:RtlGetFullPathName_U (L"C:\windows\system32\cmd.exe.manifest" 520 0xffdc5f14 (nil))
... but hang on... some notes somewhere after a google search for cmd.exe.manifest, apparently there isn't supposed to _be_ a manifest for cmd.exe - so that it can't be "themed".
cmd.exe *may* have a manifest, it's just that it won't specify common controls v6 (which enables the theming code in >= XP). For example, patch.exe and install.exe in cygwin have .manifest files to tell Vista "I am *not* an installer!".
... wossgoinon?! :)
When Wine (or Windows >= XP) loads a process (exe or dll), it looks for a .manifest file in the folder where the exe is located. If it does not find one there, it looks for a RT_MANIFEST resource in the processes resource block. Failing that, it assumes that the process was not built with a manifest. NOTE: I'm not sure on the ordering of the check for a manifest file (i.e. which takes precedence -- external file or embedded resource).
In the trace log above, you can see that Wine is checking for an embedded manifest resource first, then the external .manifest file.
So the problem lies elsewhere... do you have any more information on the debug output?
hiya reece, thanks for responding. yes, i do - lemme get back to you with it: i'm in the middle of a ... actually, i _do_ have it:
http://lkcl.net/subprocess.wine.trace
it's a trace+all so is about 15mb (sorry!)
i'm doing a rebuild back to msvcrt to see if the problem goes away.
reproducing this in c-code will be quite a bit of work - it's not like the other tests i did (the msvcrt ones) - it'll be about... 150 to 200 lines of c code, doing a CreateProcess and other tricks, and would take about a day to go through the python code, replicating the python subsytems being used _without_ the python.
and this is getting pretty draining - it's been a _lot_ of work.
l.