A save
инструкция в SPARC может вызвать segfault только через ловушки для пролива через окно. Это случится, если:
- вы бежите из стека (и/или испортился stackpointer)
- и причиной разлива окна (т.е. регистра окна обратной записи смыва в стек).
Последнее означает, что существует элемент непредсказуемости. Это связано с тем, что возникновение разливов зависит от использования предыдущего регистрационного окна - точное обнаружение разлива может измениться в результате того, что другие процессы, которые делают тайм-аут того же самого процессора. Solaris не будет автоматически разливать все окна reg reg на каждом переключателе контекста, потому что это повредит производительности. Например. две рабочие нагрузки, которые используют восемь окон (стековые кадры), каждый может с радостью вытеснить друг друга и полностью работать без стека на процессоре с> = 16 reg-окнами.
Я могу себе представить, что вероятность разлива может увеличиться из-за перенаправления вывода (более глубокие стеки в файле write-to-file, чем на стороне записи-консоли, с большей вероятностью вытеснят ваш выигрыш в реестре).
Если это так, вы должны иметь возможность принудительно выполнить сбой вашего тестового теста даже без перенаправления вывода, если вы привязываете фоновый процессор/стек hogger (рекурсивный факториал 200000, в цикле, чтобы постоянно удалять рег окна) на тот же процессор, где обрабатывается ваш тестовый файл.
Не могли бы вы предоставить более подробную информацию? Что это за тест? Возможно, трассировка стека? –