Attach (recommended) or Link to PDF file here:
[compressed.tracemonkey-pldi-09.pdf](https://github.com/mozilla/pdf.js/files/7846269/compressed.tracemonkey-pldi-09.pdf)


Configuration:
- Web browser and its version: chrome v97.0.4692.7
- Operating system and its version: macOS 10.15.7
- PDF.js version: 2.12.313
- Is a browser extension: no

Steps to reproduce the problem:
1. https://github.com/mozilla/pdf.js/blob/236c8d47864e8ebf593bae21576670b59a7d4988/src/display/base_factory.js#L146-L149
2. https://github.com/mozilla/pdf.js/blob/236c8d47864e8ebf593bae21576670b59a7d4988/src/display/annotation_layer.js#L2073-L2081
3. As in the code above, sometimes 'data.rect' is '[0,0,0,0]', which causes 'this.svgFactory.create' to throw an error, which makes the following for loop stop working. https://github.com/mozilla/pdf.js/blob/236c8d47864e8ebf593bae21576670b59a7d4988/src/display/annotation_layer.js#L2352-L2371


const width = data.rect[2] - data.rect[0];
    const height = data.rect[3] - data.rect[1];
    const svg = this.svgFactory.create(width, height);
    
    
    
    
    let points = [];
    for (const coordinate of data.vertices) {
      const x = coordinate.x - data.rect[0];
      const y = data.rect[3] - coordinate.y;
      points.push(x + "," + y);
    }
    points = points.join(" ");
    const polyline = this.svgFactory.createElement(this.svgElementName);
    polyline.setAttribute("points", points);
    
    
    polyline.setAttribute("stroke-width", data.borderStyle.width || 1);
    polyline.setAttribute("stroke", "transparent");
    polyline.setAttribute("fill", "transparent");
    svg.appendChild(polyline);
    this.container.append(svg);
    
    
    this._createPopup(polyline, data);
    return this.container;
  }
}
class PolygonAnnotationElement extends PolylineAnnotationElement {