Skip to content

bevy_mikktspace: crash 'attempt to subtract with overflow' #8429

@wolfiestyle

Description

@wolfiestyle

I'm making a custom vulkan engine using bevy_mikktspace to generate tangents, and i'm getting a crash with a specific mesh:

Generating tangents for 44 faces - Some("Wall"), i=132 v=78
Generating tangents for 4 faces - Some("Wall"), i=12 v=6
thread 'main' panicked at 'attempt to subtract with overflow', /home/wolfie/.cargo/registry/src/github.com-1ecc6299db9ec823/bevy_mikktspace-0.10.1/src/generated.rs:1034:15

the affected line contains the expression while t < iNrTrianglesIn - 1, so it looks that this variable becomes 0 for some reason. The crash could be prevented by a saturating sub or moving the 1 to the other side (t + 1 < iNrTrianglesIn), but I don't understand the algorithm and it might be something wrong on another place. The data dump of the affected mesh is this:

0: vert=[11.229046, 0.11975533, 4.077736] norm=[-0.866, -0.0, -0.5] texc=[0.25016427, 0.846689]
1: vert=[12.804045, 0.119755566, 1.3497553] norm=[-0.866, -0.0, -0.5] texc=[0.75306165, 0.846689]
2: vert=[11.229045, 3.8822565, 4.077735] norm=[-0.866, -0.0, -0.5] texc=[0.25016445, 0.15307999]
3: vert=[12.804045, 3.8822556, 1.3497553] norm=[-0.866, -0.0, -0.5] texc=[0.75306165, 0.15308017]
4: vert=[13.341542, 2.0010056, 0.4187832] norm=[-0.866, -0.0, -0.5] texc=[0.9246843, 0.49988455]
5: vert=[10.691545, 2.001006, 5.0087147] norm=[-0.866, -0.0, -0.5] texc=[0.078540325, 0.4998845]
indices: [1, 0, 5, 5, 2, 3, 3, 4, 1, 5, 3, 1]

I don't see anything wrong like degenerate triangles, It's just a single polygon. A gltf version of the affected mesh can be found here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-MathFundamental domain-agnostic mathematical operationsC-BugAn unexpected or incorrect behaviorP-CrashA sudden unexpected crash

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions