gpt4 book ai didi

linux - 堆栈展开支持?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:18 26 4
gpt4 key购买 nike

我已经为 armv6l 构建了一个最小的 Busybox initramfs 系统。内核版本为 3.12.20。如果我在没有 CONFIG_ARM_UNWIND | 的情况下编译内核启用堆栈展开支持(实验性) 然后通过 SSH 连接到系统并运行此脚本:

#!/bin/sh

while :
do
dmesg
done

“Killed”消息将在短时间后显示在屏幕上,系统变得无法使用。如果我查看控制台,我会看到 OOM killer 已经杀死了/bin/sh。我不必运行脚本来触发此行为,有时 SSH 连接会在登录后几乎立即断开。

之后我可以登录系统,但是 shell 不可用,所以我无法运行任何命令。但是,运行脚本总是会触发问题。我做了一些测试,发现就在 OOM killer 杀死 shell 之前,几乎所有 512 MB RAM 都是空闲的,所以 OOM killer 没有理由杀死任何东西。

在做了一些研究之后,我仍然不明白什么是堆栈展开支持,但该功能是实验性的,所以我不希望我的系统需要它才能使用。

谁能解释为什么功能系统需要此功能?

最佳答案

这是来自 arch/arm/Kconfig.debug

config ARM_UNWIND
bool "Enable stack unwinding support (EXPERIMENTAL)"
depends on AEABI && EXPERIMENTAL
default y
help
This option enables stack unwinding support in the kernel
using the information automatically generated by the
compiler. The resulting kernel image is slightly bigger but
the performance is not affected. Currently, this feature
only works with EABI compilers. If unsure say Y.

因此,一般来说,任何 arm 内核都应该能够在没有 ARM_UNWIND 支持的情况下运行,当然,在某些情况下,您的设置可能会触发一个不常见的错误,但我认为您不会遇到这种情况。

检查内核日志,了解有关问题的信息。

关于linux - 堆栈展开支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23779214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com