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:
Cumulative Update 6 for SQL Server 2014 Service Pack 1 Cumulative Update 3 for SQL Server 2012 SP3 Cumulative Update 12 for SQL Server 2012 SP2
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:
Latest cumulative update for SQL Server 2014 Latest cumulative update for SQL Server 2012 SP3 Latest cumulative update for SQL Server 2012 SP2
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.