可变堆栈大小
回答
这可能意味着在一个实例中堆栈恰好流入其他分配的块,而在另一个实例中,它会在未分配的地址空间上跳转。
我一开始也这么想过,但我一直在试图看看/ proc/
你的意思是说,如果默认堆栈大小为8192k,那么在超过此限制之后,分段故障会发生很多? 您能否发布说明以检查此行为? – agori 2010-07-29 10:44:31
我只是有一个循环捕获/ proc/
ASLR代表“地址空间布局随机化”。它所做的是在每次运行时更改不同的段/段起始地址,是的,这包括堆栈。
这不是一个bug;这是设计。它的目的部分是让溢出缓冲区难以获得访问权限,因为为了执行任意代码,您需要诱使CPU“返回”到堆栈中某个点或运行时库中。合法的代码会知道要返回的位置,但是某些罐头式利用不会 - 每次都可能是不同的地址。至于为什么表观堆栈大小发生变化,堆栈空间是以页面分配的,而不是以字节分配的。调整堆栈指针,特别是如果它不是页面大小的倍数,则会改变您看到的可用空间量。
您确定ASLR可以更改段/段大小吗?你有这方面的参考吗? – agori 2010-07-29 09:58:14
除了这是它的整个生活目的(因此名称),请参阅http://en.wikipedia.org/wiki/Address_space_layout_randomization或http://netsecurity.about.com/od/quicktips/qt/whatisaslr.htm一些更多的信息。 – cHao 2010-07-29 10:02:56
ASLR肯定会更改地址,但我看不到任何有关更改堆栈大小的文档。 – agori 2010-07-29 10:05:47
- 1. Linux堆栈大小
- 2. Android堆栈大小
- 3. 堆栈= java.lang.StackOverflowError的:堆栈大小8MB
- 4. Tomcat7堆栈大小很小
- 5. FreeRTOS STM32链接器堆栈大小vs任务堆栈大小
- 6. 递归堆栈大小?
- 7. 固定大小堆栈Java
- 8. LINQ堆栈大小问题
- 9. 调用堆栈大小?
- 10. 增加堆栈大小c#
- 11. 增加AsyncTask堆栈大小?
- 12. 增加堆栈大小
- 13. java.lang.StackOverflowError:堆栈大小8MB
- 14. 递归堆栈大小
- 15. LuaJit增加堆栈/堆大小
- 16. 堆栈或堆?哪一个可以选择已知大小的变量?
- 17. android renderscript堆栈大小太小
- 18. 最大堆栈大小使用
- 19. 最大调用堆栈大小
- 20. 如何找到最大堆栈大小?
- 21. java集最大堆栈大小
- 22. 最大堆栈大小超过
- 23. 最大线程堆栈大小.NET?
- 24. 达到的最大堆栈大小
- 25. 增加堆栈保留大小不会防止堆栈溢出
- 26. 是否可以删除最大调用堆栈大小?
- 27. Hotspot JVM的“Xss”选项是否将固定的“初始堆栈大小”或堆栈可以增长到的“最大堆栈大小”设置为?
- 28. iphone os支持的最大堆大小和堆栈大小是多少?
- 29. 递归 - 调用堆栈失败测试的最大堆栈大小
- 30. 如何在Java/Groovy的声明堆栈大小(确认错误:堆栈太大)
令人惊讶的是,编译器并没有将该函数优化为简单的无限循环。 – caf 2010-07-29 13:46:51