【问题标题】:xargs command fails on 'LINE_MAX' assertionxargs 命令在“LINE_MAX”断言上失败
【发布时间】:2020-06-16 02:27:45
【问题描述】:

我已经在 Windows 上使用 git bash 几年了,从来没有遇到过任何真正的问题。现在我面临一个有点奇怪的问题。每当使用 xargs 命令时,我都会收到此错误:

assertion "bc_ctl.arg_max >= LINE_MAX" failed: file "xargs.c", line 500, function: main
Aborted (core dumped)

转储的核心对我来说并不是特别有用,因为它只包含 Frame/Function/Args 十六进制值:

 1 Stack trace:^M
 2 Frame        Function    Args^M
 3 000FFFFC370  0018005D14C (000FFFFE3F4, 00000000002, 000FFFFC4A0, 000FFFFDE50)^M
 ...
 15 End of stack trace


即使使用像xargs --version 这样简单的命令,我仍然得到相同的结果。我已经搜索并阅读了许多自述文件、博客和手册,但我似乎找不到导致这种情况的原因。我知道断言意味着我的命令比 LINE_MAX 大;这是我系统上的:

workspace  $>getconf LINE_MAX
2048

但我看不出xargs --version 比 2048 大/长。

感谢任何帮助或提示。

谢谢

【问题讨论】:

  • 您是否将输入传递给xargs?你只运行“xargs --version”吗?您可以尝试像xargs --something 这样的未处理选项吗? line 500 你知道你有什么 xargs/gnuutils 版本吗? github.com/c9/node-gnu-tools/blob/master/findutils-src/xargs/…
  • 未处理选项的结果相同。至于我相信我在 findutils 4.2.20 上的版本,但我不能确定,因为即使 --version 选项也不起作用。
  • xargs 尝试将参数打包到一定数量。如果由于某种原因在xargs 执行期间达到了限制,这可能是一个错误,但您可以强制设置字符数,例如xargs --max-chars=1024
  • @KamilCuk 会的!无论如何,这几乎就是我认为的下一步。
  • ARG_MAX=32000 和 _POSIX_ARG_MAX=4096

标签: bash shell git-bash xargs


【解决方案1】:

好吧,事实证明,当我的 git bash 加载时,其他一些脚本是来源的。他们是公司'.sh',因为我在我的工作电脑上。其中一个是通过干扰几个配置(包括 LINE_MAX)来破坏我的 xargs。 通过“取消采购”这些脚本,我解决了我的问题。

我仍在调查 getconf 返回正确值而 xargs 失败但至少我现在能够正确使用 xargs 的原因。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 2021-03-16
    相关资源
    最近更新 更多