Time | Reporter | Type | Content | Screenshot | RTF Note |
8/12/2012 22:08 | Shmuel Gershon | (Rapid Reporter version) | 1.12.01.06 | | |
8/12/2012 22:08 | Shmuel Gershon | Session Reporter | Shmuel Gershon | | |
8/12/2012 22:08 | Shmuel Gershon | Session Charter | Angry Weasel Challenge - Figure out why TheApp.exe won't load and cause it to load by solving the problem. | | |
8/12/2012 22:09 | Shmuel Gershon | Setup | Windows 7 Ent 64b; SP1; English edition. Intel i5 processor; 4Gb RAM. 4.8 Windows Experience Index. | | |
8/12/2012 22:10 | Shmuel Gershon | Setup | Apps installed: Visual Studio 2010; Office 2010; IE9. (these may have impact on executables running; between other apps) | | |
8/12/2012 22:15 | Shmuel Gershon | Note | Warning: Spoiler Alert: Go to this link to try the challenge for yourself before continuing. | | |
8/12/2012 22:15 | Shmuel Gershon | Note | Shortcut: To skip investigations and jump directly to the solution, click here!! | | |
8/12/2012 22:18 | Shmuel Gershon | autogenerated | extended note saved | | 1_20120812_221807.rtf |
8/12/2012 22:18 | Shmuel Gershon | Note | Summary of information available on website (post text attached): a) App was compiled with Visual Studio 2012; b) it was compiled for 32b architecture; c) application is contained inside one executable TheApp.exe; d) it needs the VC runtime to run (it comes with msvcr110.dll); e) application should launch but doesn't; f) the failure to load is of such nature that it can be caused by having another app installed in the system. | | 1_20120812_221807.rtf |
8/12/2012 22:30 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 22:31 | Shmuel Gershon | Setup | Opened the zip file and copied the contents to our own driver. We want to run it from a local path at this moment (running it in the least hostile environment possible in order to better isolate the problem). | | |
8/12/2012 22:32 | Shmuel Gershon | Check | As if we didn't know we'll check that app works ('loads'/'runs'). But double click on the icon --> nothing seems to happen! | | |
8/12/2012 22:33 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 22:33 | Shmuel Gershon | Bug | TheApp.exe is not loading on double-click; on enter or on right-click-open. (This is the problem we want to troubleshoot during the testing session) | | |
8/12/2012 22:35 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 22:35 | Shmuel Gershon | Test | What can cause an app not to load? One of the first things that comes to mind is lack of necessary privileges. We can test for this by ''Running as administrator'' --> Observation: Same (lack of) reaction. | | |
8/12/2012 22:37 | Shmuel Gershon | Note | Windows 7 has compatibility modes that emulate older processors or operating system or hardware platform in order to allow poorly-compatible software to remain operational. What if TheApp.exe is expecting a specific environment to run? Let's make some experiments. | | |
8/12/2012 22:38 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 22:39 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 22:39 | Shmuel Gershon | Test | Compatibility modes can be selected; but there's a mode where Windows find the compatibility mode autonomously which can be activated by selecting ''Troubleshoot Compatibility'' on context menu. Windows recommends XP SP2 (why not SP3?); so let's try this configuration --> Observation: Same (lack of) reaction. | | |
8/12/2012 22:42 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 22:42 | Shmuel Gershon | Test | Instead of only trying with Windows recommendation (SP2); let's try with SP3 as well --> Observation: No new behavior. | | |
8/12/2012 22:43 | Shmuel Gershon | Bug | Additional information. App wont load on double-click; right-click; enter; admin mode; XPSP2; XPSP3. | | |
8/12/2012 22:45 | Shmuel Gershon | Note | But in fact; we don't know yet that the app isn't loading. Maybe IT IS loading; but isn't showing any graphic interface. Let's try to look at the process execution and at the output on command line. | | |
8/12/2012 22:50 | Shmuel Gershon | Test | To try to catch TheApp.exe's process on Windows Task Manager we'll open the Task Manager window; sort by name; scroll to 'T' and repeatedly open TheApp.exe. | | |
8/12/2012 22:53 | Shmuel Gershon | Test | Observation: TheApp.exe footprint in Task Manager is surprisingly low; you can barely see it running (even if leaving enter pressed). It has also (apparently) a protection against two instances of the processes running but I can't confirm that yet. | | |
8/12/2012 22:57 | Shmuel Gershon | Test | Running TheApp.exe from a command line console window (in admin mode) will show us if it is printing something before exit; anything that we can use as clue. Observation: No identifiable console output; see attachment for result including %errorlevel% exit status code. | | |
8/12/2012 23:01 | Shmuel Gershon | Question | As can be seen in past screenshot TheApp.exe is not printing an error before it exits or even returning a failure exit code (%errorlevel%) different than 0. Should the (re)design of the app include an error exit code for errors related to initial enironment condition? It's certainly help troubleshooting! | | |
8/12/2012 23:02 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 23:03 | Shmuel Gershon | Test | Applications can mess with shared link libraries and disturb a different process' operation. Does TheApp.exe really need msvcr110.dll? Let's try to delete the DLL and see what happens --> Observation: System Error raised (see screenshot) | | |
8/12/2012 23:05 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 23:05 | Shmuel Gershon | Test | Maybe TheApp.exe is set to work with the DLL as resource but doesn't use it (if Alan was particularly mischievious)? Let's try to empty the DLL's content by creating an empty file and renaming it - Observation: Interesting error in screenshot. Doesn't look like an app error but like another System error so we'll ignore this direction for now. | | |
8/12/2012 23:06 | Shmuel Gershon | Note | According to Alan Page's notes on website; the problem can happen by one app disturbing the other. I wonder if a mismatched DLL version can cause the problem. | | |
8/12/2012 23:08 | Shmuel Gershon | Question | Why would Alan write TheApp.exe with a dynamic linked library? It can be intentional to add mistery and complexity (for example) or accidental (by leaving the IDE's linking default values). | | |
8/12/2012 23:08 | Shmuel Gershon | Note | Let's change direction to the system configuration and resources. This is an area where one application can affect another. | | |
8/12/2012 23:08 | Shmuel Gershon | autogenerated | extended note saved | | 2_20120812_230855.rtf |
8/12/2012 23:08 | Shmuel Gershon | Note | Dependency Walker is a free utility that scans any 32-bit or 64-bit Windows module (exe; dll; ocx; sys; etc.) and builds a hierarchical tree diagram of all dependent modules. Let's run it and try to identify a missing dependency. | | 2_20120812_230855.rtf |
8/12/2012 23:11 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 23:13 | Shmuel Gershon | Test | Running depends show full completion of dependency for TheApp.exe (see screenshot). Depends warns about arch mismatch (32/64) and about not finding IESHIMS.DLL; both common errors that don't seem to point to a specific problem - yet. | | |
8/12/2012 23:17 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 23:19 | Shmuel Gershon | Test | Let's run Russinovich's strings app. Maybe Alan has given us a hint inside. Results attached. | | |
8/12/2012 23:22 | Shmuel Gershon | Note | A few things are interesting to note within Strings result: a) the mention to ''MagicValue''; b) the success message (''congratulations''); c) the name of the functions used (don't seem to read from any file directly; but reads from register); d) the XML manifest. | | |
8/12/2012 23:24 | Shmuel Gershon | autogenerated | extended note saved | | 3_20120812_232416.rtf |
8/12/2012 23:25 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 23:25 | Shmuel Gershon | Note | Looking at other apps and the web the manifest looks Ok; even with the uiAccess value being false (i.e. it doesn't cause apps not to load). Note that when comparing to wikipedia's example; we don't even have the runtime limitation mentioned in TheApp.exe manifest. | | |
8/12/2012 23:32 | Shmuel Gershon | Note | One think we could do is open the assembly instructions and see where we get a conditional jump for the success message (which is ''congratulations you have found the problem'') and then force the jump. But the challenge is about discovering a system or compatibility problem; without manipulating (too much) the executable file itself. | | |
8/12/2012 23:33 | Shmuel Gershon | autogenerated | extended note saved | | 4_20120812_233427.rtf |
8/12/2012 23:33 | Shmuel Gershon | Note | On the other hand... why would anyone write about ''Magic Values'' on his software? Maybe it is a clue to the Magic Number of the executable file? Let's analyze the file's content. | | |
8/12/2012 23:36 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 23:37 | Shmuel Gershon | Test | What if the Magic Number is incorrect (not likely somethin a different app would cause; but still...)? Observation: Opening it on a Hex editor shows 0x4D 0x5A; which seems to be a valid/legitimate Magic Value. | | |
8/12/2012 23:40 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 23:40 | Shmuel Gershon | Test | What if the system can be configured to require the reverse Magic Value? What if the other app modifies this setting and breaks TheApp.exe operation? (of course; a plethora of other apps would start failing too if so). In any case the definition should allow for both. Observation: Reverting the Magic Value to 0x5A 0x4D (just for kicks!) causes a System Error. | | |
8/12/2012 23:41 | Shmuel Gershon | Note | As we cannot identify the dependency resulting in failure from the system side; let's look at it from the application flow side. | | |
8/12/2012 23:42 | Shmuel Gershon | autogenerated | extended note saved | | 5_20120812_234221.rtf |
8/12/2012 23:43 | Shmuel Gershon | Note | Process Monitor displays in real-time all file system activity on a Microsoft Windows operating system. Let's use it to monitor the resources and queries requested by TheApp.exe. | | 5_20120812_234221.rtf |
8/12/2012 23:44 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 23:44 | Shmuel Gershon | Setup | In order to make life easier; it is recommended to set a filter in Procmon. You may miss information in case the app calls other apps or differently named threads; but otherwise there's too much info. The filter used is shown in screenshot. | | |
8/12/2012 23:45 | | Note | When using Process Monitor all information can be important but my experience shows it pays to focus on response errors first. It makes special sense when looking for a loading failure. | | |
8/12/2012 23:46 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 23:46 | Shmuel Gershon | Test | The first request failure of the application is missing the prefetch file on C:\Windows\prefetch. Windows manages the prefetch by itself; but maybe Alan is specifically (mischieviously) looking for it? Observation: Adding the file to Prefetch folder manually makes the error in ProcMon go away; but the app still doesn't load. | | |
8/12/2012 23:53 | Shmuel Gershon | Note | Many errors on requests appear when loading the app. Most of them are to be expected; and many are due to requests by the operating system dispatcher rather than the app itself. So all these failures close to the beginning before the app even tries to get to the 'Visual C Runtime DLL' may be less relevant. | | |
8/12/2012 23:54 | Shmuel Gershon | Note | Let's go to the latest failures; as all the initial ones are system failures and not TheApp.exe failures. | | |
8/12/2012 23:56 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/12/2012 23:57 | Shmuel Gershon | Note | The last failure before exiting is when trying to read the 'DisableMetaFiles' value inside HKLM Win NT Current Version. Perhaps we should study what can influence this value and what does it cause. | | |
8/12/2012 23:59 | Shmuel Gershon | Note | But oh! Right before this failure there is a failure when trying to open the Registry key HKCU\SW\Ms\TheApp.exe! That shouldn't be a system request; this is Alan's; and is looking for an app-specific path! | | |
8/13/2012 0:01 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/13/2012 0:01 | Shmuel Gershon | Test | Let's add the key to the registry; see if now this causes the application to load. --> Bingo! No app loading yet but now the TheApp key request succeeds; and TheApp.exe looks for the MagicValue value! | | |
8/13/2012 0:06 | Shmuel Gershon | autogenerated | screenshot saved | | |
8/13/2012 0:06 | Shmuel Gershon | Test | Let's add the magic value to the registry; see if this causes the application to load. --> Great success! Congratulations! | | |
8/13/2012 0:06 | Shmuel Gershon | Note | The MagicValue can be a string; binary; DWORD... Apparently there is no check on type or content. | | |
8/13/2012 0:12 | Shmuel Gershon | Note | TheApp.exe deletes the Registry key and value right after showing the success dialog -- good thing to clean garbage from registry; and keeps the challenge ready to be solved again! | | |
8/13/2012 0:14 | Shmuel Gershon | Note | TheApp.exe loaded; problem solved; challenge resolved. But... | | |
8/13/2012 0:22 | Shmuel Gershon | Question | What was the real story behind the problem that generated the exercise in Alan's mind? Can it be that one newly installed application deleted another one's private registry keys? Or deleted a shared system registry key? Have to ask Alan... | | |
8/13/2012 0:22 | Shmuel Gershon | Note | Troubleshooting Testing Session is now over. Conclusion: TheApp.exe requires a registry key/value available to load. Another application that changes or moves things around in the registry -- or perhaps a System Restore! -- can cause this registry key/value to disappear causing TheApp.exe to abort loading. | | |
8/13/2012 0:22 | Shmuel Gershon | Session End. Duration | 2:14:20 | | |