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 <[email protected]>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 > [email protected] > https://lists.webkit.org/**mailman/listinfo/webkit-help<https://lists.webkit.org/mailman/listinfo/webkit-help> >
_______________________________________________ webkit-help mailing list [email protected] https://lists.webkit.org/mailman/listinfo/webkit-help
