一次 STATUS_STACK_BUFFER_OVERRUN 栈溢出错误排查
来源:互联网 发布:2016新能源数据 编辑:程序博客网 时间:2024/06/11 18:33
程序被中断下来后,调试器附加上去,发现调用栈是在调用窗口过程时候中断的,当前的消息是WM_PAINT,其他线索没有,如果继续运行就导致进程退掉了,尝试直接从vs环境调试运行也是同样的结果,但是在Output面板发现的报告了 STATUS_STACK_BUFFER_OVERRUN 字面理解就是栈溢出了,WM_PAINT消息处理时候和栈溢出有啥关系呢,通过窗口句柄找到对应的控件类型和id,到工程搜了一遍,发现有一个listview控件的定制类在,但该类根本没有响应WM_PAINT消息,都是系统默认在画,在看看消息映射部分,发现用的是虚拟列表形式,那就好办了,我对这个消息是有印象的,知道其中的系统缓冲区长度是有限制的,我心想答案已经有了,直接定位到系统回调LVN_GETDISPINFO的响应函数时候,发现真的是粗暴的用lstrcpy来拷贝字符串到系统缓冲区,那解决办法就是wcsncpy_s(pItem->pszText, 260, msgItem.strRecvNames, _TRUNCATE);虽然问题是解决了,但是还没有找到一种办法直接定位到当时栈溢出时候的调用栈,有点郁闷。
参考:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb774760(v=vs.85).aspx
http://msdn.microsoft.com/zh-cn/magazine/cc163311.aspx#S4
0 0
- 一次 STATUS_STACK_BUFFER_OVERRUN 栈溢出错误排查
- 一次python内存溢出的排查
- 栈溢出崩溃排查(一)
- 栈溢出崩溃排查(二)
- 一次segfault错误的排查过程
- 记一次sapjco 运行时错误排查
- 一次segfault错误的排查过程
- 记一次Thrift Server错误排查
- java 内存溢出 栈溢出的原因与排查方法
- java 内存溢出 栈溢出的原因与排查方法
- java 内存溢出 栈溢出的原因与排查方法
- java内存溢出 栈溢出的原因与排查方法
- 一次c3p0连接池连接异常错误的排查
- Zookeeper日记——记录一次集群启动错误排查
- 记一次hive的内存溢出(OutOfMemoryError: Java heap space)排查
- JVM成长之路,记录一次内存溢出导致频繁FGC的问题排查及解决
- 内存溢出排查
- 内存溢出排查步骤:
- [OpenCV]配置OpenCV的Qt开发环境
- memcached源码剖析系列之内存存储机制(三)
- 在Qt Creator与MinGW中配置OpenCV 2.2
- C#代码片段
- 在android系统中增加预编译apk 2012-05-10 08:33:23
- 一次 STATUS_STACK_BUFFER_OVERRUN 栈溢出错误排查
- 浏览器 CSS & JS Hack 手册
- TF-IDF与余弦相似性的应用(三):自动摘要(系列三篇)
- 系统升级改造的问题与实践
- 计算机发展及现状
- Linux C一站式学习习题答案5.1.1
- 关于ticks_to_floppy_on和floppy_on的疑问
- Linux C一站式学习习题答案5.1.2 四舍五入
- 明天放假么亲。