这段代码愉快地嗡嗡作响了很长一段时间,直到我们最近发现了一个边缘情况,它静默失败——没有返回错误。失败显然非常微妙。我们可以通过以下方式让代码在边缘情况下平稳运行:
1) 使用任何包含-traceback
或调试 (-g
或-gopt
) 的选项集进行编译;
2) 编译-fast -Mnounroll
;
3) 编译优化<2;
4)在代码中加入WRITE语句来判断失败的位置;
换句话说,大多数对调试故障有用的工具——实际上会导致故障消失。
我正在调查与循环展开或其他优化相关的失败及其解决方案的任何信息。
谢谢大家。