How to fix SCVMM 2019 console not starting after update issue

Sooner or later, every System Center Virtual Machine Manager (SCVMM) 2012 environment will require an upgrade. Microsoft is ending extended support for SCVMM 2012 and SCVMM 2012 R2 on July 12, 2022. In other words, this is the deadline for the upgrade if you want to complete it before the environment reaches end of life. Since I recently updated to the latest version (SCVMM 2019), I decided to share my experience. Read on if you want to know how it went and how to fix SCVMM 2019 console cannot start issue. Spoiler alert: The solution might be a bit surprising. At least it was for me.

SCVMM 2019 does not start after update

context

The upgrade process was underway – this is how the story begins. The host upgrade went smoothly. Update Rollup 2 (10.19.2445.0) installed as expected. End users updated the Virtual Machine Manager console and everything seemed to work fine. So it’s time to finish the project, isn’t it? But then suddenly an end user reported that SCVMM 2019 would not start.

Problem after SCVMM update

So what happened? The user first removed the old 2012 console and next installed the 2019 version (10.19.1013.0) along with Update Rollup 2. So far so good. Then they double-clicked the app’s shortcut a few times, but the system didn’t respond. Time to look for the cause of the problem.

Troubleshooting

The first traces of the problem can be found in the Windows event log.

Click to expand/collapse Windows event log entries

Application: VmmAdminUI.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception. Exception Info: System.ArithmeticException Exception Info: System.OverflowException at System.Windows.Media.Imaging.ColorConvertedBitmap.FinalizeCreation() at System.Windows.Media.Imaging.ColorConvertedBitmap..ctor(System.Windows.Media.Imaging.BitmapSource, System.Windows.Media.ColorContext, System.Windows.Media.ColorContext, System.Windows.Media.PixelFormat) at System.Windows.Media.Imaging.BitmapSource.CreateCachedBitmap(System.Windows.Media.Imaging.BitmapFrame, System.Windows.Media.Imaging.BitmapSourceSafeMILHandle, System.Windows.Media.Imaging.BitmapCreateOptions, System.Windows.Media.Imaging.BitmapCacheOption, System.Windows.Media.Imaging.BitmapPalette) at System.Windows.Media.Imaging.BitmapFrameDecode.FinalizeCreation() at System.Windows.Media.Imaging.BitmapFrameDecode..ctor(Int32, System.Windows.Media.Imaging.BitmapCreateOptions, System.Windows.Media.Imaging.BitmapCacheOption, System.Windows.Media.Imaging.BitmapDecoder) at System.Windows.Media.Imaging.BitmapDecoder.SetupFrames(System.Windows.Media.Imaging.BitmapDecoder, System.Collections.ObjectModel.ReadOnlyCollection`1) at System.Windows.Media.Imaging.BitmapDecoder.get_Frames() at System.Windows.Media.Imaging.BitmapFrame.CreateFromUriOrStream(System.Uri, System.Uri, System.IO.Stream, System.Windows.Media.Imaging.BitmapCreateOptions, System.Windows.Media.Imaging.BitmapCacheOption, System.Net.Cache.RequestCachePolicy) at System.Windows.Media.Imaging.BitmapFrame.Create(System.Uri, System.Net.Cache.RequestCachePolicy) at System.Windows.Media.Imaging.BitmapFrame.Create(System.Uri) at Microsoft.EnterpriseManagement.RibbonLayout.View.WpfRibbon.WpfRibbonFactory..cctor() Exception Info: System.TypeInitializationException at Microsoft.EnterpriseManagement.RibbonLayout.ViewModel.WpfRibbon.WpfRibbonRecyclerStrategies..cctor() Exception Info: System.TypeInitializationException at Microsoft.EnterpriseManagement.RibbonLayout.ViewModel.WpfRibbon.WpfRibbonRecyclerStrategies.CreateInstancePools(Microsoft.EnterpriseManagement.RibbonLayout.ViewModel.WpfRibbon.RibbonViewModel) at Microsoft.EnterpriseManagement.RibbonLayout.ViewModel.WpfRibbon.RibbonViewModel..ctor(Microsoft.EnterpriseManagement.RibbonLayout.Model.IRibbonModel) at Microsoft.EnterpriseManagement.RibbonLayout.View.WpfRibbon.ConsoleRibbon.OnModelChanged(System.Windows.DependencyObject, System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.DependencyObject.OnPropertyChanged(System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.FrameworkElement.OnPropertyChanged(System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.DependencyObject.NotifyPropertyChange(System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.DependencyObject.UpdateEffectiveValue(System.Windows.EntryIndex, System.Windows.DependencyProperty, System.Windows.PropertyMetadata, System.Windows.EffectiveValueEntry, System.Windows.EffectiveValueEntry ByRef, Boolean, Boolean, System.Windows.OperationType) at System.Windows.DependencyObject.InvalidateProperty(System.Windows.DependencyProperty, Boolean) at System.Windows.StyleHelper.InvalidateDependents(System.Windows.Style, System.Windows.FrameworkTemplate, System.Windows.DependencyObject, System.Windows.DependencyProperty, MS.Utility.FrugalStructList`1 ByRef, Boolean) at System.Windows.StyleHelper.OnTriggerSourcePropertyInvalidated(System.Windows.Style, System.Windows.FrameworkTemplate, System.Windows.DependencyObject, System.Windows.DependencyProperty, System.Windows.DependencyPropertyChangedEventArgs, Boolean, MS.Utility.FrugalStructList`1> ByRef, MS.Utility.FrugalMap ByRef, Int32) at System.Windows.FrameworkElement.OnPropertyChanged(System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.DependencyObject.NotifyPropertyChange(System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.DependencyObject.UpdateEffectiveValue(System.Windows.EntryIndex, System.Windows.DependencyProperty, System.Windows.PropertyMetadata, System.Windows.EffectiveValueEntry, System.Windows.EffectiveValueEntry ByRef, Boolean, Boolean, System.Windows.OperationType) at System.Windows.DependencyObject.InvalidateProperty(System.Windows.DependencyProperty, Boolean) at System.Windows.Data.BindingExpressionBase.Invalidate(Boolean) at System.Windows.Data.BindingExpression.TransferValue(System.Object, Boolean) at System.Windows.Data.BindingExpression.ScheduleTransfer(Boolean) at MS.Internal.Data.ClrBindingWorker.NewValueAvailable(Boolean, Boolean, Boolean) at MS.Internal.Data.PropertyPathWorker.UpdateSourceValueState(Int32, System.ComponentModel.ICollectionView, System.Object, Boolean) at MS.Internal.Data.PropertyPathWorker.OnDependencyPropertyChanged(System.Windows.DependencyObject, System.Windows.DependencyProperty, Boolean) at MS.Internal.Data.ClrBindingWorker.OnSourceInvalidation(System.Windows.DependencyObject, System.Windows.DependencyProperty, Boolean) at System.Windows.Data.BindingExpression.HandlePropertyInvalidation(System.Windows.DependencyObject, System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.Data.BindingExpressionBase.OnPropertyInvalidation(System.Windows.DependencyObject, System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.Data.BindingExpression.OnPropertyInvalidation(System.Windows.DependencyObject, System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.DependentList.InvalidateDependents(System.Windows.DependencyObject, System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.DependencyObject.NotifyPropertyChange(System.Windows.DependencyPropertyChangedEventArgs) at System.Windows.DependencyObject.UpdateEffectiveValue(System.Windows.EntryIndex, System.Windows.DependencyProperty, System.Windows.PropertyMetadata, System.Windows.EffectiveValueEntry, System.Windows.EffectiveValueEntry ByRef, Boolean, Boolean, System.Windows.OperationType) at System.Windows.DependencyObject.SetValueCommon(System.Windows.DependencyProperty, System.Object, System.Windows.PropertyMetadata, Boolean, Boolean, System.Windows.OperationType, Boolean) at System.Windows.DependencyObject.SetValue(System.Windows.DependencyProperty, System.Object) at Microsoft.EnterpriseManagement.RibbonConsole.RibbonConsoleWindowController.EndInit() at Microsoft.VirtualManager.UI.VmmAdmin.VmmConsoleWindowController.EndInit() at Microsoft.VirtualManager.UI.VmmAdmin.VmmAdminApplication.InitializeConsoleShell() at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) at System.Windows.Threading.DispatcherOperation.InvokeImpl() at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object) at System.Windows.Threading.DispatcherOperation.Invoke() at System.Windows.Threading.Dispatcher.ProcessQueue() at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr) at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame) at System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame) at System.Windows.Application.RunDispatcher(System.Object) at System.Windows.Application.RunInternal(System.Windows.Window) at System.Windows.Application.Run(System.Windows.Window) at Microsoft.VirtualManager.UI.VmmAdmin.Program.Main(System.String[])

The detailed event log entry above does not give a clear answer as to what is actually going on. So as the next troubleshooting step I will try to reinstall the console and manually remove any unnecessary residual data of the 2012 version.

Below is the list of places I checked for the leftover data:

Registration:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager Administrator Console
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft System Center 2012 R2 Virtual Machine Manager

PS module in the PS environment variable:

  • C:\Program Files\Microsoft System Center 2012 R2\Virtual Machine Manager\bin\psModules\

Global Assembly Cache (GAC):

  • There are no binaries in the GAC for VMM, so nothing is saved for them.

The map:

  • C:\Program Files\Microsoft System Center 2012 R2\Virtual Machine Manager

Program-related entry for VMM 2012 R2 should not exist:

  • No entry for VMM 2012 R2 in Add/Remove Programs
  • No entry for VMM 2012 R2 in View\Installed Updates

Unfortunately, removing the leftover data from the VMM 2012 R2 console and reinstalling the 2019 version doesn’t fix the issue. Any attempt to start the console still produces the same entry with the same errors in the system log.

Is the operating system up to date? Yes, it is Windows 10 Enterprise 20H2 with current fixes.

Are the drivers up to date? Yes they are.

Are other Microsoft products up to date? Yes they are. Windows Update does not show any updates available for installation (option Get updates for other Microsoft products when you update Windows Is on).

How to fix SCVMM won’t start error?

To actually fix SCVMM 2019 not starting issue, you need to follow the solution below.

The solution to the puzzle can finally be found in the Windows event log. The error call stack indicates the issue with rendering the ribbon and loading bitmaps. Upon further investigation, it turns out that the user who reported the issue was using a special display configuration. That device profile parameters on the color management Tab was set sRGB model profile for virtual devices. To fix the problem:

  1. Go to the display settings of the problematic PC and click Advanced display settings:
SCVMM console does not start - Advanced display settings
  1. Next, access the adapter properties using the following button:
SCVMM console does not start - view adapter properties
  1. Go to color management tab and click on the color management Button.
SCVMM console does not start - color management
  1. And on the Progressive Find the villain in the tab device profile Field. It turns out that this non-default profile is causing SCVMM to fail to start:
SCVMM 2019 does not start - old device color profile
  1. Finally, all you have to do is change the device profile to the system default setting (sRGB IEC 61966-2.1).
SCVMM 2019 does not start - new device color profile

After changing it, I was able to start the console immediately without glitches. And that’s the end of the story.

also read

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *