SOLVED:
Windows 10x86 upgrade error
0xC1900101 - 0x3000D
Note: The solution only applies, if the
upgrade process crashes at features and drivers >80%
It does not matter, if you upgrade form W10-RTM.x86, W7.x86 or W8.1.x86 to
W10-TH2.x86.
Just found a bad and unnecessary bug in windows 10
setupplatform.exe.
due to Microsoft KB article 185294 the log-file
error code: 0xE06D7363 is an unhandled exception.
@Mirosoft: To properly
handle the error, you need to wrap the offending code in a try...catch block.
The exact problem seems to be a memory or stack overflow during working
on:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components]
In this key MS stores all the information of
*.msi packages installed on your system.
In my case the most entries came from “Windows Kits”, “Visual Studio” and
“Silverlight”.
I got round about 100000 pointers to files and
folders there and 30000 of those missing.
Most of the missing files are a result of my attempts to install/uninstall
VS2015/VS2013.
But there are also 2500 files missing in
“Windows Kit” and 4200 in “Silverlight”.
I did not had any problems with Silverlight, and the missing Silverlight files
all point to
old versions that
have been updates. So I assume those pointers to old Silverlight files
are not removed after an update installation. Only 30 key point to other MS
locations and
only 120 to files/folders of other 3-party programs. I just checked my W7
backup and
there were only 7000 files missing (2700 Kits, 4200 Silverlight, 30 VS).
What exactly does Windows 10 upgrade do here?
Example:
Let’s say the registry key
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\039BCFFAE8C975E588EFF61432AABE19]
contains a value/name
"67916EA72EF656B4E9C1D44E248877B2"=
"F:\\Program Files\\Microsoft Visual Studio
12.0\\Common7\\IDE\\VSWinExpress\\ProjectTemplates\\JavaScript\\Store
Apps\\Universal
Apps\\3082\\blankuniv\\Phone\\SquareTile44x44@scale-240.png"
and the file (SquareTile44x44@scale-240.png) is not in the right place, the scanner then
creates a log-file output like this:
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps\1040\blankuniv\Phone\SquareTile44x44@scale-240.png
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps\1040\blankuniv\Phone\SquareTile44x44@scale-240.png
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps\1040\blankuniv\Phone\SquareTile44x44@scale-240.png
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps\1040\blankuniv\Phone\SquareTile44x44@scale-240.png
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps\1040\blankuniv\Phone
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps\1040\blankuniv\Phone
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps\1040\blankuniv
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps\1040\blankuniv
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps\1040
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps\1040
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft Visual
Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal Apps
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
Apps
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps\Universal
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store Apps
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript\Store
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates\JavaScript
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE\ProjectTemplates
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7\IDE
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0\Common7
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual Studio 12.0
2015-11-18 20:28:42, Info GetNewLocation:
Request to F:\Windows.old\Program Files\Microsoft Visual Studio inside moved
folder redirected to F:\Program Files\Microsoft Visual Studio
2015-11-18 20:28:42, Info GetNewLocation:
Request to F:\Windows.old\Program Files\Microsoft Visual Studio inside moved
folder redirected to F:\Program Files\Microsoft Visual Studio
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Microsoft
Visual
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist
called for F:\Program Files\Microsoft Visual
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program
2015-11-18 20:28:42, Info PLATFORMTRACK: DoesObjectExist called for F:\Program
The log entries of an existing file look like this:
2015-11-18 20:23:45, Info GetNewLocation:
Request to F:\Windows.old\Program Files\Windows Kits\8.1\Include\um\FaxExt.h
inside moved folder redirected to F:\Program Files\Windows
Kits\8.1\Include\um\FaxExt.h
2015-11-18 20:23:45, Info PLATFORMTRACK: DoesObjectExist called for F:\Program Files\Windows
Kits\8.1\Include\um\FaxExt.h
2015-11-18 20:23:45, Info GetNewLocation:
Request to F:\Windows.old\Program Files\Windows Kits\8.1\Include\um\FaxExt.h
inside moved folder redirected to F:\Program Files\Windows
Kits\8.1\Include\um\FaxExt.h
2015-11-18 20:23:45, Info GetNewLocation:
Request to F:\Windows.old\Program Files\Windows Kits\8.1\Include\um\FaxExt.h
inside moved folder redirected to F:\Program Files\Windows
Kits\8.1\Include\um\FaxExt.h
2015-11-18 20:23:45, Info GetNewLocation:
Request to F:\Windows.old\Program Files\Windows Kits\8.1\Include\um\FaxExt.h
inside moved folder redirected to F:\Program Files\Windows
Kits\8.1\Include\um\FaxExt.h
For me it looks like a recursive call of a procedure.
After a key is processed, the used memory is not given back to the system.
Maybe the procedure itself is part of a
recursive call. As you can see in the picture setupplatform.exe causes an
unhandled c++ exception.
In the moment I’m not sure, if it is the total
number of entries or just the number of missing files that cause the crash. For
x64 upgrades with 4 or more GB of RAM there may be no problem. I upgraded a
W10x64 system with 89000 sub keys and 6000 missing files (3200 Silverlight, 60
VS, 350 other MS, 150 non MS) without any problem. If you upgrade an x86 system
you have only 2GB of RAM during the “features and drivers” installation, so an
overflow occurs much quicker. To reduce the amount of used memory a bit you can
try to use:
setup /Telemetry Disable
Solution that worked for me:
I deleted most of the sub keys under
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components]
that contain entries
to files that are not found. To check the number of missing files I have
written a small program, it can be found in the download folder (check_for_missing_components.exe)
Other solutions:
Repair your Visual Studio and Microsoft Kits
installation. That hopefully reduces the number of missing files.
Uninstall Visual Studio, Microsoft Kits and
Silverlight. That hopefully reduces the number of sub keys. (Didn’t
try this.)
Wait for MS to fix the bug. (May
take ages.).
If you are affected by the problem, please
send me an email with the output of my program.
If you want, I can send you the source code of
my program that removes my bad
entries.
To illustrate the different behaviour with/and
without repair of missing components I made two videos of a Hyper-V client.
The two upgrades start at the same checkpoint.
In the second upgrade I repaired the registry with my program.
VIDEO1
(without repair) VIDEO2
(with repair)
To test how much memory the scanning of the components key costs, I
made a test upgrade where I deleted the key
The upgrade (with repaired keys) has a minimum
of 194MB of available memory
The upgrade (without the key) has minimum of
475MB of available memory.
So the memory used is also depending on the
number of files present.
Solution that worked for others:
One user reported the same error. He had round
about 130000 sub-keys under Components, but only 7000 files not found.
So the missing files should not be the cause.
His solution was to replace his RAM.
That makes sense. As mentioned above the used memory is depending on the number
of entries. The step where 0x3000D occurs is very memory intensive. So, memory
is used, where no previous installation step has gone before. :-)