Taritsyn/MsieJavaScriptEngine

Engine is crashing after Windows 10 anniversary update

Closed this issue · 4 comments

Hi Taritsyn,

Some users are reporting VS crashes while running T4 templates after installing Windows 10 anniversary update. I'm using MsieJavascriptEngine inside .tt files to parse TypeScript code.

It seems like something has changed with Edge / Chakra in this update.

Here is a crash log from one of users:

https://gist.github.com/VictorTomaili/58165b8962232a7d16589adc8d3e79b8

I asked this user to select JsEngineMode.ChakraIeJsRt, instead of Auto, and this fixed the crash.

In my machine i don't have anniversary update yet, but i used JsEngineMode.ChakraActiveScript and also had a similar crash. Wİth Auto/ChakraIeJsRt it works fine.

Hello, Volkan!

I have tested the TestMsieJsEngine application on the Windows 10 Pro x64 with anniversary update, and I don't have any errors.

Both of these errors can occur due to fact, that in devenv.exe process at the same time running different Chakra JavaScript engines. The second engine, most likely, this is not the MSIE JavaScript Engine, but some calls of JsRT API.

And it seems, that the only way to avoid this error is to specify a suitable mode of the MSIE JavaScript Engine.

I asked this user to try with TestMsieJsEngine. As you stated, it doesn't crash. But he added another mode "All" where he created all engine types in order and it crashed.

Anyway, his devenv is still crashing with Auto and he has two PCs with Visual Studio 2015 installed, both same. But this happens only in PCs with anniversary update. I understand it might be due to multiple uses of JsRT in same process, but i don't think something changed in devenv with anniversary update. Also it doesn't crash if you debug T4 template.

I understand there is not much you can do unless it's reproducible, so let's hope not many users experience this issue.

Thanks

But he added another mode "All" where he created all engine types in order and it crashed.

Different Chakra JavaScript engines (ChakraActiveScript, ChakraIeJsRt and ChakraEdgeJsRt) cannot work in one process.

Ok, that part seems logical ;)