From 8e9607a53ceb0c934df5d42884b01edfd99ddad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=9D=B0?= <52686065+zdyj3170101136@users.noreply.github.com> Date: Mon, 8 Jul 2024 19:43:46 +0800 Subject: [PATCH] fix: LoadAbstractOriginAndSpecification infinite loop caused by abstract origin point to itself. (#3767) --- pkg/dwarf/godwarf/tree.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/dwarf/godwarf/tree.go b/pkg/dwarf/godwarf/tree.go index 5d32adccf1..7e1e64b704 100644 --- a/pkg/dwarf/godwarf/tree.go +++ b/pkg/dwarf/godwarf/tree.go @@ -40,7 +40,7 @@ func (ce compositeEntry) AttrField(a dwarf.Attr) *dwarf.Field { // DWARF standard is unclear on how this should be handled func LoadAbstractOriginAndSpecification(entry *dwarf.Entry, aordr *dwarf.Reader) (Entry, dwarf.Offset) { ao, ok := getAbstractOriginOrSpecification(entry) - if !ok { + if !ok || ao == entry.Offset { return entry, entry.Offset } @@ -55,7 +55,7 @@ func LoadAbstractOriginAndSpecification(entry *dwarf.Entry, aordr *dwarf.Reader) r = append(r, e) ao, ok = getAbstractOriginOrSpecification(e) - if !ok { + if !ok || ao == entry.Offset { break } }