Чтобы добавить к уже правильному ответу @Stargateur, вот автоматический способ найти ошибку в вашем коде, используя SortChecker :
LD_PRELOAD=$HOME/SortCheck/bin/libsortcheck.so ./a.out
a.out[3024]: qsort: comparison function is not symmetric (comparison function 0x400526 (/home/yugr/src/so/a.out+0x400526), called from 0x4005c6 (/home/yugr/src/so/a.out+0x4005c6), cmdline is "./a.out")
Это предупреждение говорит о том, что lcomparator
возвращаетпротиворечивые результаты при смене порядка аргументов.Для дальнейшей отладки этой проблемы запустите с
export SORTCHECK_OPTIONS=raise=1
и проверьте сгенерированный codedump.