Possible "index out of range" in `equalMarks`
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Beginne in markers/markers.go bei equalMarks und verwende den Reproducer in examples/04-non-standard-modules/cockroach-is-any-bug/main.go als Regressionsfall. Führe das Beispiel aus und überprüfe, dass der Vergleich von Marker-Listen unterschiedlicher Länge nicht mehr zu einem Panic führt und IsAny ein stabiles Ergebnis liefert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Hello!
I'm interested in carefree iteration over lists whose lengths can vary:
// equalMarks compares two error markers.
func equalMarks(m1, m2 errorMark) bool {
if m1.msg != m2.msg {
return false
}
for i, t := range m1.types {
if !t.Equals(m2.types[i]) {
return false
}
}
return true
}
And I made an example that breaks this code:
package main
import (
"fmt"
"github.com/cockroachdb/errors"
)
type SimpleWrapper struct {
err error
}
func (w SimpleWrapper) Error() string {
return "boom!"
}
func (w SimpleWrapper) Unwrap() error {
return w.err
}
func main() {
stack := errors.WithStack
ref := stack(stack(SimpleWrapper{}))
err := stack(stack(SimpleWrapper{err: stack(errors.New("boom!"))}))
if errors.IsAny(err, ref) {
fmt.Println("gotcha!")
}
/* panic: runtime error: index out of range [3] with length 3
goroutine 1 [running]:
github.com/cockroachdb/errors/markers.equalMarks(...)
github.com/cockroachdb/[email protected]/markers/markers.go:205
github.com/cockroachdb/errors/markers.IsAny({0x102802528, 0x1400000e438}, {0x14000167f48, 0x1, 0x14000167f28?})
github.com/cockroachdb/[email protected]/markers/markers.go:186 +0x364
github.com/cockroachdb/errors.IsAny(...)
github.com/cockroachdb/[email protected]/markers_api.go:64
main.main()
examples/04-non-standard-modules/cockroach-is-any-bug/main.go:26 +0x318
*/
}
Where am I wrong?
- Vorherrschende Sprache
- Go
- Sterne
- 2.5k
- Forks
- 75
- Ø Merge
- 2 Std. 5 Min.
- Gemergte PRs (30 T.)
- 1
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus cockroachdb/errors
-
Errors returned from Join are incompatible with errors returned the standard lib's errors.JoinOffen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 52/100
cockroachdb/errors#162 · 1 Kommentar ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 48/100
cockroachdb/errors#156 · 20 Reaktionen ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
cockroachdb/errors#155 · 1 Kommentar · 1 Reaktion ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
cockroachdb/errors#146 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
cockroachdb/errors#145 · 1 Kommentar · 1 Reaktion ·
Alle Issues in cockroachdb/errors
Ähnliche Issues
-
bug frontend good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
oalders/clodhopper#133 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
peasant-labs/peasant#596 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
hatchet-dev/hatchet#5179 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
FairwindsOps/nova#484 ·