可变堆栈大小
回答
这可能意味着在一个实例中堆栈恰好流入其他分配的块,而在另一个实例中,它会在未分配的地址空间上跳转。
我一开始也这么想过,但我一直在试图看看/ 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. Android堆栈大小
- 2. Linux堆栈大小
- 3. 堆栈= java.lang.StackOverflowError的:堆栈大小8MB
- 4. 增加AsyncTask堆栈大小?
- 5. LINQ堆栈大小问题
- 6. Android后退堆栈大小
- 7. 增加堆栈大小c#
- 8. 增加堆栈大小
- 9. 递归堆栈大小?
- 10. 递归堆栈大小
- 11. LuaJit增加堆栈/堆大小
- 12. android renderscript堆栈大小太小
- 13. 达到的最大堆栈大小
- 14. 最大线程堆栈大小.NET?
- 15. 如何找到最大堆栈大小?
- 16. 是否可以删除最大调用堆栈大小?
- 17. iphone os支持的最大堆大小和堆栈大小是多少?
- 18. 递归 - 调用堆栈失败测试的最大堆栈大小
- 19. 在Windows上增加堆栈大小(GCC)
- 20. Keil RTX RTOS线程堆栈大小
- 21. 设置SBT的堆栈大小
- 22. 配置FreeRTOS ISR堆栈大小
- 23. Unix中的堆栈大小pthread_create
- 24. 异常java.lang.StackOverflowError:堆栈大小8MB
- 25. 在JavaScript中调用堆栈大小
- 26. 堆栈的大小和值类型
- 27. 了解事件堆栈大小
- 28. 配置boost ::线程堆栈大小
- 29. 在C中检查堆栈大小#
- 30. 如何用runhaskell增加堆栈大小?
令人惊讶的是,编译器并没有将该函数优化为简单的无限循环。 – caf 2010-07-29 13:46:51