mirror of
https://github.com/golang/go
synced 2024-11-02 13:42:29 +00:00
2a4845257f
For lazy import resolution, there's reentrancy issue with (*Named).load method, when "t.resolve(t)" can lead us to the same named type, thus (*Named).load is called recursively, causing the deadlock. The main problem is that when instantinate a type, we calculate the type hashing, including TParams. Calling t.TParams().Len() triggers the reentrancy call to "(*Named).load". To fix this, just not checking TParams().Len() if we are hashing. Updates #48185 Change-Id: Ie34842d7b10fad5d11fbcf75bb1c64a89deac6b8 Reviewed-on: https://go-review.googlesource.com/c/go/+/347534 Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com> Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Robert Findley <rfindley@google.com> Reviewed-by: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org> |
||
---|---|---|
.. | ||
p.go | ||
p_test.go |