Все время, когда вы используете структуру данных STL с компаратором, этот компаратор должен быть строгим и никогда не возвращать true, если он получает равный объект для сравнения.
Представьте себе случай, когда 2 равных объектасравниваются, меняются местами, и следующее сравнение будет снова между теми же двумя объектами.В этом случае шаг сортировки STL никогда не остановится.
Попробуйте std::greater
вместо std::greater_equal