Yes, I believe there is something unique about our product. It is based on COM, and uses Webbrowser control to load JavaScript. There are many JavaScript objects in the application. Each JavaScript object is associated with a C++ object. The C++ object stores the IDispath pointer of the JavaScript object, so that it is possible for the C++ object to directly call the JavaScript object.
Before 22H2, the JavaScript object that IDispatch points to stays valid during the lifetime of the JavaScript object.
However in 22H2, the JavaScript object becomes a temp object, and gets destroyed by the JavaScript engine after it is passed as parameter to the C++ object. And then if the C++ object wants to call the JavaScript object, the call would fail because it cannot find the JavaScript object.
Then we tracked the calls, and found that there is a difference in the files being loaded when the WebBrowser calls the JavaScript engine (as provided in the earlier description, from jscript9.dll and jscript.dll, to jscript9.dll and jscriptlegacy.dll).
Best regards,
Julie