Solche dinge können auch vom GCC kommen. Der linker "übersieht" bei mir manchmal geänderte strings für die textausgabe (und baut statt dessen die alten ein). Nach einem make clean / make all funktioniert es dann wieder.
Wenn sowas im datensegment passiert, kann es sicherlich auch im codesegment passieren. Dann läuft das programm halt nicht mehr.

mfg