Mac OS 上 Valgrind 下的 std::thread.join() SIGSEGV

2023-12-07

以下简单代码(C++ 11)将在 Mac OS 和 Linux 上运行:

#include <thread>
#include <chrono>
#include <iostream>

void threadFunction() {
    for (int cc=0; cc < 10000000; ++cc) {
        if (cc%1000000 == 0) {
            std::this_thread::sleep_for(std::chrono::milliseconds(200));
        }
    }
}


int main(int argc, char **argv) {
    std::thread threads[10];
    for (int tt = 0; tt < 10; ++tt) {
        threads[tt] = std::thread(threadFunction);
    }
    // Wait for the threads to complete
    for (int tt = 0; tt < 10; ++tt) {
        printf("About to join %d\n", tt);
        std::cout.flush();
        threads[tt].join();
        printf("Joined %d\n", tt);
        std::cout.flush();
    }
    return 0;
}

然而,在 Valgrind 中包装执行:

valgrind --leak-check=full --show-reachable=no --track-fds=yes --error-exitcode=1 --track-origins=yes ./theexecutable

...现在它可以在 Linux 上运行,但不能在 Mac OSX 上运行,失败并显示:

==47544== Process terminating with default action of signal 11 (SIGSEGV)
==47544==  Access not within mapped region at address 0x700008F31C3E
==47544==    at 0x10052E37F: _pthread_find_thread (in /usr/lib/system/libsystem_pthread.dylib)
==47544==    by 0x100530D52: _pthread_join_cleanup (in /usr/lib/system/libsystem_pthread.dylib)
==47544==    by 0x100530C63: pthread_join (in /usr/lib/system/libsystem_pthread.dylib)
==47544==    by 0x100057E94: std::__1::thread::join() (in /usr/lib/libc++.1.dylib)
==47544==    by 0x100001BB1: main (in ./vgtest)

任何想法为什么会失败(然后仅在 OSX 上)?

Valgrind-3.11.0,OSX 10.11.3


这是 Valgrind 中的一个错误。主要错误报告可以在这里找到:https://bugs.kde.org/show_bug.cgi?id=349128

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

Mac OS 上 Valgrind 下的 std::thread.join() SIGSEGV 的相关文章

  • LaunchAgent 不运行 shell 脚本

    在 Catalina 之前的 macOS 下 我有一个每天运行 shell 脚本的 LaunchAgent 升级并切换到 zsh 后 它不起作用 我检查过的事情 shebang 切换到 zsh shell脚本可以从命令行手动执行 sh 在系
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • ExtJS4 如何从 JSON 设置 TreePanels 根节点

    我想使用 ExtJS4 创建 TreePanel 所以我将 JSON 发送到代理阅读器 其格式如下 text en children text children text page children text page new childr
  • Google Sheet QUERY + MATCHES 函数不排除字符串

    我想从排除某些字符的工作表中导入行 我首先使用 CONTAINS 函数执行此操作 但我没有找到使用多个参数执行此操作的方法 所以我使用 MATCHES 函数做到了 Query importrange URL Sheet a be SELEC
  • Visual Studio Code 缺少脏文件指示器和突出显示选项卡不起作用

    当 VS Code 中有脏文件时 我没有在文件选项卡中看到项目符号 也没有在选项卡上方看到突出显示栏 我在设置中打开了突出显示修改的选项卡 但没有任何效果 我还尝试更改主题 以防出现颜色问题 我没有任何会干扰这些设置的扩展 有人经历过这个吗
  • 以对象引用作为键的映射?

    我有一个存储有关特定实例的信息的对象 为此 我想使用Map 但由于键不是通过引用的 它们不是 对吧 而是作为由getHashCode方法 为了更好地理解 import collection mutable import java util
  • Function.call 方法作为回调[重复]

    这个问题在这里已经有答案了 如果我遗漏了什么 请原谅 但是当我尝试使用 call 方法作为回调时 它在 Chrome 和 Node js 中都会出现奇怪的错误 foo bar map String prototype trim call T
  • Rust 中的多种返回类型[重复]

    这个问题在这里已经有答案了 我有一个库函数f1 in rust返回一个字符串并想要更新它以选择性地返回一个向量 fn f1 gt String abc fn f2 gt String Vec
  • Hadoop kerberos 票证自动续订

    我在使用以下命令从 HDFS 下载大文件夹时遇到一些问题 hadoop fs get path to hdfs big folder 该文件夹很大 几乎 3TB kerberos 票证的生命周期为 10 小时 可续订生命周期为 7 天 下载
  • 如何将文件下载到 PHP 服务器?

    是否可以使用 PHP 脚本将远程服务器上的文件下载到我的 Web 服务器上 我有自己的网络服务器和域 我想在该域上放置一个 php 脚本 它将文件从远程服务器下载到我的服务器的文件系统上 这可能吗 Jim 当然 您需要文件系统上某处 您要保
  • 无法将图片从drawable发布到facebook

    我正在尝试将图像从可绘制文件夹传递到提要对话框 但我无法在 Facebook feed 对话中查看图像 其余参数可用 我正在使用 Facebook SDK 3 5 这是显示提要对话框的功能 private void publishFeedD
  • C++ - Qt - Visual Studio 2010 - 具有 GUI 和控制台的应用程序

    如果没有给程序提供任何参数 它将作为 GUI 应用程序启动 如果给定参数 它将通过命令行运行 我能够使用 Properties gt Linker gt SubSystem Console SUBSYSTEM CONSOLE 让 Visua
  • 添加一个新的可绘制对象,它正在更改解析的 xml 的图标

    我面临着一个只有在添加新的可绘制对象时才会发生的问题 我有一个已解析的xml to Fragment the icon设置为int 如果我添加新的可绘制对象 那么它会选择随机可绘制对象来显示已解析的图标xml 我有一个Adapter为了Re
  • 求 cos 的倒数

    at http www teacherschoice com au Maths Library Trigonometry solve trig SSS htm有 使用科学计算器求出 0 25 的反余弦 C cos 1 0 25 104 47
  • Laravel - 调用未定义的方法 Illuminate\Foundation\Application::share()

    我正在从 Laravel 5 3 升级到 Laravel 5 4 问题是当我跑步时composer update当谈到php artisan optimize部分 我收到错误 Symfony Component Debug Exceptio
  • 如何唤醒休眠线程并退出主线程?

    我正在创建 10 个线程 每个线程都会执行一些任务 有 7 项任务需要完成 由于任务数量小于线程数量 因此总会有 3 个线程处于休眠状态且不执行任何操作 我的主线程必须等待任务完成 只有当所有任务完成时 即线程退出时 才退出 我正在 for
  • 更改 tomcat 上 spring mvc 应用程序的应用程序根目录

    我正在 Spring MVC 3 0 上使用示例 RESTEasy 2 0 资源并部署到 Tomcat 6 我可以通过 http localhost 8080 examples resteasy 2 1 SNAPSHOT contacts
  • 使用 python 打印 Excel 工作簿

    假设我有一个excel文件excel file xlsx我想使用 Python 将其发送到我的打印机 所以我使用 import os os startfile path to file print 我的问题是 这仅打印 Excel 工作簿的
  • 如何搜索并替换内部包含等号“=”的字符串

    我必须从像 Pippo K 5 这样的 txt 中搜索字符串并将其替换为 Pippo K 1 我需要搜索整个字符串 我所做的是 set search Pippo K 5 set replace Pippo K 1 set textFile
  • 连接不同数据库中的多个表?数据库

    嘿 我正在寻找一种好方法 使用 php 连接到 mysql 中的至少 2 个数据库 并从表中收集每个数据库中的信息 这些表格将包含相关信息 例如 我在一个名为 sites 的表中的一个数据库 siteinfo 中有站点名称 我还在另一个数据
  • 如何更改数据透视表,使其以所需的方式显示数据?

    我已经能够将数据透视表拖到舞池上 但无法让它趴下来 似乎我们一直踩到对方的脚趾 我已经在工作表上获得了用于构建数据透视表的数据 此类描述了该数据 public class PriceVarianceData public String Un
  • Mac OS 上 Valgrind 下的 std::thread.join() SIGSEGV

    以下简单代码 C 11 将在 Mac OS 和 Linux 上运行 include