EventType clr20r3, P1 [application name].exe, P2 1.0.0.29354, P3 487d2235, P4 [application name], P5 1.0.0.29354, P6 487d2235, P7 38, P8 1, P9 system.typeinitialization, P10 NIL.
I got the solution. We should put a try/catch on static method, especially on [any]appsetting.cs if you call any its properties on Start method. On our own app.config loading method, we do have the way to through an exception (ex: when empty or invalid), but our exception does not sink to the outer exception wrapper then Windows thinks that is an unhandled exception and records the following error in Event Viewer which causes a headache when trying to figure out what the real error is.