【问题标题】:Segmentation fault from outside of my code来自我的代码外部的分段错误
【发布时间】:2012-09-04 00:03:28
【问题描述】:

我有一个运行良好的基于​​ wxWidgets/GTK 的应用程序 - 除了一个安装在 Debian Squeeze ARM 系统上。当用户刚刚激活它的主窗口时,它会崩溃。为了找到原因,我向应用程序添加了一个信号处理程序,并从该信号处理程序中使用 libunwind 来查找崩溃的来源。在运行良好的测试期间,当软件编写例如正确解决 0x0 libunwind 将我指向发生这种情况的函数。

但是意外出现崩溃的系统的结果有点奇怪,它们似乎发生在我的应用程序之外。一个崩溃来自一个没有名称的函数(这里 libunwind 返回一个空字符串),一个是由“malloc_usable_size”引起的,一个永远不会以这种方式死掉的系统函数。

那么……接下来要做什么?欢迎所有想法、建议或任何其他提示,因为我不确定如何继续解决该问题...

【问题讨论】:

  • 有没有可能是 libunwind 误导了你?您不能从其他系统获取核心转储并使用 gdb 吗?
  • 核心转储是个好主意...我会试试的!

标签: gtk arm debian wxwidgets


【解决方案1】:
  • 检查缓冲区溢出或意外覆盖某些内存以查找库函数返回的项目的任何结构、指针、内存位置。
  • 检查代码中是否存在无效指针释放,以查找您正在使用的库分配指针。
  • 可能使用 valgrind 也会有所帮助。

【讨论】:

  • Valgrind 运行良好,并且在所有 my 系统上都没有显示任何问题。这件事发生在我没有完全访问权限并且因此无法使用 Valgrind 进行调试的系统上。奇怪的是:当用户选择窗口时发生崩溃,没有涉及我的代码......
猜你喜欢
  • 2018-07-29
  • 1970-01-01
  • 2014-03-23
  • 2013-01-03
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多