Possible "index out of range" in `equalMarks`
还没有人认领这个 Issue。
评估
调研方向
从 markers/markers.go 中的 equalMarks 开始,使用 examples/04-non-standard-modules/cockroach-is-any-bug/main.go 中的复现程序作为回归用例。运行示例并验证,比较长度不同的标记列表不再引发 panic,且 IsAny 产生稳定的结果。
由索引模型根据 Issue 内容生成。
描述
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/errors@v1.9.0/markers/markers.go:205
github.com/cockroachdb/errors/markers.IsAny({0x102802528, 0x1400000e438}, {0x14000167f48, 0x1, 0x14000167f28?})
github.com/cockroachdb/errors@v1.9.0/markers/markers.go:186 +0x364
github.com/cockroachdb/errors.IsAny(...)
github.com/cockroachdb/errors@v1.9.0/markers_api.go:64
main.main()
examples/04-non-standard-modules/cockroach-is-any-bug/main.go:26 +0x318
*/
}
Where am I wrong?
- 主要语言
- Go
- 星标
- 2.5k
- 派生
- 75
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
cockroachdb/errors 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 52/100
cockroachdb/errors#162 · 1 条评论 ·
-
难度 3/5 1-2 天 新手友好度 48/100
cockroachdb/errors#156 · 20 个 reaction ·
-
难度 4/5 3-5 天 新手友好度 30/100
cockroachdb/errors#155 · 1 条评论 · 1 个 reaction ·
-
难度 4/5 3-5 天 新手友好度 35/100
cockroachdb/errors#146 ·
-
难度 4/5 3-5 天 新手友好度 35/100
cockroachdb/errors#145 · 1 条评论 · 1 个 reaction ·
查看 cockroachdb/errors 的全部 Issue
相似的 Issue
-
area/dev-productivity area/disaster-recovery area/ipcei kind/enhancement
难度 2/5 1-3 小时 新手友好度 70/100
-
难度 1/5 1 小时以内 新手友好度 85/100
-
难度 2/5 1-3 小时 新手友好度 75/100
-
kind/bug status/0-triage
难度 2/5 1-3 小时 新手友好度 75/100
-
🤔 refinement needed
难度 2/5 1-3 小时 新手友好度 75/100
equinor/radix-operator#1979 ·