在标准输入上运行时,GNU Linux“sort -g”可能会无限期挂起(在 Ubuntu 上)

在标准输入上运行时,GNU Linux“sort -g”可能会无限期挂起(在 Ubuntu 上)

以下命令(在 Ubuntu 20.04 和 22.04 上):

dd if=/dev/urandom count=800000 bs=1 | od -An -t f4 -w4 | sponge | sort -g

可以无限期挂起,GNU 排序命令占用 100% 的 CPU。我不明白是什么原因造成的。但是,只有当要排序的文件是从 stdin 输入时才会发生

答案1

这显然是一个错误。

这是由于“nan”出现在一个明显不好的位置而引起的。

这有效(比你的示例大 100 倍,但删除了所有 nan):

dd if=/dev/urandom count=80000000 bs=1 | od -An -t f4 -w4 | sponge | grep -v nan | time sort -g |tail

该错误可以通过以下方式引发:

yes nan | head -n128095 | timeout 5 sort -g

疯狂的部分是,这有效:

yes nan | head -n128095 > nan
timeout 5 sort -g < nan
timeout 5 sort -g nan

你会做错误报告吗?

相关内容