内核模块中的Stackoverflow

时间:2018-11-04 14:54:30

标签: c arrays linux-kernel kernel stack-overflow

我正在读一本书“ Linux内核。开发。第三版”。罗伯特·洛夫(Robert Love)。

我在本书中读到的有关堆栈大小的内容:

  

在x86上,堆栈大小在编译时是可配置的,并且可以是   4KB或8KB。从历史上看,内核堆栈是两个页面,   通常意味着在32位架构上为8KB,在32位架构上为16KB   64位体系结构-此大小是固定且绝对的

我的VM具有ubuntu 16.06 64位4.15内核。所以我的堆栈大小应该是16000字节(16KB)

我尝试检查stackoverflow行为。我在使用16000多个字节的堆栈上创建数组。

class MyViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
    http_method_names = ['post']
    # your code

我认为我应该看到堆栈崩溃或类似情况导致内核崩溃,但是我只能看到正确的输出。为什么不打破堆栈?

1 个答案:

答案 0 :(得分:1)

您还可以使阵列易失,GCC不会对其进行优化。

<span>*</span>