TBB 可能存在内存泄漏

2024-02-04

测试程序:

#include <tbb/parallel_invoke.h>

int main(void)
{
    tbb::parallel_invoke([]{},[]{});
    return 0;
}
  1. 编译使用g++ -std=c++11 tmp.cpp -ltbb
  2. 检查过

    valgrind --tool=memcheck --track-origins=yes \
             --leak-check=full --log-file=report ./a.out`
    
  3. libtbb版本:4.0, valgrind版本:3.8.1.

上述部分测试结果:

possibly lost: 1,980 bytes in 6 blocks

问题是:

这是一个TBB bug?

或者是这个possible lost实际上是安全的,只是一些valgrind认为不安全的代码?


最有可能的是,这是误报,而不是错误。至少有以下几个原因:

  1. TBB 使用自己的内存分配器libtbbmalloc,它会缓存内存直到进程终止,并且可能会出现泄漏。
  2. TBB 线程异步运行和终止。很可能之后main()终止后,工作线程仍在运行。它给 valgrind 带来了同样的印象

为了合理指控TBB泄漏,需要排除上述因素,例如:

  1. 删除 libtbbmalloc.so.2 或 tbbmalloc.dll 文件,以便使用 env.variable 运行应用程序TBB_VERSION=1将输出TBB: ALLOCATOR malloc但不是TBB: ALLOCATOR scalable_malloc
  2. 确保所有 TBB 线程都已终止

例如

int main()
{
    assert(tbb::tbb_allocator<int>::allocator_type() != tbb::tbb_allocator<int>::scalable);
    { // TBB scope
        tbb::task_scheduler_init scope;
        tbb::parallel_invoke([]{},[]{});
    } // TBB threads start termination here
    sleep(10); // wait for threads to terminate
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TBB 可能存在内存泄漏 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable

随机推荐

  • 异常:ASP.NET MVC 控制器中的“值不在预期范围内”[重复]

    这个问题在这里已经有答案了 我有这个字符串要格式化 并且该部分抛出异常 字符串主体 private Task SendEmailConfirmation UserModel user var emailService new EmailUn
  • 执行特定的 Maven 阶段

    有没有办法执行 Maven 构建中的特定阶段 例如 如果我只想运行那些在预集成阶段执行的插件 Maven 是否提供了一种方法来做到这一点 e g mvn pre integration phase 您不能调用生命周期阶段本身 但可以调用绑定
  • 如何在后面的代码中添加两个CSS Class来控制?

    我在 ASP NET 后面的代码中设置 2 个 css 类 我可以这样做 txtBox Attributes Add class myClass1 txtBox Attributes Add class myClass2 它总是应用一个类
  • 无法更新 RVM - “致命:无法找到‘http’的远程帮助程序”

    我在 Ubuntu 8 04 上运行 RVM 1 1 6 突然无法再更新到最新版本 rvm get head Original installed RVM version rvm 1 1 6 by Wayne E Seguin email
  • 如何在 Matplotlib 中的绘图内绘制轴线?

    当我使用 Matplotlib 绘制数据时 默认情况下 轴始终绘制为框架图的框 假设我正在轴限制内绘制数据 2 lt x lt 2 and 2 lt y lt 2 但我想通过原点在该绘图区域内绘制轴线 最好沿着这些轴线绘制刻度线和刻度标签
  • AutoMapper null 源值和自定义类型转换器,无法映射?

    当将自定义类型转换器 ITypeConverter 与 AutoMapper 一起使用时 如果源值为null e g Mapper CreateMap
  • Python 类型在方法中暗示自己的类

    Edit 我注意到人们评论说类型提示不应该与 eq 当然 不应该 但这不是我问题的重点 我的问题是why该类不能用作方法中的类型提示参数 但可以在方法中使用itself 事实证明 Python 类型提示对我使用 PyCharm 时非常有用
  • java中这个说法正确吗?

    我想使用数据报套接字在两台计算机之间进行数据传输 我使用以下行 host InetAddress getByAddress mypc new byte 192 168 1 110 但是当我使用上述语句时 我收到此错误 可能会损失精度 所以我
  • 相当于: git log --exclude-author?

    在工作中 我们有一个 git 存储库 其中大部分提交都是机器人用户自动提交的 有时我更喜欢查看该存储库中的 git 日志 但看不到自动提交 我想它可以被描述为倒置的 git log author 或 git log exclude auth
  • 从 iPhone 上的视频输出获取静态图像?

    我正在编写一个应用程序来显示 iPhone 相机所看到的光照条件的统计数据 我每秒拍摄一张图像 并对其进行计算 为了捕获图像 我使用以下方法 void captureNow AVCaptureConnection videoConnecti
  • 使用 hiera 设置类参数?

    我试图弄清楚如何使用 hiera 设置类参数的值 我正在使用两个简单的类进行测试 testhiera 和 testhiera2 以下是这些课程 root puppet el7 001 modules cat testhiera manife
  • Xcode 上 Playground 的默认目录

    当我使用 Xcode 10 1 创建新的 Playground 时 它始终默认为 Library Autosave Information 我有什么办法可以改变这个吗 解决方法与symlink Close XCode gt 在终端中输入 m
  • Android Room类型转换多种枚举类型

    我正在为我的 Room 数据库编写一个类型转换器 我有几个自定义枚举类 我想在存储在数据库中时将它们全部转换为其序数 那么 有没有办法简化它 例如传递通用枚举类型 而不是为每个单独的类编写以下内容 class Converter TypeC
  • 哪个 ember.js 组件负责将模板插入到 DOM 中?

    我正在构建ember js rails应用程序 所有车把模板都存储在 js 文件中 我想了解当路由器更改状态时它们如何插入到 DOM 中 Ember 的哪一部分执行此操作 我如何告诉 ember 放置模板 现在我只能将我的模板附加到我有一个
  • Angular 4未加载组件

    我尝试在 Angular 4 应用程序中使用 Angular 路由 但该应用程序无法加载与请求的路由匹配的组件 Here is app routing module ts import NgModule from angular core
  • 有没有快速的算法来删除字符串中的重复子串?

    有一个类似的字符串 dxabcabcyyyydxycxcxz 我想将它合并到 dxabcydxycxz 其他例子 ddxddx gt dxdx abbab gt abab 规则是 if adjacent and same merge Suc
  • 从 StringIO 读取直到遇到某个字节的快速方法

    假设我有一些StringIO from cStringIO 我想从中读取缓冲区 直到遇到某个字符 字节 例如 Z 所以 stringio StringIO ABCZ123 buf read until stringio Z buf is n
  • 使用 REST API 持久化实体

    对于 Symfony2 中的项目 我需要能够使用外部 RESTful API 而不是数据库来保存 检索实体 由于 Doctrine 将实体映射到数据库表的一行 因此我认为创建从实体到外部 API 的映射也应该很容易 然而 这对我来说是新的
  • 如何从公会的每个成员中删除角色

    如何从服务器内的每个用户中删除角色 我尝试使用let everyone message guild members get and let everyone message guild members但他们都没有工作 这是整个代码 cons
  • TBB 可能存在内存泄漏

    测试程序 include