From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 5B9EF3858407; Tue, 14 Sep 2021 16:54:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5B9EF3858407 From: "gprocida at google dot com" To: libabigail@sourceware.org Subject: [Bug default/28320] abidw - (non-deterministic) infinite loop in XML writer Date: Tue, 14 Sep 2021 16:54:46 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: libabigail X-Bugzilla-Component: default X-Bugzilla-Version: unspecified X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: gprocida at google dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: dodji at redhat dot com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Sep 2021 16:54:46 -0000 https://sourceware.org/bugzilla/show_bug.cgi?id=3D28320 --- Comment #6 from gprocida at google dot com --- I've debugged the issue I see with the test suite (with the debugging patch= es I posted active). The triggering command is: build/tools/abipkgdiff --verbose --self-check --d1 tests/data/test-diff-pkg/nmap-debuginfo-7.70-5.el8_testjcc.x86_64.rpm --d2 tests/data/test-diff-pkg/nmap-debuginfo-7.70-5.el8_testjcc.x86_64.rpm tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64.rpm tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64.rpm It triggers on "struct lua_State". The type already in the map (already emitted) is declaration only with no named_definition_of_declaration while = the other is a canonical type (get_naked_canonical_type gives the same pointer). Tracing through what the deep_ptr_eq_functor does: The first type is a class_decl, as is the second, and end we up in equals(class_decl, class_decl). One of them is declaration only, so this function delegates to equals(class_or_union, class_or_union). One of the ty= pes is declaration only, neither are anonymous and ODR is relevant, so equality checks the scoped names. The scoped names are identical and equality evaluates to true. On the other hand, the hash values are completely different. --=20 You are receiving this mail because: You are on the CC list for the bug.=