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


div.appendChild(rendered);
          }
        }
      }
    }
    this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);
  }
  /**
   * Update the annotation elements on existing annotation layer.
   *
   * @public
   * @param {AnnotationLayerParameters} parameters
   * @memberof AnnotationLayer
   */
  static update(parameters) {
    const { page, viewport, annotations, annotationCanvasMap, div } =
      parameters;
    const transform = viewport.transform;
    const matrix = `matrix(${transform.join(",")})`;
    let scale, ownMatrix;
    for (const data of annotations) {
      const elements = div.querySelectorAll(
        `[data-annotation-id="${data.id}"]`
      );
      if (elements) {
        for (const element of elements) {
          if (data.hasOwnCanvas) {
            const rect = Util.normalizeRect([
              data.rect[0],
              page.view[3] - data.rect[1] + page.view[1],