Description of Preview of Quality Rollup for .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, and 4.7.1 for Windows Server 2012 (KB 4098971)

Applies to: .NET Framework 4.7.1.NET Framework 4.7.NET Framework 4.6.2 More

Introduction


This May 2018 Update for Windows Server 2012 includes cumulative reliability improvements in .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, and 4.7.1. We recommend that you apply this update as part of your regular maintenance routines. Before you install this update, see the "Prerequisites" and "Restart requirement" sections.

Important

  • All updates for .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, and 4.7.1 require the d3dcompiler_47.dll to be installed. We recommend that you install the included d3dcompiler_47.dll before you apply this update. For more information about the d3dcompiler_47.dll, see KB 4019990.
  • If you install a language pack after you install this update, you must reinstall this update. Therefore, we recommend that you install any language packs that you need before you install this update. For more information, see Add language packs to Windows.

Quality and reliability improvements


CLR1

  • Fixes an issue in WindowsIdentity.Impersonate in which handles were not being explicitly cleaned up.
  • Fixes an issue in deserialization that occurs when a CultureAwareComparer is used by a collection type, for example, a ConcurrentDictionary.
  • Fixes an issue in a floating-point overflow in the thread pool’s hill-climbing algorithm.
  • Fixes an issue in which you observe high CPU usage that is consumed by ntoskrnl!KiPageFault and that originates from BGC (indicated by clr!*gc_heap::bgc_thread_function), you might want this change so that the GC process no longer uses the system-implemented write watch to track BGC heap modifications. Such usage is very expensive because each of these page faults must take a process-wide lock. This is especially noticeable in recent versions of the system. You are probably seeing that most of the CPU is spent in the ntoskrnl!ExpWaitForSpinLockExclusiveAndAcquire function. This change makes GC use the CLR implementation of write watch instead.

NCL2

  • Fixes an issue in the connection limit that occurs when you use HttpClient to send requests to loopback addresses. For more information, see this .NET blog article.

WPF3

  • Fixes an issue in which a crash can occur during the shutdown of an application that hosts WPF content in a separate AppDomain. (For example, an Office application that hosts a VSTO add-in that uses WPF.)
  • Fixes an issue that causes XAML Browser Applications (XBAPs) that target .NET 3.5 to sometimes be loaded by incorrectly using .NET 4.x runtime.

    The fix for this issue must be enabled by customers who have difficulty running XBAP applications that target .NET Framework 3.5 under CLR v4. The fix can be enabled by setting the registry subkey values in the following table.
     

    Platform architecture

    Registry subkey

    Value name

    Value type

    Value

    Description

    32-bit

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Hosting

    DoNotLaunchVersion3HostedApplicationInVersion4Runtime

    REG_DWORD

    0, or value does not exist

    XBAP applications that target .NET Framework 3.5 or.NET Framework 4.x will be both launched under CLR v4

    1, or any non-zero value

    XBAP applications that target .NET Framework 3.5 will be launched under CLR v2, and XBAP applications that target .NET Framework 4.x will be launched under CLR v4

    64-bit

    Both of these subkeys should be set:

    Subkey 1

    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\Windows Presentation Foundation\Hosting

    Subkey 2

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Hosting

    DoNotLaunchVersion3HostedApplicationInVersion4Runtime

    REG_DWORD

    0, or value does not exist

    XBAP applications that target .NET Framework 3.5 or.NET Framework 4.x will be both launched under CLR v4

    1, or any non-zero value

    XBAP applications that target .NET Framework 3.5 will be launched under CLR v2, and XBAP applications that target .NET Framework 4.x will be launched under CLR

      
  • Fixes an issue in which a WPF application can crash because of a NullReferenceException if a Binding (or MultiBinding) that is used in a DataTrigger (or MultiDataTrigger) that belongs to a Style (or Template or ThemeStyle) reports a new value, but whose host element gets collected during a very narrow period in the reporting process.
  • Fixes an issue in which a WPF application can crash because of a spurious ElementNotAvailableException. This can occur when you do the following steps:
  1. Change TreeView.IsEnabled
  2. Remove an item X from the collection
  3. Re-insert the same item X back into the collection
  4. Remove one of X's subitems Y from its collection

Note Step 4 can occur at any time relative to steps 2 and 3. However, step 4 must occur after step 1. Steps 24 must occur before the asynchronous call to UpdatePeer, posted by step 1. This will occur if steps 24 all occur in the same button-click handler.


1 Common Language Runtime (CLR)
2 Network Class Library (NCL)
3 Windows Presentation Foundation (WPF)

Additional information about this update


For more information about this update as it relates to Windows Server 2012, see the following article in the Microsoft Knowledge Base:

4098968 May 2018 Preview of the Quality Rollups for .NET Framework 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 and 4.7.1 for Windows Server 2012 (KB 4098968)

Known issues


If your application serializes or deserializes data by using custom formatters that rely on a specific order of fields in the serialization stream, you might receive an exception error message when trying to deserialize an instance of the CustomAwareComparer object that was serialized on a previous versions of .NET Framework.

The exception error might resemble the following:

How to get this update


Windows Update

This update is available through Windows Update. When you turn on automatic updating, this update will be downloaded and installed automatically. For more information about how to get security updates automatically, see Windows Update: FAQ.

Microsoft Update Catalog

To get the stand-alone package for this update, go to the Microsoft Update Catalog website.

Windows Software Update Services (WSUS)

On your WSUS server, follow these steps:

  1. Click Start, click Administrative Tools, and then click Microsoft Windows Server Update Services 3.0.
  2. Expand ComputerName, and then click Action.
  3. Click Import Updates.
  4. WSUS opens a browser window in which you may be prompted to install an ActiveX control. You must install the ActiveX control to continue.
  5. After the ActiveX control is installed, you see the Microsoft Update Catalog screen. Type 4098968 in the Search box, and then click Search.
  6. Locate the .NET Framework packages that match the operating systems, languages, and processors in your environment. Click Add to add them to your basket.
  7. After you select all the packages that you require, click View Basket.
  8. To import the packages to your WSUS server, click Import.
  9. After the packages are imported, click Close to return to WSUS.

The updates are now available for installation through WSUS.

Prerequisites

To apply this update, you must have .NET Framework 4.5.2 installed.

Restart requirement

You must restart the computer after you apply this update if any affected files are being used. We recommend that you exit all .NET Framework-based applications before you apply this update.

Update replacement information

This update replaces previously released updates KB 4057271 and KB 4074806.

File information