google / google/s2-geometry-library-java

Infinite loop in coverer builder

Offen Anfängerfreundlich
#55 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
587
Forks
231
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

```
S2RegionCoverer coverer = S2RegionCoverer.builder()
.setMinLevel(20)
.setMaxLevel(10)
.build();
S2Cap cap = S2Cap.fromAxisAngle(new S2Point(1, 0, 0), S1Angle.degrees(5));
S2CellUnion covering = coverer.getCovering(cap); // OutOfMemoryError
```

The coverer keeps trying to refine cells to reach minLevel(20), but maxLevel(10) prevents going past level 10, so it never satisfies the min level constraint and spirals until the JVM runs out of heap. Could be prevented by checking that min < max

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne bei S2RegionCoverer.builder und verfolge, wie minLevel und maxLevel gespeichert und von getCovering verwendet werden. Reproduziere die bereitgestellte Konfiguration und untersuche die vorhandenen Builder-Validierungs- oder Covering-Tests. Die Aufgabe ist abgeschlossen, wenn verhindert wird, dass die ungültige Level-Kombination in die Endlosschleife zur Verfeinerung gelangt, und die Regression durch einen Test abgedeckt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Ruhig
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
68/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.