Функции printf и fprintf, по-видимому, небезопасны без использования различных защитных ограждений. Это подробно описано в segfault с clone () и printf .
Я обнаружил проблему с помощью метода грубой силы, заключающегося в том, чтобы отметить, где произошла последняя распечатка, а затем комментировать строки после этого, пока ошибка не исчезнет.
Могло бы случиться так, что Java работает в режиме эмуляции XP. В этом случае Vista будет фальсифицировать число версии для Windows, заставляя Java полагать, что это работает на XP. Проверьте вкладку совместимости исполняемого файла.
Фактическое количество версии для Windows Windows 2000 было 5.0. Windows XP был 5.1. Vista, предположительно, 6.0, таким образом, Ваша тестовая программа функционирует правильно. Это звучит мне как Java, определенно понимает это превратно.
Вам, возможно, придется полагаться на JNI для получения правильного ответа. Я сортирую, предполагают, что Вы уже спросили себя, почему Вы, возможно, должны были бы варьироваться поведение своей программы на основе того, используете ли Вы XP или Vista.