Today I was troubleshooting the application “Harmony Client” which crashed upon exiting:
The application had been thinapped and the error only appeared when starting the thinapped version.
Using Process Monitor I noticed that the application wrote logfiles to the C:\Temp\HarmonyClient\Log folder (which of course it shouldn’t write there…).
00.11:12:56.033 Log created on 31-01-2012 (c:\temp\Harmonyclient\Log\HMY_Client_03A2@server_20120131_111256.LOG) User name: testuser 00.11:13:04.423 00000318 TCOEventHandler EXCEPTION: Destroy eventhandler is called while client is still running. 00.11:13:04.424 00000318 TCOEventHandler .Destroy 00.11:13:04.424 00000318 TCOEventHandler .Destroy ... Done 00.11:13:04.424 00000318 TCOEventHandler Client disconnected by user
My next step was to trace using the Thinapp Log Monitor but unfortunately the error doesn’t occur when tracing.
This makes me believe it’s a timing issue; upon exit the application is cleaning up memory (objects) but destroys a certain object (eventhandler) while it’s still being accessed.
Upon further inspection of the Process Monitor log I noticed access to a file called HARMONY_Client.exe.9e3c5c50.ini.inuse which was in the ThinApp SandBox (%Local AppData%\ApplicationHistory\HARMONY_Client.exe.9e3c5c50.ini.inuse).
The application creates this file when it’s started and when it exists it copies this to HARMONY_Client.exe.9e3c5c50.ini.
I deleted this file and this made the error go away. Perhaps this fault will surface again in the future, further testing will need to tell us.
Delete *.inuse from the SandBox, preferably using a (vbs) script in the thinapp package each time the app is launched.
Contact Vendor and get them to fix their software and while they’re at it, have them fix access to things such as C:\Temp as well.