Если поток stdout буферизуется на уровне драйвера устройства и выводится обработкой прерывания, то тогда, когда буфер заполнен, и если он предназначен для простого отбрасывания символов, а не для блокирования ввода-вывода, то это приведет к потере символов в выводе.
Если это так, то фактическое выполнение следует нормальной последовательности (и Rasor Оккама скорее предполагает, что это так), но некоторые выходные данные трассировки просто теряются.Эта гипотеза поддерживается, возможно, искаженным выводом fn2_tart
.
Использование "printf" в качестве метода трассировки не является неинтрузивным .Это может как влиять, так и зависеть от того, как работает код.Увеличение размера буфера может помочь, если периоды высокой загрузки ЦП относительно короткие, но если они постоянно поддерживаются, никакое количество буферизации не решит проблему.