linux下相同输入产生不同输出

在工作中有一个功能:根据文件a、b产生一个新文件c。
a、c里都是整数数组,b是文本格式,具体流程可以理解为:
    整数数组文件a + 文本文件b = 整数数组文件c。

按我们的流程,理论上整数数组里不应该有负数,但是现在生成的c中检查出了负数。

后来我们添加了一个脚本,当检查出c中有负数时,就把当时的a、b和可执行文件保存下来,
以备调试。当我们用出错情况时保存的a、b再执行时,产生的c却没有负数了。

不知道哪位碰到过这种情况。

我感觉和其中设置c的缓存区可能有关,如下所示,但没有理论依据:
        FILE *fp = fopen(c, "wb");
            char* buf = new char[2097152];
            setvbuf(fp, buf, _IOFBF, 2097152);

    会不会和内核选项有关?因为这种情况只在新机器上出现,旧机器上没有出现过,新
    旧机器的软件版本和硬件配置基本相同,但配置文件有130多处不同。(配置文件太大就不附上了)

有没有用到多线程?问题随机出现么?再观察观察

补充:是单线程,也就是只有一个主进程,问题是随机出现的,我们这边是10分钟执行一次,每天可能会出现一次,有时一天都不出现。

看上去还是要多添加一些分析信息,比如出现负数时,可以还记录一下计算的相关数据,然后后来分析是否计算有问题等