ulimit 似乎冻结了 bash 脚本

ulimit 似乎冻结了 bash 脚本

我正在运行一个 bash 脚本,该脚本运行多个具有不同输入的小应用程序。其中一些应用程序有错误(例如,从未完成),因此我使用 ulimit 获取所有应用程序的输出或错误。

在“伪 bash”中是这样的:

for app in $( find apps ); do
  for input in $( find inputs ); do 
    (
    ulimit -Sf 150 -St 1 -Sd 1024 -Sv 51200
    app < input
    )
    # handle output
  done 
done

这对于大多数应用程序和输入(超过 1000 次测试)都很有效,但是具有某些输入(始终相同)的某些应用程序会出现问题并冻结脚本。

我已经手动测试过,发现冻结的进程有问题(分段错误)。但这是应该发生的。我使用 ulimit 就是为了得到错误并继续前进。

错误信息示例:

*** glibc detected *** <app name>: malloc(): memory corruption (fast)  0x00000000022de2f1 ***

*** glibc detected *** <app name>: corrupted double-linked list: 0x0000000001cc3120 ***

*** glibc detected *** <app name>: free(): invalid size: 0x00000000017daf20 ***

我在不同的机器、gcc 版本和 linux 版本上尝试过。虽然在不同的应用程序和输入对中,但还是出现了重复。

我该如何找出问题所在并解决它?还是我做错了什么?

相关内容