This is one of those days, when you do one thing, you compile, everything works perfectly, but for some reason, the second time you compile, nothing works any more :).
Platform Builder 6 has a very complex sequential build process. In theory, is has four main steps:
- the compilation phase
- the sysgen phase
- the release copy phase
- and the make run-time image phase
Each of these steps uses a very large number of small files containing module and file definitions that will be included in the final image, registry keys and values for the run-time image created during a cold boot, RAM file system directories, files and links, database to be included in the object store of the run-time image, created also during a cold boot and locale-specific definitions (strings), that will replace visible texts to a user.
In conclusion, lots of files, which lots of values. Therefore, lots of possible vulnerabilities.
Now, as I mentioned in the beginning of the post, this is one of those days, when a WinCE6.0 process works perfectly, until boom! No modification done to the image, and while building a second time, I get lots of strange errors (ok, I admit, I did add some insignificant registry keys, but there’s no way a registry key could affect missing .tmp files used during a build process).
After a lot of digging up and re-re-re-re-re-re-re-build, I’ve realized it’s all got to do with my antivirus. Even though I pray for health and wealth for its developers when I go to sleep, I do admit it has a drawback: scanning the opened files used by an application will delay application responsiveness and therefore, the build process.
Apparently Kaspersky isn’t related in any way to Platform Builder (unfortunately), so I had to manually detect which are the executables that run most often in the build process of a WinCE 6 O/S image and create an exclusion for them. Since most of the anti-viruses has such a drawback, I’ll list them so you can add them yourself to your anti-virus’ exclusion list as well:
- Platform Builder addlib (<WinCE installation folder>\public\common\oak\bin\i386\addlib.exe)
- Platform Builder Res2Res Resource Copy Tool (<WinCE installation folder>\public\common\oak\bin\i386\res2res.exe)
- Platform Builder Build File Filter Tool (<WinCE installation folder>\public\common\oak\bin\i386\cefilter.exe)
- Microsoft Resource File to COFF Object Conversion Utility (<WinCE installation folder>\sdk\bin\i386\cvtres.exe)
- Microsoft Linker Stub (<WinCE installation folder>\sdk\bin\i386\editbin.exe)
- Microsoft Program Database (<WinCE installation folder>\sdk\bin\i386\mspdbsrv.exe)
- Platform Builder Program Maintenance Utility (<WinCE installation folder>\sdk\bin\i386\nmake.exe)
- Microsoft Incremental Linker (<WinCE installation folder>\sdk\bin\i386\x86\link.exe)
- Platform Builder PBSpawn Utility (%Program Files%\Microsoft Platform Builder\6.00\cepb\IdeVS\PBSpawn.exe)
- Microsoft Visual Studio 2005 (%Program Files%\Microsoft Visual Studio 8\Common7\IDE\devenv.exe)
Addid this files should help you in case you keep getting random BLDDEMO errors, which don’t really say much of an error in the error or log file…
So, in conclusion, there are some executables that would like to open a file, but the anti-virus kicks in, scans the file and executable will stop with an error for not being able to open (read ‘find’, instead :-)) the file. So what you should do is to add a collection of executables as exclusions to the anti-virus, thus not scanning the files that those executables open.
That’s all for now.
P.S.: You might find that xcopy or copy will also be used (doh!). Adding them as an exclusion is however not such a bright idea, since most viruses will use either of them to populate themselves through the drives…