1、报错信息:

error: the frame size of 1928 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]

2、报错打印分析

(1)编译器编译内核时,发现栈帧大小是1024字节,但是栈使用是1928字节,超过了默认栈帧大小;
(2)默认编译器是报警告信息,上面报错误信息是因为在编译器选项中添加了-Wall,把警告当错误处理;

3、报错解决

3.1、报错原因分析

(1)栈内存申请过大,或者函数调用层次太深都会导致栈溢出,引起系统崩溃,在编译时会去检查栈使用大小是否超过配置的栈大小;
(2)内核编译时会通过"-Wframe-larger-than=xxx"选项,传递给编译器栈大小,当编译器检测到栈使用大于阈值时,会产生一条警告信息;

3.2、内核中指定栈大小

(1)在内核配置文件中,"CONFIG_FRAME_WARN"配置项就是配置栈大小的;
(2)可以直接修改配置文件,或者通过"make menuconfig"修改配置项;

3.3、栈大小的影响

3.3.1、栈比较大

比如栈大小使用8K
(1)优点:栈比较大,不容易导致栈溢出;
(2)缺点:浪费内存,有些时候根本用不到这么大的栈内存;并且内存是4K分页,创建一个内核栈就需要申请连续2块的4K页,内存紧张的时候,申请8K的连续内存比申请4K困难的多;

3.3.2、栈比较小

比如栈大小1K
(1)优点:节省内存,都占用不到一个4K页,创建内核栈时比较容易;
(2)缺点:因为栈比较小,容易栈溢出;

3.4解决措施

(1)修改内核配置项,把"CONFIG_FRAME_WARN"配置项改大一点;
(2)修改程序,不要超过内核配置的栈大小;
补充:目前我所接触到的内核配置,32位的系统配置的栈大小一般是1K,64位的系统栈大小一般是4K;

编译时内核栈溢出:the frame size of 1928 bytes is larger than 1024 bytes相关推荐

  1. linux c 内核 warning: the frame size of 1040 bytes is larger than 1024 bytes

    问题描述: 在编译内核模块驱动时,如果出现如下警告信息: warning: the frame size of 1040 bytes is larger than 1024 bytes.主要是因为内核 ...

  2. warning: the frame size of 1040 bytes is larger than 1024 bytes

    问题描述: 在编译内核模块驱动时,如果出现如下警告信息: warning: the frame size of 1040 bytes is larger than 1024 bytes.主要是因为内核 ...

  3. ffmpeg编码报错:more samples than frame size (avcodec_encode_audio2)

    fkd_aac默认有好几种采样范围,如下: 2048 HE-AAC v1/v2 1024: Default configuration.//AAC-LC 1024 512: Default lengt ...

  4. Linux 编译时查找错误字符,编译Linux内核时出现“fatal error: linux/netfilter/xt_dscp: No such file or directory”...

    编译Linux内核时出现"fatal error: linux/netfilter/xt_dscp: No such file or directory".下面开始查找原因. 第一 ...

  5. linux内核编译时bad register name `%dil'错误

    在ubuntu 10.04下编译2.6.23内核时,出现了如下错误: boot.h112行如下: gcc嵌入汇编限定符的意义: r表示可以选任何寄存器,结果在编译时选了dil寄存器,这个好像是x86_ ...

  6. 个人编译移动内核时遇到的一些问题报错及处理方法【不定时更新2021.1.3】

    以下仅用于记录个人学习时遇到的一些问题及部分相应解决方法,不一定能解决所有情况. 1. 用qemu创建虚拟机来运行编译的小型系统时: drive with bus=0, unit=0 (index=0 ...

  7. Mac上编译Linux内核时找不到ncurses

    Mac上编译Linux内核时找不到ncurses 前言 Linux源码零零散散看了一些,东西太多.今天突然有兴趣想去编译一下Linux内核,就去网上找了一些资料,由于我是用的Mac,然后并没有找到好的 ...

  8. 编译linux内核时出错

    在编译linux内核的时候使用make menuconfig 可能出现下面的错误 *** Unable to find the ncurses libraries or the *** require ...

  9. linux内核编译的image,内核编译时生成uImage的办法

    有一个很简单的办法u-boot编译结束时,会在tool文件夹下面生成一个mkimage文件,将这个文件复制到交叉编译器目录下的bin文件夹下面,以后编译时就会生成uImage文件,省的用命令行的方式转 ...

  10. JAVA编译显示存在不安全_java – 编译时出现“未经检查或不安全的操作”错误...

    参见英文答案 > What causes javac to issue the "uses unchecked or unsafe operations" warning   ...

最新文章

  1. LIO-SAM: 紧耦合的激光与惯导里程计方案
  2. 活动目录在构建核心过程中的八个关键点(下)
  3. java编译会产生多少个类文件,编译一个定义了三个类和四个方法的Java源程序文件,总共会产生多少个字节码文件 ? ( )...
  4. 世界上最长寿的泡泡:加点东西,生命延长到465天
  5. (翻译)Real-UID,Effective-UID,Saved-UID区别
  6. Zabbix基础概念
  7. 如何处理HTML5新标签的浏览器兼容问题?
  8. MyBatisPlus注入公共Sql问题
  9. 争时金融java_Java高并发编程基础之AQS
  10. php表单验证内容不能为空,php校验表单检测字段是否为空的方法_PHP教程
  11. 怎么输出一个二维数组_LeetCode54与59,一个口诀教会你旋转二维数组
  12. 将Vim打造成Python快速开发环境(一)
  13. java stream流_恕我直言你可能真的不会java第4篇:Stream管道流Map操作
  14. Pentest Wiki Part6 权限维持
  15. Ubuntu18.04下小米、TPLink、腾达USB无线网卡跳坑记录
  16. python计算目标文件夹中各文件的GC含量
  17. C语言发展史的点点滴滴
  18. mysql jdbc 绑定变量_「MySQL高级特性——绑定变量」- 海风纷飞Blog
  19. 管中窥豹SPDK RBD bdev模块
  20. 深度剖析淘宝天猫搜索逻辑

热门文章

  1. XBOX360游戏发售表(12月1日)
  2. JS 数字转换为EXCEL字母列
  3. 网站木马检测_检测病毒,用这几个网站就够了
  4. [NLP]OpenNLP介绍
  5. 广西建工OA系统office插件显示问题解决方案
  6. 更新计算机策略命令,强制更新组策略指令是什么
  7. 如何把字幕文件转换成txt文件或word文档,.ass文件内容怎么提取出来txt文件
  8. Frobenius自同构
  9. css函数之重复的径向渐变
  10. CSS3重复渐变(线性和径向渐变)