Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
1179
Ribbon throwing exception in getHdc
posted

Just going through our application exception logs, and by far the most common error we are seeing is the ribbon throwing exceptions. The two most common are ArgumentException (Parameter is not valid), and OutOfMemoryException. We have about 100 users using the application over citrix, and we're seeing these errors multiple times daily. Visually the result is that the ribbon isn't drawn, instead showing a white rectangle with a black border and red cross through it.

Our application is a WinForms application, currently using Infrafistics 2018.2. Its an MDI application using a master Ribbon on the MDI parent, with additional ribbons being merged from child forms.Merging takes the form of both new tabs, and new groups within existing tabs.

Here are some sample exceptions and stack traces:

ArgumentException

These always end up in GetHdc

   at System.Drawing.Graphics.GetHdc()
   at Infragistics.Win.FormattedLinkLabel.PositionElementsCache.MeasureTextGDIOrThemed(String text, Font font, TextFormatFlags textFormatFlags)
   at Infragistics.Win.FormattedLinkLabel.PositionElementsCache.MeasureCharacterRangesGDI(String text, Font font, TextFormatFlags textFormatFlags, CharacterRange[] ranges)
   at Infragistics.Win.FormattedLinkLabel.PositionElementsCache.ReMeasureParts(String text, Int32[] parts, Single[] widths, Int32 partStartIndex, Int32 partEndIndex, Font font, Single& lineHeight)
   at Infragistics.Win.FormattedLinkLabel.PositionElementsCache.MeasureParts(String text, Int32[] parts, Font font, Single& lineHeight)
   at Infragistics.Win.FormattedLinkLabel.NodeText.TextLayoutInfo.Measure(PositionElementsInfo& info)
   at Infragistics.Win.FormattedLinkLabel.NodeText.PositionSelf(PositionElementsInfo& info)
   at Infragistics.Win.FormattedLinkLabel.NodeBase.PositionHelper(PositionElementsInfo& info)
   at Infragistics.Win.FormattedLinkLabel.NodeBase.PositionChildNodes(PositionElementsInfo& info)
   at Infragistics.Win.FormattedLinkLabel.NodeBlock.PositionChildNodes(PositionElementsInfo& info)
   at Infragistics.Win.FormattedLinkLabel.NodeBase.PositionElements(IFormattedLinkLabelOwner owner, UIElement containerElem, Rectangle containerRect, Boolean calcIdealLayoutSize, Size& layoutSize)
   at Infragistics.Win.FormattedLinkLabel.FormattedTextUIElement.PositionElementsHelper(Rectangle layoutRect, Boolean setElemRectToIdealSize)
   at Infragistics.Win.FormattedLinkLabel.FormattedTextUIElement.PositionChildElements()
   at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive)
   at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive)
   at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive)
   at Infragistics.Win.UIElement.VerifyChildElements(ControlUIElementBase controlElement, Boolean recursive)
   at Infragistics.Win.UIElement.VerifyChildElements(Boolean recursive)
   at Infragistics.Win.ControlUIElementBase.VerifyIfElementsChanged(Boolean verify, Boolean syncMouseEntered)
   at Infragistics.Win.ControlUIElementBase.ProcessMouseMoveHelper(Object sender, MouseEventArgs e)
   at Infragistics.Win.ControlUIElementBase.ProcessMouseMove(Object sender, MouseEventArgs e)
   at Infragistics.Win.Utilities.ProcessEvent(Control control, ProcessEvent eventToProcess, EventArgs e)
   at Infragistics.Win.UltraControlBase.OnMouseMove(MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseMove(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

OutOfMemoryException

at System.Drawing.Graphics.CheckErrorStatus(Int32 status)     
at System.Drawing.Graphics.DrawImage(Image image, Rectangle destRect, Int32 srcX, Int32 srcY, Int32 srcWidth, Int32 srcHeight, GraphicsUnit srcUnit, ImageAttributes imageAttrs, DrawImageAbort callback, IntPtr callbackData)     
at System.Drawing.Graphics.DrawImage(Image image, Rectangle destRect, Int32 srcX, Int32 srcY, Int32 srcWidth, Int32 srcHeight, GraphicsUnit srcUnit, ImageAttributes imageAttr)     
at Infragistics.Win.DrawUtility.DrawImage(Graphics g, Image image, Rectangle destRect, Rectangle srcRect, Int16 alphaLevel, ImageAttributes imgAttributes, Boolean tile, ColorRenderMode colorRenderMode, ImageBackgroundStretchMargins margins)     
at Infragistics.Win.DrawUtility.DrawImage(Graphics g, Image image, Int16 alphaLevel, Rectangle destRect, Rectangle srcRect, Rectangle invalidRect, ImageAttributes imgAttributes, Boolean tile, ColorRenderMode colorRenderMode)     
at Infragistics.Win.DrawUtility.DrawImage(Graphics g, Image image, AppearanceData& appearanceData, AlphaBlendMode alphaMode, Boolean scaled, Rectangle renderRect, Rectangle invalidRect, ImageAttributes imgAttributes, Boolean maintainAspectRatio, Boolean drawBorderShadow, Color shadowColor, Byte startAlpha, Byte endAlpha, Byte shadowDepth, ColorRenderMode colorRenderMode)     
at Infragistics.Win.ImageUIElementBase.DrawImage(UIElementDrawParams& drawParams)     
at Infragistics.Win.ImageAndTextUIElement.ImageAndTextDependentImageUIElement.DrawImage(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UltraWinToolbars.RibbonGroupUIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawChildElements(UIElementDrawParams& drawParams)     
at Infragistics.Win.UIElement.DrawElement(UIElementDrawParams& defaultDrawParams)     
at Infragistics.Win.UIElement.DrawHelper(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode, Boolean clipText, Boolean forceDrawAsFocused, Boolean preventAlphaBlendGraphics, Nullable`1 zoomFactor)     
at Infragistics.Win.ControlUIElementBase.Draw(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode, Size elementSize, Boolean preventAlphaBlendGraphics)     
at Infragistics.Win.ControlUIElementBase.Draw(Graphics graphics, Rectangle invalidRectangle, Boolean doubleBuffer, AlphaBlendMode alphaBlendMode)     
at Infragistics.Win.UltraControlBase.OnPaint(PaintEventArgs pe)     
at Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea.OnPaint(PaintEventArgs pe)     
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)     
at System.Windows.Forms.Control.WmPaint(Message& m)     
at System.Windows.Forms.Control.WndProc(Message& m)     
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)