tornado创建项目后build vxworks报错unable to allocate heap, heap_chunk_size 587202560, Win32 error 0
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相关推荐
- MyEclipse导入项目后 js文件报错
当我们把项目导入MyEclipse的时候会发现导入的项目报错,点开一看是js文件报错了,那么我们应该如何处理导入MyEclipse之后js文件报错呢??? 首先,我们要保证我们导入的代码是正确的. 解 ...
- 清除缓存后IDEA启动报错Failed to create JVM.JVM Path:****。Error luanching IDEA
我启动idea时候的报错情况如下 为什么会报错呢?今天上课的时候想清楚缓存,手多把下面的东西给勾上了 咱也不知道什么意思,以为只是单纯的清理缓存,清完后idea就打不开了,它是打不开了而我是裂开了.然 ...
- 【Katalon常见问题解决四】浏览器升级后,katalon报错 Unable to open browser with url: ''
以谷歌浏览器为例 浏览器升级后,katalon跑已经录制好的脚本,会报下 Unable to open browser with url: '' 问题是:chromedriver版本不对, 解决方法是 ...
- Pulsar bk报错Unable to allocate memory, exiting bookie
报错 开发人员反映pulsar不可用 每个pulsar bk节点查看 ./bookkeeper shell bookiesanity 发现有2个bk不可用,查看对应日志发现如下 15:36:52.50 ...
- Linux创建用户后,登录报错/usr/bin/xauth: file /home/user/.Xauthority does not exist
错误信息如下: /usr/bin/xauth: file /home/user/.Xauthority does not exist 错误原因: 是因为添加用户时没有授权对应的目录,仅仅执行了user ...
- 解决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 ...
- `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 ...
- vscode github copilot 报错 unable to verify the first certificate.解决方案
今天我发现我的copilot审核终于过了,但是VS还是弹不出网页,就去VScode试,结果下载插件.登录github.使用魔法后依旧一直报错 unable to verify the first ce ...
- 【解决】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 ...
最新文章
- 并发测试神器,模拟一次超过 5 万的并发用户
- 最新机器学习库Scikit-learn库使用总结.pptx
- WSHPSRS-匹克选择列表生成器-SRS(R12.2.3)
- @Autowired自动注入
- hubliderx如选择相同单词_高考英语,十六种高效单词记忆法,建议人手一份!
- ROC和AUC介绍以及如何计算AUC(转载+自己重新排版整理)
- 【IT笔试面试题整理】删除无序链表中重复的节点
- mongodb数据可视化_使用MongoDB实时可视化开放数据
- Qt文档阅读笔记-QSslConfiguration官方解析与实例
- Oracle左连接、右连接、全外连接以及(+)号用法
- python socket poll
- 使用html制作个人简历(新手)
- bat 批处理查看局域网闲置ip(ping或Arp列表结合)
- linux中剪刀石头布的程序,简单模拟剪刀石头布js
- Tapestry3.0开发概论
- 软件项目工作量评估方法简述之COSMIC功能点方法
- JAVA学习笔记 03 - JAVA语言程序结构
- 2023秋招360公司NLP算法岗面经
- day42--哈希表
- git访问远程服务器文件,git访问远程服务器文件