Sooner or later, every System Center Virtual Machine Manager (SCVMM) 2012 environment will require an upgrade. Microsoft is to end the extended support for SCVMM 2012 and SCVMM 2012 R2 on July 12, 2022. In other words, this is the deadline for you to upgrade, if you want to get it done before the environment reaches its end of life. Since I’ve recently upgraded to the most up-to-date version (SCVMM 2019), I’ve decided to share my experience. Read on if you want to know how it went and how to fix the “SCVMM 2019 console unable to start” problem. Spoiler alert: the solution might be a little surprising. It was to me, at the very least.
Context
The upgrade process was under way – that’s how the story begins. The host’s upgrade went smoothly. Update Rollup 2 (10.19.2445.0) was installed as expected. End users updated Virtual Machine Manager Console and everything seemed to work just fine. So it’s time to complete the project, isn’t it? But then, out of a sudden, an end user reported that SCVMM 2019 wouldn’t 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 there was no response from the system. Time to start searching for the cause of the problem.
Troubleshooting
The first traces of the problem can be found in the Windows Event Log.
Click to expand/hide Windows Event Log entriesApplication: 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 provide a clear answer to what’s actually going on. So, as a next troubleshooting step, I’ll try to reinstall the console and manually remove all the unnecessary leftover data of the 2012 version.
Below, you can find the list of places I’ve checked for the leftover data:
Registry:
- 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):
- No binaries are present in GAC for VMM, so nothing is stored for it.
The folder:
- C:\Program Files\Microsoft System Center 2012 R2\Virtual Machine Manager
Program-related entry for VMM 2012 R2 should not be present:
- 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 of the VMM 2012 R2 console and reinstalling the 2019 version does not fix the issue. Any attempt to launch the console still produces the same entry with the same errors in the system’s log.
Is the operating system up to date? Yes, it is Windows 10 Enterprise 20H2 with current fixes.
Are 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 to install (the option Receive updates for other Microsoft products when you update Windows is turned on).
How to fix the SCVMM doesn’t start error?
To actually fix the problem with SCVMM 2019 not starting, you need to follow the solution below.
The solution to the mystery can be found in the Windows Event Log, after all. The error call stack points out the problem with rendering the ribbon and loading bitmaps. After further investigation, it turns out that the user who reported the problem used a special display configuration. The Device profile parameter on the Color management tab was set to sRGB virtual device model profile. Here is how to fix it:
- Go to the problematic PC’s display settings and click Advanced display settings:
- Next, access the adapter properties using the following button:
- Go to the Color Management tab and click the Color Management button.
- And on the Advanced tab, you can find the villain in the Device profile field. It turns out that this non-standard profile makes SCVMM fail to start:
- Finally, all you need to do is change the device profile to the system default’s one (sRGB IEC 61966-2.1).
After changing it, I could immediately launch the console without a glitch. And that’s the end of the story.
CodeTwo sp. z o.o. sp. k. is a controller of your personal data.
See our Privacy Policy to learn more.