Fix crash with -D_GLIBCXX_DEBUG

I noticed a buildbot failure where gdb crashed in info-os.exp, when
compiled with -D_GLIBCXX_DEBUG:

    (gdb) info os procgroups
    /usr/include/c++/7/bits/stl_algo.h:4834:
    Error: comparison doesn't meet irreflexive requirements, assert(!(a < a)).
    Objects involved in the operation:
	iterator::value_type "< operator type" {
	  type = pid_pgid_entry;
	}

The bug here is that pid_pgid_entry::operator< violates the C++
irreflexivity rule; that is, that an object cannot be less than
itself.

Tested locally by re-running info-os.exp.

gdb/ChangeLog
2018-07-30  Tom Tromey  <tom@tromey.com>

	* nat/linux-osdata.c (pid_pgid_entry::operator<): Fix
	irreflexivity violation.
This commit is contained in:
Tom Tromey 2018-07-19 21:10:09 -06:00
parent dba7455e76
commit 463c08d160
2 changed files with 10 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2018-07-30 Tom Tromey <tom@tromey.com>
* nat/linux-osdata.c (pid_pgid_entry::operator<): Fix
irreflexivity violation.
2018-07-30 Tom Tromey <tom@tromey.com>
* cli/cli-decode.c (lookup_cmd): Remove lint code.

View File

@ -415,9 +415,11 @@ struct pid_pgid_entry
/* Process group leaders always come first... */
if (this->is_leader ())
return true;
if (other.is_leader ())
{
if (!other.is_leader ())
return true;
}
else if (other.is_leader ())
return false;
/* ...else sort by PID. */