LANG
当环境变量设置为例如时,以下命令将在我的系统上崩溃en_US.UTF-8
,但可以正常工作LANG=C
:
/usr/bin/gawk '
BEGIN {
match(str, /^([^\1-\71\73-\100\133-\136\140\173-\177]|(([\302-\337][\200-\277])|(\340[\240-\277][\200-\277])|([\341-\354\356\357][\200-\277][\200-\277])|(\355[\200-\237][\200-\277])|(\360[\220-\277][\200-\277][\200-\277])|([\361-\363][\200-\277][\200-\277][\200-\277])|(\364[\200-\217][\200-\277][\200-\277])))([^\1-\54\57\73-\100\133-\136\140\173-\177]|(([\302-\337][\200-\277])|(\340[\240-\277][\200-\277])|([\341-\354\356\357][\200-\277][\200-\277])|(\355[\200-\237][\200-\277])|(\360[\220-\277][\200-\277][\200-\277])|([\361-\363][\200-\277][\200-\277][\200-\277])|(\364[\200-\217][\200-\277][\200-\277])))*/) }'
错误输出是
gawk: cmd. line:3: fatal error: internal error: segfault
查看核心转储,崩溃发生在为 AWK 语言生成的 yacc 解析器中(具体来说,在 yacc regexp libdfacomp()
例程中)。例如,在 Debian 8.6 或我测试过的其他 Linux 上不会发生这种情况。
这是一个已知问题吗?询问是因为这个问题可能是我的系统从 15.10 升级而来的。