Skip to content

Assert in sweep.cpp (Line 351) - Expression "VertLeq( e->Org, e->Dst )" #22

@MelvynMay

Description

@MelvynMay

Hi from Unity! We're seeing the occasional crash and infinite loop in libtess2 from the PolygonCollider2D. The following code produces a crash:

    struct vec2
    {
        vec2(float _x, float _y)
            : x(_x)
            , y(_y)
        {}

        float x;
        float y;
    };
    vec2 points[34] =
    {
        vec2(3.65450994e-08f, -0.545000076f),
        vec2(2.17929479e-08f, -0.325000018f),
        vec2(1.64285296e-08f, -0.245000020f),
        vec2(5.02914155e-09f, -0.0750000030f),
        vec2(-2.34693287e-09f, 0.0350000039f),
        vec2(-5.02914155e-09f, 0.0750000030f),
        vec2(-6.37024655e-09f, 0.0950000137f),
        vec2(-7.04079861e-09f, 0.105000012f),
        vec2(-6.37024655e-09f, 0.0950000137f),
        vec2(-5.02914155e-09f, 0.0750000030f),
        vec2(-1.00582831e-09f, 0.0150000015f),
        vec2(-7.04079861e-09f, 0.105000012f),
        vec2(-1.24052164e-08f, 0.185000017f),
        vec2(-1.70990830e-08f, 0.255000025f),
        vec2(-2.24634995e-08f, 0.335000008f),
        vec2(-2.58162611e-08f, 0.385000050f),
        vec2(-3.65450994e-08f, 0.545000076f),
        vec2(-3.65450994e-08f, 0.545000076f),
        vec2(-3.18512328e-08f, 0.475000054f),
        vec2(-2.71573661e-08f, 0.405000061f),
        vec2(-1.70990830e-08f, 0.255000025f),
        vec2(-8.38190317e-09f, 0.125000015f),
        vec2(-6.37024655e-09f, 0.0950000137f),
        vec2(-3.68803743e-09f, 0.0550000072f),
        vec2(-3.35276112e-10f, 0.00500000035f),
        vec2(5.69969405e-09f, -0.0850000083f),
        vec2(2.51457095e-08f, -0.375000060f),
        vec2(3.92273058e-08f, -0.585000038f),
        vec2(3.98978557e-08f, -0.595000029f),
        vec2(3.98978557e-08f, -0.595000029f),
        vec2(3.92273058e-08f, -0.585000038f),
        vec2(2.51457095e-08f, -0.375000060f),
        vec2(3.98978557e-08f, -0.595000029f),
        vec2(3.98978557e-08f, -0.595000029f)
    };

    TESStesselator* tess = tessNewTess(NULL);
    tessAddContour(tess, 2, points, sizeof(vec2), 34);
    tessTesselate(tess, TESS_WINDING_ODD, TESS_POLYGONS, 8, 2, NULL);
    tessDeleteTess(tess);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions