很难跟踪内存损坏-与Valgrind一起运行时可以正确运行且没有错误

克里斯

我们有一个复杂的程序,可以在没有实现多线程的重型输入(实际上是任何输入)上很好地工作。
我们已经实现了线程池的多线程,并给予这些输入参数,我得到这些结果:
:如果我说没有任何错误,这意味着我已经测试了valgrind -v,当我说没有内存泄漏,这意味着我已经测试过它与valgrind --leak-check=full -v)。

  1. small_file:成功运行,具有1个以上的工作线程(线程),没有valgrind错误,没有内存泄漏
  2. medium_file:使用1个worker可以成功运行,没有错误/内存泄漏。有了> 1名工人,我得到:通常是堆损坏错误; b。双重自由。valgrind -v与> 1个worker一起运行时,程序将成功完成。另外,valgrind也不会打印错误ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)

既然我没有从valgrind开始遇到任何错误,那么该如何解决这个复杂而又庞大的应用程序中的内存损坏问题呢?

开发环境:
Ubuntu,64位,gcc版本:4.7.2和4.8.1(不同的计算机,较新的Ubuntu版本)。

曼托什·库玛

有了> 1名工人,我得到:通常是堆损坏错误,b.double-free。当使用valgrind -v和> 1个工作程序运行时,程序成功完成

基于以上症状,在我看来,您的程序中显然存在某种同步问题。看起来您的程序正在线程之间共享堆内存地址,因此,每当发生某些数据争用时,您都会遇到问题。

您还提到过,当您运行valgrind -v时,程序将成功完成。这表明您的程序有同步问题,并且也取决于序列/时序。这些是最难发现的错误之一。我们还应该记住,动态工具在程序执行并执行错误操作之前不会发出任何警告。我的意思是程序中可能有问题,但是执行顺序(由于存在一些与计时相关的问题)决定了工具是否会捕获这些故障。

话虽这么说,我认为在大型程序中找不到这种bug的捷径还可以,但是我强烈怀疑某些数据竞速方案会导致内存损坏/双重释放。因此,您可能需要使用Helgrind来检查/查找可能导致内存损坏的数据用/线程问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与Valgrind一起运行时,mmap返回EINVAL

来自分类Dev

与Valgrind一起运行时,mmap返回EINVAL

来自分类Dev

与Scala中的Existential类型一起使用时,通过TypeTag通过typeTag跟踪类型运行时类型

来自分类Dev

与Web应用程序一起运行的Visual Studio的内存泄漏

来自分类Dev

与jQuery 3.x一起运行时CKFinder错误

来自分类Dev

所有 AngularJS 运行时错误都参考 angular.js - 没有有用的堆栈跟踪

来自分类Dev

Kinect SDK损坏的内存错误

来自分类Dev

Valgrind内存泄漏错误的文件跟踪

来自分类Dev

有没有一种方法可以确定在与并发消费者一起运行时处理器是否卡住了?

来自分类Dev

具有内存内容的内存跟踪

来自分类Dev

具有内存内容的内存跟踪

来自分类Dev

为什么在与Django一起运行时,datetime.strptime会引发错误?

来自分类Dev

kafka 8和内存-Java运行时环境没有足够的内存来继续

来自分类Dev

当与构建任务一起运行时,Android connectedCheck任务失败,但单独运行时,它不会失败

来自分类Dev

将运行时错误的堆栈跟踪打印到文件

来自分类Dev

运行时错误vs内存泄漏vs链接错误

来自分类Dev

运行时堆栈内存

来自分类Dev

Scrapy(Python)与cron一起运行时抛出ImportError

来自分类Dev

Xcode测试隔离通过,与其他测试一起运行时失败

来自分类Dev

与AndroidJUnitRunner一起运行时,ActivityUnitTestCase抛出RuntimeException

来自分类Dev

celery与eventlet一起运行时,结构失败,名称查找失败

来自分类Dev

使用CMake与CLion一起运行时,ofstream不会创建文件

来自分类Dev

当与Visual Studio 2015一起运行时,OpenCV无法打开视频文件

来自分类Dev

GUI与tkinter一起运行时在python中在后台播放声音

来自分类Dev

celery与eventlet一起运行时,结构失败,名称查找失败

来自分类Dev

与特权用户一起运行时,Xulrunner崩溃

来自分类Dev

Java与jar一起运行时不遵循-cp选项的类路径规范

来自分类Dev

IP与cron一起运行时不起作用/不产生输出

来自分类Dev

Mocha MongoDB(Mongoose)测试在与Grunt一起运行时是否挂起

Related 相关文章

  1. 1

    与Valgrind一起运行时,mmap返回EINVAL

  2. 2

    与Valgrind一起运行时,mmap返回EINVAL

  3. 3

    与Scala中的Existential类型一起使用时,通过TypeTag通过typeTag跟踪类型运行时类型

  4. 4

    与Web应用程序一起运行的Visual Studio的内存泄漏

  5. 5

    与jQuery 3.x一起运行时CKFinder错误

  6. 6

    所有 AngularJS 运行时错误都参考 angular.js - 没有有用的堆栈跟踪

  7. 7

    Kinect SDK损坏的内存错误

  8. 8

    Valgrind内存泄漏错误的文件跟踪

  9. 9

    有没有一种方法可以确定在与并发消费者一起运行时处理器是否卡住了?

  10. 10

    具有内存内容的内存跟踪

  11. 11

    具有内存内容的内存跟踪

  12. 12

    为什么在与Django一起运行时,datetime.strptime会引发错误?

  13. 13

    kafka 8和内存-Java运行时环境没有足够的内存来继续

  14. 14

    当与构建任务一起运行时,Android connectedCheck任务失败,但单独运行时,它不会失败

  15. 15

    将运行时错误的堆栈跟踪打印到文件

  16. 16

    运行时错误vs内存泄漏vs链接错误

  17. 17

    运行时堆栈内存

  18. 18

    Scrapy(Python)与cron一起运行时抛出ImportError

  19. 19

    Xcode测试隔离通过,与其他测试一起运行时失败

  20. 20

    与AndroidJUnitRunner一起运行时,ActivityUnitTestCase抛出RuntimeException

  21. 21

    celery与eventlet一起运行时,结构失败,名称查找失败

  22. 22

    使用CMake与CLion一起运行时,ofstream不会创建文件

  23. 23

    当与Visual Studio 2015一起运行时,OpenCV无法打开视频文件

  24. 24

    GUI与tkinter一起运行时在python中在后台播放声音

  25. 25

    celery与eventlet一起运行时,结构失败,名称查找失败

  26. 26

    与特权用户一起运行时,Xulrunner崩溃

  27. 27

    Java与jar一起运行时不遵循-cp选项的类路径规范

  28. 28

    IP与cron一起运行时不起作用/不产生输出

  29. 29

    Mocha MongoDB(Mongoose)测试在与Grunt一起运行时是否挂起

热门标签

归档