public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/113159] New: More robust std::sort for silly comparator functions
@ 2023-12-27 23:04 jengelh at inai dot de
  2023-12-28  1:16 ` [Bug libstdc++/113159] " redi at gcc dot gnu.org
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: jengelh at inai dot de @ 2023-12-27 23:04 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113159

            Bug ID: 113159
           Summary: More robust std::sort for silly comparator functions
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jengelh at inai dot de
  Target Milestone: ---

Type: enhancement
Version: 13.2.1 20231130 [revision 741743c028dc00f27b9c8b1d5211c1f602f2fddd]
(SUSE Linux) x86_64

Input:

#include <algorithm>
#include <cstdlib>
#include <vector>
int main()
{
        std::vector<int> v(256);
        sort(v.begin(), v.end(), [](int a, int b) -> bool { return rand() & 1;
});
        // alternatively, { return true; }
        //
        // -D_GLIBCXX_DEBUG can diagnose obviously-broken cases like
        // {return true;}, but won't necessarily for
        // rand()&1 at all times.
}

Observed output:

<SIGSEGV>

Expected output:

Though I recognize this is undefined behavior, I would love to see the
implementation not run into an out-of-bounds access. glibc's qsort for example
stays within the array bounds even if given a buggy comparator like that.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-01-03 11:09 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-27 23:04 [Bug libstdc++/113159] New: More robust std::sort for silly comparator functions jengelh at inai dot de
2023-12-28  1:16 ` [Bug libstdc++/113159] " redi at gcc dot gnu.org
2023-12-28  8:46 ` xry111 at gcc dot gnu.org
2023-12-28 18:34 ` redi at gcc dot gnu.org
2023-12-28 18:42 ` amonakov at gcc dot gnu.org
2023-12-29  0:23 ` jengelh at inai dot de
2023-12-29  0:33 ` pinskia at gcc dot gnu.org
2023-12-29  7:56 ` fw at gcc dot gnu.org
2024-01-03  1:41 ` xry111 at gcc dot gnu.org
2024-01-03 11:09 ` redi at gcc dot gnu.org

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).