tornado创建项目后build vxworks报错unable to allocate heap, heap_chunk_size 587202560, Win32 error 0

  • build报错“unable to allocate heap”
  • 解决方法
  • 原因分析
  • 参考

build报错“unable to allocate heap”

按照原帖VxWorks+Tornado从听说到入门的相关步骤在win10下,进行到“使用篇、step4、build vxworks”时,会有以下报错

wtxtcl D:\zjm\VxWorks相关\Tornado2.2\host\src\hutils\configGen.tcl ..\Project0.wpj
ccpentium -c -g -mcpu=pentium -march=pentium -ansi -nostdlib -fno-builtin -fno-defer-pop -
P -xassembler-with-cpp -I.. -ID:\zjm\VxWorks相关\Tornado2.2\target\config\vmware -ID:\zjm\
VxWorks相关\Tornado2.2\target\h    -ID:\zjm\VxWorks相关\Tornado2.2\target\config\comps\src
-ID:\zjm\VxWorks相关\Tornado2.2\target\src\drv     -DCPU=PENTIUM -DTOOL_FAMILY=gnu  -DTOOL=gn
u -DPRJ_BUILD   -fvolatile D:\zjm\VxWorks相关\Tornado2.2\target\config\vmware\sysALib.s -o sysALib.o
ccpentium -c -g -mcpu=pentium -march=pentium -ansi -nostdlib -fno-builtin -fno-defer-pop -
I.. -ID:\zjm\VxWorks相关\Tornado2.2\target\config\vmware -ID:\zjm\VxWorks相关\Tornado2.2\t
arget\h      -ID:\zjm\VxWorks相关\Tornado2.2\target\config\comps\src -ID:\zjm\VxWorks相关\Tor
nado2.2\target\src\drv   -DCPU=PENTIUM -DTOOL_FAMILY=gnu  -DTOOL=gnu -DPRJ_BUILD   -fvolati
le D:\zjm\VxWorks相关\Tornado2.2\target\config\vmware\ln97xEnd.c -o ln97xEnd.o
d:\zjm\VxWorks相关\Tornado2.2\host\x86-win32\lib\gcc-lib\i586-wrs-vxworks\2.9-PentiumIII-0
10221\cc1.exe: *** 2. unable to allocate heap, heap_chunk_size 587202560, Win32 error 0
make: *** [ln97xEnd.o] Error 0x1Done.

看提示是说无法分配堆,似乎是太大了

解决方法

借助visio studio的命令行工具修改cc1.exe的二进制文件

首先打开命令行工具

进入到目录:xxx\Tornado2.2\host\x86-win32\lib\gcc-lib\i586-wrs-vxworks\2.9-PentiumIII-010221依次输入如下命令

dumpbin /HEADERS cc1.exe
editbin /STACK:67108864 cc1.exe
dumpbin /HEADERS cc1plus.exe
editbin /STACK:67108864 cc1plus.exe

然后再次进行build

原因分析

在从在WindowsXP 32位编译到Windows 7 64位的过程中,发现GCC 2.96为PowerPC编写的cc1.exe程序失败了,在一些编译中也出现了同样的错误。使用VisualStudio调试器附加到cc1.exe并使用Sysinals工具进行监视的调查表明:

1、当cc1.exe程序成功时,它会产生3个线程。

2、当cc1.exe程序失败时,第三个CreateThread()调用失败ERROR_NOT_ENOUGH_MEMORY.

3、运行VisualStudio时报告的cc1.exe图像头dumpbin /HEADERS命令,显示堆栈保留大小为400000000字节。也就是说,创建的每个线程都需要400000000字节的连续虚拟地址空间。

4、当CreateThread调用失败时ERROR_NOT_ENOUGH_MEMORY,Sysinals VMMAP工具表明,最大空闲虚拟内存区域小于请求的400000000字节堆栈保留大小。

5、cc1.exe是一个32位进程,它有2GBytes的虚拟地址空间。Windows 7具有ASLR(地址空间布局随机化),这使得DLL的负载地址被随机化。我认为ASLR实际上正在分割虚拟地址空间,因此在cc1.exe进程的某些调用中,加载DLL使用的虚拟地址不会为线程堆栈留下足够大的空闲区域。和ASLR一样,在Windows 7中,加载到cc1.exe中的DLL比在WindowsXP下加载的DLL多出大约4倍,这可能是问题的原因。

基于上述调查,VisualStudioeditbin /STACK:67108864程序用于将cc1.exe的堆栈保留大小减小到64兆字节,其中选择64兆字节作为用于C+代码的cc1plus.exe程序的堆栈保留大小。随着堆栈储备大小的减小,ERROR_NOT_ENOUGH_MEMORY错误没有再出现。

参考

https://www.jianshu.com/p/d156809e0e64
http://www.babaiye.com/?p=349
https://stackoverflow.com/questions/14840572/win32-error-8-during-ccppc-compile-on-windows-7-x86

本博客同步更新至:https://night-zhang.github.io/2019/08/23/tornado%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE%E5%90%8Ebuild-vxworks%E6%8A%A5%E9%94%99unable-to-allocate-heap-heap-chunk-size-587202560-Win32-error-0/

tornado创建项目后build vxworks报错unable to allocate heap, heap_chunk_size 587202560, Win32 error 0相关推荐

  1. MyEclipse导入项目后 js文件报错

    当我们把项目导入MyEclipse的时候会发现导入的项目报错,点开一看是js文件报错了,那么我们应该如何处理导入MyEclipse之后js文件报错呢??? 首先,我们要保证我们导入的代码是正确的. 解 ...

  2. 清除缓存后IDEA启动报错Failed to create JVM.JVM Path:****。Error luanching IDEA

    我启动idea时候的报错情况如下 为什么会报错呢?今天上课的时候想清楚缓存,手多把下面的东西给勾上了 咱也不知道什么意思,以为只是单纯的清理缓存,清完后idea就打不开了,它是打不开了而我是裂开了.然 ...

  3. 【Katalon常见问题解决四】浏览器升级后,katalon报错 Unable to open browser with url: ''

    以谷歌浏览器为例 浏览器升级后,katalon跑已经录制好的脚本,会报下 Unable to open browser with url: '' 问题是:chromedriver版本不对, 解决方法是 ...

  4. Pulsar bk报错Unable to allocate memory, exiting bookie

    报错 开发人员反映pulsar不可用 每个pulsar bk节点查看 ./bookkeeper shell bookiesanity 发现有2个bk不可用,查看对应日志发现如下 15:36:52.50 ...

  5. Linux创建用户后,登录报错/usr/bin/xauth: file /home/user/.Xauthority does not exist

    错误信息如下: /usr/bin/xauth: file /home/user/.Xauthority does not exist 错误原因: 是因为添加用户时没有授权对应的目录,仅仅执行了user ...

  6. 解决idea启动项目报错:Unable to open debugger port(127.0.0.1:60157):java.net.SocketExceptionsocket closed

    转载自  解决idea启动项目报错:Unable to open debugger port(127.0.0.1:60157):java.net.SocketException"socket ...

  7. `flutter build aar 报错:Because xxx requires SDK version >=2.16.1<3.0.0,version solving failed pub get

    项目场景: flutter build aar 报错:Because xxx requires SDK version >=2.16.1<3.0.0,version solving fai ...

  8. vscode github copilot 报错 unable to verify the first certificate.解决方案

    今天我发现我的copilot审核终于过了,但是VS还是弹不出网页,就去VScode试,结果下载插件.登录github.使用魔法后依旧一直报错 unable to verify the first ce ...

  9. 【解决】win10下emqx启动报错Unable to load emulator DLL、node.db_role = EMQX_NODE__DB_ROLE = core

    问题描述1: 启动时报错:win10下emqx启动报错 Unable to load emulator DLL D:\Applications_installed\emqx-5.0.4-windows ...

最新文章

  1. 并发测试神器,模拟一次超过 5 万的并发用户
  2. 最新机器学习库Scikit-learn库使用总结.pptx
  3. WSHPSRS-匹克选择列表生成器-SRS(R12.2.3)
  4. @Autowired自动注入
  5. hubliderx如选择相同单词_高考英语,十六种高效单词记忆法,建议人手一份!
  6. ROC和AUC介绍以及如何计算AUC(转载+自己重新排版整理)
  7. 【IT笔试面试题整理】删除无序链表中重复的节点
  8. mongodb数据可视化_使用MongoDB实时可视化开放数据
  9. Qt文档阅读笔记-QSslConfiguration官方解析与实例
  10. Oracle左连接、右连接、全外连接以及(+)号用法
  11. python socket poll
  12. 使用html制作个人简历(新手)
  13. bat 批处理查看局域网闲置ip(ping或Arp列表结合)
  14. linux中剪刀石头布的程序,简单模拟剪刀石头布js
  15. Tapestry3.0开发概论
  16. 软件项目工作量评估方法简述之COSMIC功能点方法
  17. JAVA学习笔记 03 - JAVA语言程序结构
  18. 2023秋招360公司NLP算法岗面经
  19. day42--哈希表
  20. git访问远程服务器文件,git访问远程服务器文件

热门文章

  1. Codeforces--424B--Megacity
  2. 同为首富,李彦宏和马云有何不同?
  3. 排序 链表 图 二叉树算法
  4. 数据中台:基于标签体系的360°用户画像
  5. VC---强制重启电脑的代码
  6. C++ 会员积分(虚函数和多态)
  7. 【seo】新网站快速上百度首页seo优化的方法, 百度seo网站优化
  8. 计算机专业班级工作计划,计算机专业班主任的工作计划.doc
  9. linux下音乐播放软件
  10. 蜗居—电视剧不只是电视剧,但终究是电视剧。。。