GNU Make 在什么情况下会更改堆栈大小,为什么?

Under what conditions does GNU Make change the stack size, and why?

考虑这个 makefile:

.PHONY: all

all: dummy test
    ulimit -s

include dummy

dummy: test
    touch dummy

当我 运行 它时,我得到:

$ make -v
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ touch test; make
touch dummy
ulimit -s
unlimited

但是,如果我删除 include dummy 或将 touch dummy 替换为 true,则 ulimit -s 会得到 8192。怎么回事?

这是 GNU make 4.2.1 中修复的 bug 48009