[webkit-help] cairo error with latest wincairo build on Windows XP only

Brent Fulgham bfulgham at gmail.com
Mon Apr 15 11:05:53 PDT 2013


Hi Thomas,

I have not seen this problem, but I may not be exercising WebKit in the
same way as you.

I have started seeing access violations in Cairo 1.10 when working with
print preview. This is interesting because it forces Cairo to switch from a
GDI rendering backend to a scaled image representation (since the preview
is a scaled version of the page to be printed).

My bug does not share the call stack you posted here, but they may be cause
by a similar bug.

We should try to get the Cairo team involved in this, as the bug appears to
be in the Cairo or Pixman subsystem.

-Brent


On Fri, Apr 12, 2013 at 7:01 AM, Thomas Brodt
<thomas.brodt.lists at porabo.ch>wrote:

> I finally succedded in building the 148215 revision of wincairo (the
> newest revision currently don't build).
>
> While this version runs fine on windows 7, I get the error below on
> Windows XP.
>
> I have to admit that I'm really clueless about that. Is this an error in
> the cairo libs under certain circumstances, or is this just the effect of
> something going wrong in the Webkit invocation?
>
> I hope that people out there with more knowledge than mine can help me
> here.
>
> Thanks in advance
>
> Thomas
>
> ==================
> I get this access violation information
>
> --- e:\projects\**wincairorequirements\src\**cairo\pixman\pixman\pixman-**implementation.c
>
> 113F99F0  mov         ecx,dword ptr fs:[2Ch]
> 113F99F7  push        ebx
> 113F99F8  mov         ebx,dword ptr [esp+28h]
> 113F99FC  push        ebp
> 113F99FD  push        esi
> 113F99FE  mov         esi,eax
> 113F9A00  mov         eax,dword ptr [__tls_index (1148231Ch)]
> ====> 113F9A05  mov         edx,dword ptr [ecx+eax*4]
>
> This is the call stack
>
> cairo.dll!_pixman_**implementation_lookup_**composite(pixman_**implementation_t
> * toplevel=0x00000000, pixman_op_t op=PIXMAN_OP_ADD, pixman_format_code_t
> src_format=PIXMAN_a8r8g8b8, unsigned int src_flags=0x02874a7f,
> pixman_format_code_t mask_format=0x00000000, unsigned int
> mask_flags=0x00002000, pixman_format_code_t dest_format=PIXMAN_a8r8g8b8,
> unsigned int dest_flags=0x02074a7f, pixman_implementation_t * *
> out_imp=0x00115cfc, void (pixman_implementation_t *,
> pixman_composite_info_t *)* * out_func=0x00115cf8)  Line 85 + 0x15 bytes
>  C
>      cairo.dll!pixman_image_**composite32(pixman_op_t op=, pixman_image *
> src=, pixman_image * mask=, pixman_image * dest=, int src_x=, int src_y=,
> int mask_x=, int mask_y=, int dest_x=, int dest_y=, int width=, int
> height=)  Line 676 + 0x3c bytes    C
>      cairo.dll!composite_glyphs_**via_mask(void * _dst=0x101f56e0,
> _cairo_operator op=CAIRO_OPERATOR_OVER, _cairo_surface * _src=0x00000000,
> int src_x=0x00000000, int src_y=0x00000000, int dst_x=0x00000000, int
> dst_y=0x00000000, cairo_composite_glyphs_info_t * info=0x00000000)  Line
> 1094 + 0xd bytes    C
>      cairo.dll!composite_glyphs(**void * _dst=, _cairo_operator op=,
> _cairo_surface * _src=, int src_x=, int src_y=, int dst_x=, int dst_y=,
> cairo_composite_glyphs_info_t * info=)  Line 1137 + 0x20 bytes    C
>      msvcr80.dll!78147344()
>      [Frames below may be incorrect and/or missing, no symbols loaded for
> msvcr80.dll]
>      cairo.dll!_cairo_scaled_glyph_**lookup(_cairo_scaled_font *
> scaled_font=0x78134d83, unsigned long index=0x07a90000,
> _cairo_scaled_glyph_info info=0x00000000, _cairo_scaled_glyph * *
> scaled_glyph_ret=0x000000b0)  Line 2933 + 0x10 bytes    C
>      ntdll.dll!7c9201db()
>      cairo.dll!pixman_image_create_**solid_fill(const pixman_color *
> color=0x00000000)  Line 80 + 0xd bytes    C
>      cairo.dll!_cairo_surface_init(**_cairo_surface * surface=0x00000000,
> const _cairo_surface_backend * backend=, _cairo_device * device=,
> _cairo_content content=)  Line 420    C
>      cairo.dll!composite_glyphs(**const cairo_traps_compositor *
> compositor=0x11481a78, _cairo_surface * dst=0x101f56e0, void *
> closure=0x001168d0, _cairo_operator op=CAIRO_OPERATOR_OVER, _cairo_surface
> * src=0x101d59f8, int src_x=0x00000000, int src_y=0x00000000, int
> dst_x=0x00000000, int dst_y=0x00000000, const _cairo_rectangle_int *
> extents=0x00116958, _cairo_clip * clip=0x101d59b8)  Line 2259 + 0x25 bytes
>    C
>      cairo.dll!clip_and_composite(**const cairo_traps_compositor *
> compositor=0x11481a78, _cairo_composite_rectangles * extents=0x00000000,
> _cairo_int_status (const cairo_traps_compositor *, _cairo_surface *, void
> *, _cairo_operator, _cairo_surface *, int, int, int, int, const
> _cairo_rectangle_int *, _cairo_clip *)* draw_func=0x113b1450,
> _cairo_int_status (const cairo_traps_compositor *, _cairo_surface *, void
> *, _cairo_operator, _cairo_surface *, int, int, int, int, const
> _cairo_rectangle_int *, _cairo_clip *)* mask_func=0x00000000, void *
> draw_closure=0x001168d0, unsigned int need_clip=0x00000001)  Line 1043 +
> 0x2b bytes    C
>      cairo.dll!_cairo_traps_**compositor_glyphs(const cairo_compositor *
> _compositor=0x11481a78, _cairo_composite_rectangles * extents=0x00116920,
> _cairo_scaled_font * scaled_font=0x1017ec00, cairo_glyph_t *
> glyphs=0x001175e0, int num_glyphs=0x00000005, int overlap=0x00000001)  Line
> 2302 + 0x21 bytes    C
>      cairo.dll!_cairo_compositor_**glyphs(const cairo_compositor *
> compositor=0x11481a3c, _cairo_surface * surface=0x101f56e0, _cairo_operator
> op=CAIRO_OPERATOR_CLEAR, const _cairo_pattern * source=0x00000000,
> cairo_glyph_t * glyphs=0x001175e0, int num_glyphs=0x00000005,
> _cairo_scaled_font * scaled_font=0x1017ec00, const _cairo_clip *
> clip=0x1017efb0)  Line 253    C
>      cairo.dll!_cairo_image_**surface_glyphs(void *
> abstract_surface=0x101f56e0, _cairo_operator op=CAIRO_OPERATOR_OVER, const
> _cairo_pattern * source=0x00116cd8, cairo_glyph_t * glyphs=0x001175e0, int
> num_glyphs=0x00000005, _cairo_scaled_font * scaled_font=0x1017ec00, const
> _cairo_clip * clip=0x1017efb0)  Line 999 + 0x2d bytes    C
>      cairo.dll!_cairo_gstate_show_**text_glyphs(_cairo_gstate *
> gstate=0x00000000, const cairo_glyph_t * glyphs=0x0011a148, int
> num_glyphs=0x00000005, _cairo_glyph_text_info * info=0x00000000) Line 2013
> + 0x1b4 bytes    C
>      cairo.dll!_cairo_default_**context_glyphs(void *
> abstract_cr=0x101d5140, const cairo_glyph_t * glyphs=0x0011a148, int
> num_glyphs=0x00000005, _cairo_glyph_text_info * info=0x00000000) Line 1290
> + 0x1b bytes    C
>      cairo.dll!cairo_show_glyphs(_**cairo * cr=0x101d5140, const
> cairo_glyph_t * glyphs=0x0011a148, int num_glyphs=0x00000005)  Line 3315 +
> 0x10 bytes    C
>      WebKit.dll!WebCore::**drawGlyphsToContext(_cairo *
> context=0x00000000, const WebCore::SimpleFontData * font=0x00000000,
> cairo_glyph_t * glyphs=0x0011a148, int numGlyphs=0x00000000)  Line 56    C++
>      WebKit.dll!WebCore::Font::**drawGlyphs(WebCore::**GraphicsContext *
> context=0x0012f1dc, const WebCore::SimpleFontData * font=0x7fe40500, const
> WebCore::GlyphBuffer & glyphBuffer={...}, int from=0x7fe48b60, int
> numGlyphs=0x00000028, const WebCore::FloatPoint & point={...})  Line 119 +
> 0xc bytes    C++
>  WebKit.dll!WebCore::Font::**drawGlyphBuffer(WebCore::**GraphicsContext *
> context=0x0012f1dc, const WebCore::TextRun & run={...}, const
> WebCore::GlyphBuffer & glyphBuffer={...}, const WebCore::FloatPoint &
> point={...})  Line 513 + 0x16 bytes    C++
>  WebKit.dll!WebCore::Font::**drawSimpleText(WebCore::**GraphicsContext *
> context=0x0012f1dc, const WebCore::TextRun & run={...}, const
> WebCore::FloatPoint & point={...}, int from=0x00000000, int to=0x00000005)
>  Line 458    C++
>      WebKit.dll!WebCore::Font::**drawText(WebCore::**GraphicsContext *
> context=0x0012f1dc, const WebCore::TextRun & run={...}, const
> WebCore::FloatPoint & point={...}, int from=0x00000000, int to=0x00000005,
> WebCore::Font::**CustomFontNotReadyAction customFontNotReadyAction=**DoNotPaintIfFontNotReady)
>  Line 175 + 0x12 bytes    C++
>      WebKit.dll!WebCore::**GraphicsContext::drawText(**const
> WebCore::Font & font={...}, const WebCore::TextRun & run={...}, const
> WebCore::FloatPoint & point={...}, int from=0x00000000, int to=0x00000005)
>  Line 418    C++
>  WebKit.dll!WebCore::**paintTextWithShadows(WebCore::**GraphicsContext *
> context=0x00000000, const WebCore::Font & font={...}, const
> WebCore::TextRun & textRun={...}, const WTF::AtomicString &
> emphasisMark={...}, int emphasisMarkOffset=0x00000000, int
> startOffset=0x00000000, int endOffset=0x00000005, int
> truncationPoint=0x00000005, const WebCore::FloatPoint & textOrigin={...},
> const WebCore::FloatRect & boxRect={...}, const WebCore::ShadowData *
> shadow=0x00000000, bool stroked=false, bool horizontal=true)  Line 429
>  C++
>      WebKit.dll!WebCore::**InlineTextBox::paint(WebCore::**PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...},
> WebCore::LayoutUnit __formal={...}, WebCore::LayoutUnit __formal={...})
>  Line 733    C++
>      WebKit.dll!WebCore::**InlineFlowBox::paint(WebCore::**PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...},
> WebCore::LayoutUnit lineTop={...}, WebCore::LayoutUnit lineBottom={...})
>  Line 1142 + 0x19 bytes    C++
>      WebKit.dll!WebCore::**RootInlineBox::paint(WebCore::**PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...},
> WebCore::LayoutUnit lineTop={...}, WebCore::LayoutUnit lineBottom={...})
>  Line 214    C++
>  WebKit.dll!WebCore::**RenderLineBoxList::paint(**WebCore::RenderBoxModelObject
> * renderer=0x7fe91624, WebCore::PaintInfo & paintInfo={...}, const
> WebCore::LayoutPoint & paintOffset={...})  Line 262 + 0x16 bytes    C++
>  WebKit.dll!WebCore::**RenderBlock::paintContents(**WebCore::PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line 3065
> + 0x18 bytes    C++
>      WebKit.dll!WebCore::**RenderBlock::paintObject(**WebCore::PaintInfo
> & paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line
> 3189    C++
>      WebKit.dll!WebCore::**RenderBlock::paint(WebCore::**PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line 2900
>    C++
>  WebKit.dll!WebCore::**RenderTableSection::paintCell(**WebCore::RenderTableCell
> * cell=0x7fe91624, WebCore::PaintInfo & paintInfo={...}, const
> WebCore::LayoutPoint & paintOffset={...})  Line 976 + 0x11 bytes    C++
>  WebKit.dll!WebCore::**RenderTableSection::**paintObject(WebCore::PaintInfo
> & paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line
> 1125 + 0x16 bytes    C++
>  WebKit.dll!WebCore::**RenderTableSection::paint(**WebCore::PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line 925
>    C++
>      WebKit.dll!WebCore::**RenderTable::paintObject(**WebCore::PaintInfo
> & paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line
> 660 + 0x14 bytes    C++
>      WebKit.dll!WebCore::**RenderTable::paint(WebCore::**PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line 630
>    C++
>      WebKit.dll!WebCore::**RenderBlock::paintChild(**WebCore::RenderBox *
> child=0x7fe913cc, WebCore::PaintInfo & paintInfo={...}, const
> WebCore::LayoutPoint & paintOffset={...}, WebCore::PaintInfo &
> paintInfoForChild={...}, bool usePrintRect=false)  Line 3119  C++
>  WebKit.dll!WebCore::**RenderBlock::paintChildren(**WebCore::PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...},
> WebCore::PaintInfo & paintInfoForChild={...}, bool usePrintRect=false)
>  Line 3085 + 0x15 bytes    C++
>  WebKit.dll!WebCore::**RenderBlock::paintContents(**WebCore::PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line 3078
> + 0x1b bytes    C++
>      WebKit.dll!WebCore::**RenderBlock::paintObject(**WebCore::PaintInfo
> & paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line
> 3189    C++
>      WebKit.dll!WebCore::**RenderBlock::paint(WebCore::**PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line 2900
>    C++
>      WebKit.dll!WebCore::**RenderBlock::paintChild(**WebCore::RenderBox *
> child=0x7fe91360, WebCore::PaintInfo & paintInfo={...}, const
> WebCore::LayoutPoint & paintOffset={...}, WebCore::PaintInfo &
> paintInfoForChild={...}, bool usePrintRect=false)  Line 3119  C++
>  WebKit.dll!WebCore::**RenderBlock::paintChildren(**WebCore::PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...},
> WebCore::PaintInfo & paintInfoForChild={...}, bool usePrintRect=false)
>  Line 3085 + 0x15 bytes    C++
>  WebKit.dll!WebCore::**RenderBlock::paintContents(**WebCore::PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line 3078
> + 0x1b bytes    C++
>      WebKit.dll!WebCore::**RenderBlock::paintObject(**WebCore::PaintInfo
> & paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line
> 3189    C++
>      WebKit.dll!WebCore::**RenderBlock::paint(WebCore::**PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line 2900
>    C++
>      WebKit.dll!WebCore::**RenderBlock::paintChild(**WebCore::RenderBox *
> child=0x7fe912f4, WebCore::PaintInfo & paintInfo={...}, const
> WebCore::LayoutPoint & paintOffset={...}, WebCore::PaintInfo &
> paintInfoForChild={...}, bool usePrintRect=false)  Line 3119  C++
>  WebKit.dll!WebCore::**RenderBlock::paintChildren(**WebCore::PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...},
> WebCore::PaintInfo & paintInfoForChild={...}, bool usePrintRect=false)
>  Line 3085 + 0x15 bytes    C++
>  WebKit.dll!WebCore::**RenderBlock::paintContents(**WebCore::PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line 3078
> + 0x1b bytes    C++
>      WebKit.dll!WebCore::**RenderBlock::paintObject(**WebCore::PaintInfo
> & paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line
> 3189    C++
>      WebKit.dll!WebCore::**RenderBlock::paint(WebCore::**PaintInfo &
> paintInfo={...}, const WebCore::LayoutPoint & paintOffset={...})  Line 2900
>    C++
>  WebKit.dll!WebCore::**RenderLayer::**paintForegroundForFragmentsWit**hPhase(WebCore::PaintPhase
> phase=PaintPhaseForeground, const WTF::Vector<WebCore::**
> LayerFragment,1,WTF::**CrashOnOverflow> & layerFragments={...},
> WebCore::GraphicsContext * context=0x0012f1dc, const WebCore::RenderLayer::
> **LayerPaintingInfo & localPaintingInfo={...}, unsigned int
> paintBehavior=0x00000000, WebCore::RenderObject * paintingRootForRenderer=
> **0x00000000)  Line 4167    C++
>  WebKit.dll!WebCore::**RenderLayer::**paintForegroundForFragments(**const
> WTF::Vector<WebCore::**LayerFragment,1,WTF::**CrashOnOverflow> &
> layerFragments={...}, WebCore::GraphicsContext * context=0x0012f1dc,
> WebCore::GraphicsContext * transparencyLayerContext=**0x0012f1dc, const
> WebCore::LayoutRect & transparencyPaintDirtyRect={..**.}, bool
> haveTransparency=false, const WebCore::RenderLayer::**LayerPaintingInfo &
> localPaintingInfo={...}, unsigned int paintBehavior=0x00000000,
> WebCore::RenderObject * paintingRootForRenderer=**0x00000000, bool
> selectionOnly=false, bool forceBlackText=false)  Line 4142    C++
>  WebKit.dll!WebCore::**RenderLayer::**paintLayerContents(WebCore::**GraphicsContext
> * context=0x0012f1dc, const WebCore::RenderLayer::**LayerPaintingInfo &
> paintingInfo={...}, unsigned int paintFlags=0x000000e0)  Line 3873    C++
>  WebKit.dll!WebCore::**RenderLayer::**paintLayerContentsAndReflectio**n(WebCore::GraphicsContext
> * context=0x0012f1dc, const WebCore::RenderLayer::**LayerPaintingInfo &
> paintingInfo={...}, unsigned int paintFlags=0x000000e0)  Line 3689 + 0x13
> bytes    C++
>  WebKit.dll!WebCore::**RenderLayer::paintLayer(**WebCore::GraphicsContext
> * context=0x0012f1dc, const WebCore::RenderLayer::**LayerPaintingInfo &
> paintingInfo={...}, unsigned int paintFlags=0x000000e0)  Line 3671 + 0x10
> bytes    C++
>  WebKit.dll!WebCore::**RenderLayer::paintList(WTF::**Vector<WebCore::RenderLayer
> *,0,WTF::CrashOnOverflow> * list=0x7fec91b0, WebCore::GraphicsContext *
> context=0x0012f1dc, const WebCore::RenderLayer::**LayerPaintingInfo &
> paintingInfo={...}, unsigned int paintFlags=0x000000e0)  Line 3959    C++
>  WebKit.dll!WebCore::**RenderLayer::**paintLayerContents(WebCore::**GraphicsContext
> * context=0x0012f1dc, const WebCore::RenderLayer::**LayerPaintingInfo &
> paintingInfo={...}, unsigned int paintFlags=0x000000e0)  Line 3884    C++
>  WebKit.dll!WebCore::**RenderLayer::**paintLayerContentsAndReflectio**n(WebCore::GraphicsContext
> * context=0x0012f1dc, const WebCore::RenderLayer::**LayerPaintingInfo &
> paintingInfo={...}, unsigned int paintFlags=0x00000000)  Line 3689 + 0x13
> bytes    C++
>  WebKit.dll!WebCore::**RenderLayer::paintLayer(**WebCore::GraphicsContext
> * context=0x0012f1dc, const WebCore::RenderLayer::**LayerPaintingInfo &
> paintingInfo={...}, unsigned int paintFlags=0x00000000)  Line 3671 + 0x10
> bytes    C++
>      WebKit.dll!WebCore::**RenderLayer::paint(WebCore::**GraphicsContext
> * context=0x0012f1dc, const WebCore::LayoutRect & damageRect={...},
> unsigned int paintBehavior=0x00000000, WebCore::RenderObject *
> paintingRoot=0x00000000, WebCore::RenderRegion * region=0x00000000,
> unsigned int paintFlags=0x00000000)  Line 3489    C++
>  WebKit.dll!WebCore::FrameView:**:paintContents(WebCore::**GraphicsContext
> * p=0x0012f1dc, const WebCore::IntRect & rect={...})  Line 3533    C++
>      WebKit.dll!WebCore::**ScrollView::paint(WebCore::**GraphicsContext *
> context=0x00000000, const WebCore::IntRect & rect={...})  Line 1087    C++
>      WebKit.dll!WebView::**paintIntoBackingStore(WebCore:**:FrameView *
> frameView=0x7fe65c00, HDC__ * bitmapDC=0x00000000, const WebCore::IntRect &
> dirtyRect={...}, WebView::WindowsToPaint windowsToPaint=**PaintWebViewOnly)
>  Line 1170    C++
>      WebKit.dll!WebView::**updateBackingStore(WebCore::**FrameView *
> frameView=0x7fe65c00, HDC__ * dc=0x35010933, bool
> backingStoreCompletelyDirty=**true, WebView::WindowsToPaint
> windowsToPaint=**PaintWebViewOnly)  Line 1000 + 0x30 bytes    C++
>      WebKit.dll!WebView::paint(HDC_**_ * dc=0x00000000, long
> options=0x00000000)  Line 1104    C++
>      WebKit.dll!WebView::**WebViewWndProc(HWND__ * hWnd=0x000502fe,
> unsigned int message=0x0000000f, unsigned int wParam=0x00000000, long
> lParam=0x00000000)  Line 2173    C++
> <snip>
> ______________________________**_________________
> webkit-help mailing list
> webkit-help at lists.webkit.org
> https://lists.webkit.org/**mailman/listinfo/webkit-help<https://lists.webkit.org/mailman/listinfo/webkit-help>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-help/attachments/20130415/cf13b47a/attachment-0001.html>


More information about the webkit-help mailing list