我注意到一个应用程序(用 C++ 编写)在 Alpine 上崩溃,出现分段错误。
经过一番调查后,问题似乎出在 Alpine 的线程堆栈大小太小。
事实上,在其他官方发行版映像(如 Debian)上运行相同程序时不会出现相同的问题。
是否可以配置基于 Alpine 的 docker 镜像的线程堆栈大小?
答案1
使用 Alpine Linux 中的 pthreads 库创建的线程的默认线程堆栈大小非常小,这可能会导致您遇到的分段错误等问题。要增加线程堆栈大小,您可以PTHREAD_STACK_MIN
在构建 Docker 映像时将环境变量设置为更大的值。
FROM alpine:latest
ENV PTHREAD_STACK_MIN 2097152
# rest of the Dockerfile
我们将其设置PTHREAD_STACK_MIN
为 2097152 字节,即 2MB。您可以调整此值以使其最适合您的应用程序。