valgrind 检测到分离 pthread 的数据争用

2024-05-04

我正在创建两个detached线程:

pthread_attr_t tha1;

void* fun1(void*){ return 0; }
void* fun2(void*){ return 0; }

int main(){
    pthread_t th1, th2;
    pthread_attr_init(&tha1); 
    pthread_attr_setdetachstate(&tha1, PTHREAD_CREATE_DETACHED);

    pthread_create( &th1, &tha1, fun1, 0);
    pthread_create( &th2, &tha1, fun2, 0);

    pthread_attr_destroy(&tha1);
    pthread_exit((void*) 0);
    return 0;

}

使用上面的代码 valgrind(helgrind 工具)显示数据竞争:

Possible data race during write of size 1 at 0x68C7677 by thread #1
==13976== Locks held: none
==13976==    at 0x4C3A3CC: mempcpy (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==13976==    by 0x401357F: _dl_allocate_tls_init (dl-tls.c:515)
==13976==    by 0x51C9CED: get_cached_stack (allocatestack.c:254)
==13976==    by 0x51C9CED: allocate_stack (allocatestack.c:501)
==13976==    by 0x51C9CED: pthread_create@@GLIBC_2.2.5 (pthread_create.c:539)
==13976==    by 0x4C34BB7: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==13976==    by 0x400919: main (in /home/jahid/Git/Github/jpcre2/jpcre2/src/testmv)
==13976== 
==13976== This conflicts with a previous write of size 1 by thread #2
==13976== Locks held: none
==13976==    at 0x51C9622: start_thread (pthread_create.c:265)
==13976==    by 0x54E582C: clone (clone.S:109)
==13976==  Address 0x68c7677 is in a rw- anonymous segment

难道我做错了什么?

注意:它只需是pthread。

Info:

使用(g++ 5.4.0)编译

g++ testmv.cpp -pthread

使用(valgrind 3.11.0)进行测试:

valgrind  --tool=helgrind ./testmv

EDIT:

以上适用于drd tool:

valgrind  --tool=drd ./testmv

可能是我在 helgrind 中遇到了错误!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

valgrind 检测到分离 pthread 的数据争用 的相关文章

  • 将 new 与 decltype 一起使用

    T t T is an implementation detail t new T want to avoid naming T to allow for flexibility t new decltype t error cannot
  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • 将完整模板参数值映射到原始类型

    我想将数字映射到类型 在这个例子中 我将创建一个函数 将 sizeof 结果映射到有符号的原始类型 我想知道是否有更好的方法来完成我在现代 C 中所做的事情 即采用模板化值并将其转换为类型 现在 这可以将大小转换为已知类型 但我似乎无法在标
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 使用 Visual Studio Express 2010 表单应用程序进行 C++ 多线程处理

    我正在开发一个 Windows 窗体应用程序 它连接到一个硬件 获取大量数据 1 GSample 秒 对其进行处理 然后单击按钮将其输出到屏幕上 我现在尝试在一个可以随时启动 停止的循环中自动化该过程 以便我可以在调整采集硬件的输入的同时对
  • 从模板切换传递的类型

    在 C 中是否可以检查传递给模板函数的类型 例如 template
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 如何对 NServiceBus.Configure.WithWeb() 进行单元测试?

    我正在构建一个 WCF 服务 该服务接收外部 IP 上的请求并将其转换为通过 NServiceBus 发送的消息 我的单元测试之一调用Global Application Start 它执行应用程序的配置 然后尝试将 Web 服务解析为 验
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • 选择查询不适用于使用Parameters.AddWithValue 的参数

    C 中的以下查询不起作用 但我看不出问题所在 string Getquery select from user tbl where emp id emp id and birthdate birthdate cmdR Parameters
  • 使用 jQuery 从 ASP.Net JSON 服务获取数据

    我正在尝试调用 Google 地图地理编码 API 从纬度 经度对中获取格式化的地址 然后将其记录到控制台 我正在尝试获取为给定位置返回的第一个 formatted address 项目 我很简单无法从 JSON 中提取该项目 我不知道为什
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • 来自 3rd 方库的链接器错误 LNK2019

    我正在将旧的 vc 6 0 应用程序移植到 vs2005 我收到以下链接器错误 我花了几天时间试图找到解决方案 错误LNK2019 无法解析的外部符号 imp 创建AwnService 52 在函数 public int thiscall
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc

随机推荐

  • 注册方法的方法在引发事件时调用

    我有一个包含 20 个 PictureBox 控件的面板 如果用户单击任何控件 我希望调用面板中的方法 我该怎么做呢 public class MyPanel Panel public MyPanel for int i 0 i lt 20
  • Visual Studio 将 1.1 扩展为 1.1000000000000001

    至少对我来说 这是有史以来最奇怪的 Visual Studio 2010 行为 我正在开发 MVC3 项目 我从另一个项目 也包括 VS2010 MVC1 如果重要的话 复制了一行代码 如下所示 target height height 1
  • Unity InputField OnValueChanged事件显示InputField.text少一个字符

    我有一个InputField我用它作为搜索栏 我无法自动搜索OnValueChanged因为最初 文本字段将是 现在如果我输入任何字符a the inputField text还是 代替a因此 在添加下一个字符之前不会进行搜索 有没有办法在
  • 如何从 Web 应用程序访问仅限身份验证的 Twitter API 方法

    我有一个 iPhone 网络应用程序 它最终将在 PhoneGap 应用程序中运行 但现在我在 Safari 中运行它 该应用程序需要访问 Twitter 好友的推文 包括私人推文 所以我使用 Scribe 库实现了 OAuth 我成功地将
  • 创建具有负边框半径的按钮并在 Flutter 中对齐它们

    我想建立一个这样的布局 其中两个外部元素是按钮 而内部元素是 TextField 如何在 Flutter 中创建这样的布局 我的想法是使用绝对位置来对齐每个元素的左侧 并使用标高来处理重叠 但我不确定这是最好的方法 而且我不知道如何创建按钮
  • 使用 IOS 8 编辑时键盘间歇性消失

    我遇到过几个案例 测试人员报告说 每当他们开始在我的应用程序中的某些字段中输入内容时 键盘就会消失 我使用模拟器跟踪流程 并在手机上调试时 问题从未发生 然而 当我在不受限制的手机上尝试时 它的发生相当一致 这是一些相关的代码 所有这些都是
  • NetBeans 7.4 中的 SASS

    我在 Windows 7 64 位 上使用 NetBeans 7 4 这样我就安装了 Ruby200 x64 这样我就可以使用 Sass scss 到 css CSS 预处理器在 NetBeans 中的配置如下 C Ruby200 x64
  • Javascript匿名函数调用[重复]

    这个问题在这里已经有答案了 我正在阅读 Twitter 上的 JS 源代码 在提高我的 JS 知识库的过程中 当我遇到了调用匿名函数的奇怪方式时 function window jQuery 这有效 对于每个人来说 这是显而易见的 func
  • 使用组合来表示“is – a”关系时出现的问题

    我正在为人力资源系统开发系统 有会计员工和程序员员工 加入公司的第一个月 员工没有被赋予任何角色 一名员工可以同时担任会计师和程序员 我有一个由以下代码所示的设计 现在 我需要通过实现新功能来增强系统 解雇所有会计师 终止意味着将员工的状态
  • 仅当捏住单元格的 imageView 时,才可以在 UICollectionView 的自定义单元格中放大/缩小 UIImageView 吗?

    我有一个 CollectionView 它有一个自定义单元格 我想放大 缩小单元格中的 imageView 所以我在 CollectionView m 添加捏合手势 当我向 self collectionView 添加手势时 如下所示 se
  • Service Fabric:服务之间的调用有延迟?

    我们正在开发一个由多个不同服务组成的服务结构应用程序 我们的应用程序工作方式的一个关键部分是这些服务需要大量相互调用 直到最近我们增加了应用程序的负载并发现它的速度大大减慢时 我们才遇到任何问题 经过大量调查和对各种事情进行计时后 我们发现
  • 双端队列中元素的随机访问如何给出恒定的时间复杂度? [复制]

    这个问题在这里已经有答案了 双端队列为访问任何元素提供了恒定的复杂性 参考参数 https en cppreference com w cpp container deque 在 Vector 中 它总是恒定的复杂性 向量中第一个元素的地址
  • 我可以处理 XAML 中引发的异常吗?

    在我的 XAML 中 我通过绑定到 GetAll 属性来获取所有客户
  • 为什么leiningen启动时那么慢?

    我在用着lein repl在控制台中执行 clojure repl 当我运行它时 需要超过15秒 当我跑步时java cp clojure 1 6 0 jar clojure main 只需几秒钟 Why is lein repl太慢了 有
  • 让 SignalR 在 Android Studio 中工作的步骤

    我正在尝试带SignalR进入我的安卓工作室项目 我成功地按照教程进行操作SignalR 入门 http www asp net signalr overview getting started tutorial getting start
  • 将 DD-Mon-YYYY 转换为 DD/MM/YYYY

    我需要转换 dt of birth varchar 15 其格式为DD Mon YYYY to DD MM YYYY dt of birth在不同的表中指定 并且必须完成转换并将其存储在具有相同列名的另一个表中dt of birth Her
  • Spring Boot Rest API、JPA 实体、DTO,最好的方法是什么?

    我被分配了这个作业 只是为了练习 它变得非常漫长且具有挑战性 但它教会了我很多东西 主要是关于 lambda 和 JPA 它是一个基本的Rest API 用于创建酒店 房间 客人 预订 客人类型 房间类型等 我最初的问题是学习 JPA 关系
  • 用于解析网页链接的正则表达式?

    我正在寻找一个 NET 正则表达式来从网页中提取所有 URL 但还没有找到一个足够全面的表达式来涵盖指定链接的所有不同方式 还有一个附带问题 有没有一个正则表达式来统治它们 或者我最好使用一系列不太复杂的正则表达式 并且只对原始 HTML
  • .NET、C#、LINQ、SQL 和 OR 映射 - 我只是不明白:(

    我只是不明白 我什至不确定我是否在寻找正确的方向 问题 这就是我的 C 应用程序 我通过 SSH 连接到在线 MySQL 数据库 现在我可以使用 MySQL Connector Net 驱动程序 http dev mysql com dow
  • valgrind 检测到分离 pthread 的数据争用

    我正在创建两个detached线程 pthread attr t tha1 void fun1 void return 0 void fun2 void return 0 int main pthread t th1 th2 pthread