public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb/binutils-2_40-branch] libctf: fix assertion failure with no system qsort_r
@ 2023-03-24 15:03 Nick Alcock
  0 siblings, 0 replies; only message in thread
From: Nick Alcock @ 2023-03-24 15:03 UTC (permalink / raw)
  To: bfd-cvs, gdb-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7aa47eafcce45076ea22deda831acad2df19a8b1

commit 7aa47eafcce45076ea22deda831acad2df19a8b1
Author: Nick Alcock <nick.alcock@oracle.com>
Date:   Mon Jan 23 13:11:32 2023 +0000

    libctf: fix assertion failure with no system qsort_r
    
    If no suitable qsort_r is found in libc, we fall back to an
    implementation in ctf-qsort.c.  But this implementation routinely calls
    the comparison function with two identical arguments. The comparison
    function that ensures that the order of output types is stable is not
    ready for this, misinterprets it as a type appearing more that once (a
    can-never-happen condition) and fails with an assertion failure.
    
    Fixed, audited for further instances of the same failure (none found)
    and added a no-qsort test to my regular testsuite run.
    
    libctf/:
            PR libctf/30013
            * ctf-dedup.c (sort_output_mapping): Inputs are always equal to
            themselves.

Diff:
---
 libctf/ctf-dedup.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libctf/ctf-dedup.c b/libctf/ctf-dedup.c
index c46f69e7449..6297c45c84d 100644
--- a/libctf/ctf-dedup.c
+++ b/libctf/ctf-dedup.c
@@ -2306,6 +2306,10 @@ sort_output_mapping (const ctf_next_hkv_t *one, const ctf_next_hkv_t *two,
   ctf_id_t one_type;
   ctf_id_t two_type;
 
+  /* Inputs are always equal to themselves.  */
+  if (one == two)
+    return 0;
+
   one_gid = ctf_dynhash_lookup (d->cd_output_first_gid, one_hval);
   two_gid = ctf_dynhash_lookup (d->cd_output_first_gid, two_hval);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-03-24 15:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-24 15:03 [binutils-gdb/binutils-2_40-branch] libctf: fix assertion failure with no system qsort_r Nick Alcock

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).