FIX: "Non-yielding Scheduler" error when versioning cleanup task runs on a SQL Server AlwaysOn secondary replica

Symptoms
Assume that you have a multi-core processor (32 cores or more) that's running Microsoft SQL Server 2014 or 2012 SP3. When the versioning cleanup task runs on an AlwaysOn secondary replica, CPU usage may approach 100-percent. Additionally, a "Non-yielding Scheduler" error that resembles the following is logged in the SQL Server error log:


date time.80 Server Using 'dbghelp.dll' version '4.0.5'
date time.81 Server ***Unable to get thread context for spid 0
date time.81 Server * *******************************************************************************
date time.81 Server *
date time.81 Server * BEGIN STACK DUMP:
date time.81 Server * date time spid 2944
date time.81 Server *
date time.81 Server * Non-yielding Scheduler
date time.81 Server *
date time.81 Server * *******************************************************************************
date time.81 Server Stack Signature for the dump is 0x000000000000015F
date time.22 Server [INFO] Identity Begin End | State Result Error Speculate Prepared LazyCommit ReadOnly | Transaction Database ThreadId | ReadSet WriteSet ScanSet Savepoint LogSizeRq | CommitDep TotalComm Dependent 0 Dependent 1 Dependent 2 Dependent 3 Dependent 4 Dependent 5 Dependent 6 Dependent 7 | Area Location |
date time.33 Server External dump process return code 0x20000001.
date time.33 Server Process 0:0:0 (0x32e8) Worker 0x0000000005B54160 appears to be non-yielding on Scheduler 12. Thread creation time: 13094297045567. Approx Thread CPU Used: kernel 0 ms, user 51979 ms. Process Utilization 2%. System Idle 97%. Interval: 70153 ms.
date time.45 Server Process 0:0:0 (0x32e8) Worker 0x0000000005B54160 appears to be non-yielding on Scheduler 12. Thread creation time: 13094297045567. Approx Thread CPU Used: kernel 0 ms, user 103459 ms. Process Utilization 2%. System Idle 97%. Interval: 136828 ms.
date time.58 Server Process 0:0:0 (0x32e8) Worker 0x0000000005B54160 appears to be non-yielding on Scheduler 12. Thread creation time: 13094297045567. Approx Thread CPU Used: kernel 0 ms, user 146001 ms. Process Utilization 2%. System Idle 97%. Interval: 196951 ms.
date time.70 Server Process 0:0:0 (0x32e8) Worker 0x0000000005B54160 appears to be non-yielding on Scheduler 12. Thread creation time: 13094297045567. Approx Thread CPU Used: kernel 0 ms, user 193269 ms. Process Utilization 2%. System Idle 97%. Interval: 257073 ms.

Resolution
This problem was first fixed in the following cumulative update for SQL Server:


About cumulative updates for SQL Server
Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. Check out the latest cumulative updates for SQL Server:

Workaround
To temporarily work around this issue, restart the computer that's running the instance of SQL Server.
Status
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
References
Learn about the terminology Microsoft uses to describe software updates.
Properties

Article ID: 3138455 - Last Review: 05/31/2016 06:19:00 - Revision: 3.0

Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Enterprise Core Community Technical Preview 2, Microsoft SQL Server 2012 Service Pack 3, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web

  • kbqfe kbsurveynew kbfix kbexpertiseinter KB3138455
Feedback