Вот сделка. У меня были две идентичные глобальные переменные в двух разных файлах .c, они не были объявлены как extern. Значит, каждый файл .c должен иметь собственную переменную, верно?
Но у меня возникло действительно странное поведение, как если бы один файл читал переменную других файлов (после их связывания). Добавление «статического» квалификатора к определениям обеих переменных, похоже, решило эту проблему.
Так что мне на самом деле интересно, что именно там произошло без квалификатора 'static'?