<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Segfault sweep_line_delete on video playback (2)"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=81699#c10">Comment # 10</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Segfault sweep_line_delete on video playback (2)"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=81699">bug 81699</a>
              from <span class="vcard"><a class="email" href="mailto:psychon@znc.in" title="Uli Schlachter <psychon@znc.in>"> <span class="fn">Uli Schlachter</span></a>
</span></b>
        <pre>(In reply to <a href="show_bug.cgi?id=81699#c7">comment #7</a>)
[...]
<span class="quote">> That's my only worry, I am trying to remember all the call paths that enter
> here and why we have empty boxes in the first place. In this case, the empty
> boxes seem to be part of the clip, which is worrisome. All the zero height
> boxes should have been prefiltered...

> diff --git a/src/cairo-boxes.c b/src/cairo-boxes.c
> index 63b68dd..90afdbd 100644
> --- a/src/cairo-boxes.c
> +++ b/src/cairo-boxes.c
> @@ -139,6 +139,8 @@ _cairo_boxes_add_internal (cairo_boxes_t *boxes,
>      if (unlikely (boxes->status))
>         return;
>  
> +    assert(box->x2 > box->x1 && box->y2 > box->y1);
> +
>      chunk = boxes->tail;
>      if (unlikely (chunk->count == chunk->size)) {
>         int size;

> So yes, this suggests a far deeper problem than just the tesselate failure.</span >

I guess you meant this: assert(box->p2.x > box->p1.x && box->p2.y > box->p1.y); 

That assert triggers for 61 test cases in the test suite. Most of these are due
to boxes likes this (this code appears in different places inside of cairo,
e.g.  _cairo_xcb_surface_fixup_unbounded_boxes and the span compositor's
fixup_unbounded_boxes):

    box.p1.x = _cairo_fixed_from_int (extents->unbounded.x +
extents->unbounded.width);
    box.p1.y = _cairo_fixed_from_int (extents->unbounded.y);
    box.p2.x = _cairo_fixed_from_int (extents->unbounded.x);
    box.p2.y = _cairo_fixed_from_int (extents->unbounded.y +
extents->unbounded.height);

I guess that means that this code is wrong and should be fixed? Perhaps we
should even commit this assert to cairo?

At least I didn't find anything generating zero-height boxes.

List of tests: big-empty-box big-empty-triangle big-little-box bug-40410
bug-bo-collins bug-bo-rectangular clip-complex-<a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - EDITING:Bullet and text overlap in edit view when text font size is increased by using (ctrl +]) shortcut."
   href="show_bug.cgi?id=61492">bug61492</a>
clip-complex-shape-eo-aa clip-complex-shape-eo-mono clip-fill
clip-fill-eo-unbounded clip-fill-nz-unbounded
clip-group-shapes-unaligned-rectangles clip-mixed-antialias clip-nesting
clip-operator clip-shape clip-stroke-unbounded clip-text clip-twice
copy-disjoint fill-disjoint get-path-extents hatchings image-surface-source
mask operator operator-alpha operator-alpha-alpha paint-with-alpha-clip-mask
pdf-surface-source ps-surface-source random-clip record-paint-alpha-clip-mask
record-self-intersecting record1414x-self-intersecting
record2x-self-intersecting record90-self-intersecting
recordflip-self-intersecting rectilinear-fill rotated-clip self-copy
self-copy-overlap self-intersecting subsurface-image-repeat
subsurface-modify-child subsurface-modify-parent subsurface-pad
subsurface-reflect subsurface-repeat surface-pattern-operator
svg-surface-source text-glyph-range tighten-bounds trap-clip
unantialiased-shapes unbounded-operator white-in-noop xcb-surface-source
xlib-surface-source zero-mask

Oh and the assert does not trigger for the test case attached to this bug
report (except for the "test-traps" (pseudo-)backend, which doesn't count, I
guess). But that test case doesn't crash here either...?</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>