.NET 4.6 Optimizer Bug Causes Methods To Get Wrong Parameters
tobiasly writes: A serious bug in the just-released .NET 4.6 runtime causes the JIT compiler to generate incorrectly-optimized code which results in methods getting called with different parameters than what were passed in. Nick Craver of Stack Exchange has an excellent write-up of the technical details and temporary workarounds; Microsoft has acknowledged the problem and submitted an as-yet unreleased patch.
This problem is compounded by Microsoft's policy of replacing the existing .NET runtime, as opposed to the side-by-side runtimes which were possible until .NET 2.0. This means that even if your project targets .NET 4.5, it will get the 4.6 runtime if it was installed on that machine. Since it's not possible to install the just-released Visual Studio 2015 without .NET 4.6, this means developers must make the difficult choice between using the latest tools or risking crippling bugs such as this one.
This problem is compounded by Microsoft's policy of replacing the existing .NET runtime, as opposed to the side-by-side runtimes which were possible until .NET 2.0. This means that even if your project targets .NET 4.5, it will get the 4.6 runtime if it was installed on that machine. Since it's not possible to install the just-released Visual Studio 2015 without .NET 4.6, this means developers must make the difficult choice between using the latest tools or risking crippling bugs such as this one.
Switching to unrefusable automatic updates in the face of unavoidable (but forgivable, it's generally acknowledged that no one is immune to at least some of those) system-breaking bugs is pretty awful. As it stands with just a little research you can restore to before the last batch and selectively apply the good ones; unless I'm misreading something there will now be no way you can restore usability at all. It's just a matter of time before some driver incompatibility makes anything beyond safe mode unbootable.
Maybe GP's got a history of overreacting, but being forced to suffer the inevitable system-breaking bug -- taking the downtime from hours to days or for anything that falls through the fissure to finger-pointing hell, weeks -- just because you don't want to pay an extra $80 for the privilege of a system you don't have to let them break -- is pretty clearly unethical. And this from a company that has recently stooped to pushing adware. This deal Microsoft's pushing is laced with shit, no matter how good (and I'm betting they're very good) the good parts are.
As always, all IMO. Insert "I think" everywhere grammatically possible.