After .o files were compiled with -flto, the linking step produces the randomness: for i in $(seq 4) ; do gcc-12 -Wall -fsanitize=address -o jhead obj/jhead.o obj/jpgfile.o obj/jpgqguess.o obj/paths.o obj/exif.o obj/iptc.o obj/gpsinfo.o obj/makernote.o -lm 2>/dev/null && md5sum jhead ; done 9385fe8d7e32129d29d69a0ecba95cae jhead 0bf0c32be7bbe0b5f7a832c0e1650999 jhead 27bcceed3563ad8e21f8c423acc91561 jhead 89b3c1e7b8a527163d9d57db9c13e9e7 jhead