分析 boost::uuid 的 Valgrind 日志

2023-12-04

我使用 boost::uuid 来生成唯一的 id:

string UUid()
{
    boost::uuids::uuid uuid = boost::uuids::random_generator()();
    return boost::lexical_cast<std::string>(uuid);
}

当我使用valgrind为了分析我的代码,我得到以下注释:

Valgrind 日志

==47807== Conditional jump or move depends on uninitialised value(s)
==47807==    at 0x441D19: void boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u>::seed<boost::uuids::detail::generator_iterator<boost::uuids::detail::seed_rng> >(boost::uuids::detail::generator_iterator<boost::uuids::detail::seed_rng>&, boost::uuids::detail::generator_iterator<boost::uuids::detail::seed_rng>) (mersenne_twister.hpp:177)
==47807==    by 0x4417EC: void boost::uuids::detail::seed<boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u> >(boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u>&) (seed_rng.hpp:249)
==47807==    by 0x440EAA: boost::uuids::basic_random_generator<boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u> >::basic_random_generator() (random_generator.hpp:50)
==47807==    by 0x43B4D5: ManageDb::randomid() (ManageDb.cpp:92)
==47807==    by 0x43B57A: ManageDb::fillTables(std::vector<Entity, std::allocator<Entity> > const&) (ManageDb.cpp:103)
==47807==    by 0x40BBF7: DataLoader::extractData() (DataLoader.cpp:78)
==47807==    by 0x42EF26: main (main.cpp:30)
==47807==  Uninitialised value was created by a heap allocation
==47807==    at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==47807==    by 0x44042A: boost::uuids::detail::seed_rng::sha1_random_digest_() (seed_rng.hpp:167)
==47807==    by 0x44025B: boost::uuids::detail::seed_rng::operator()() (seed_rng.hpp:103)
==47807==    by 0x441C97: boost::uuids::detail::generator_iterator<boost::uuids::detail::seed_rng>::generator_iterator(boost::uuids::detail::seed_rng*) (seed_rng.hpp:218)
==47807==    by 0x4417C5: void boost::uuids::detail::seed<boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u> >(boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u>&) (seed_rng.hpp:247)
==47807==    by 0x440EAA: boost::uuids::basic_random_generator<boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u> >::basic_random_generator() (random_generator.hpp:50)
==47807==    by 0x43B4D5: ManageDb::randomid() (ManageDb.cpp:92)
==47807==    by 0x43B57A: ManageDb::fillTables(std::vector<Entity, std::allocator<Entity> > const&) (ManageDb.cpp:103)
==47807==    by 0x40BBF7: DataLoader::extractData() (DataLoader.cpp:78)
==47807==    by 0x42EF26: main (main.cpp:30)
==47807== 

问题

  • Why is valgrind生成这些评论boost::uuid?
  • 如果这是boost的问题我可以忽略它吗?

可能的错误

  • 根据这个链接Ticket #7248(重新打开 Bug)这是一个可能的错误。好吧,如果这是一个错误,我怎样才能让 valgrind 忽略它?

Valgrind 命令

valgrind --leak-check=full --track-origins=yes --suppressions=valgrind.supp ./MyProgram > valgrind-log.txt

valgrind.supp

# supression file for continuum with valgrind
# to generate each supression use: --gen-suppressions=yes option
# to use this supression file, use: --suppressions=<this filename>

{
Crypt_r
Memcheck:Cond
obj:/lib/libc-2.11.1.so
fun:__sha512_crypt_r
fun:crypt_r
}

{
Crypt_r use of uninitialised value of size 8
Memcheck:Value8
obj:/lib/libc-2.11.1.so
fun:__sha512_crypt_r
fun:crypt_r
}

{
String S_Create
Memcheck:Leak
fun:_Znwm
fun:_ZNSs4_Rep9_S_createEmmRKSaIcE
}

{
Mongo OID
Memcheck:Value8
fun:_ZN5mongo10toHexLowerEPKvi
fun:_ZNK5mongo3OID3strEv
}

请检查http://www.boost.org/doc/libs/1_50_0/libs/uuid/uuid.html

The boost::uuids::basic_random_generator class默认构造函数使用多个不同值的 SHA-1 哈希为随机数生成器提供种子,包括std::time(0), std::clock(), **uninitialized data**, value return from new unsigned int, etc..

...使用 Valgrind 的默认构造函数 boost::uuids::basic_random_generator 会产生许多误报。一种解决方案是抑制错误,如 Valgrind 文档中所述。另一个解决方案是使用 boost::uuids::basic_random_generator 的不同构造函数并显式传入随机数生成器。

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

分析 boost::uuid 的 Valgrind 日志 的相关文章

  • 在两个 .cpp 文件之间定义全局变量 [重复]

    这个问题在这里已经有答案了 如何在 A cpp 和 B cpp 之间共享 全球化 bool 变量 其中它们都不包含其他 h 文件 他们有其他联合头文件 但彼此没有 我可以在这些共享标头中定义全局变量吗 Thanks 我可以在这些共享标头中定
  • 实体框架中的重复键异常?

    我试图捕获当我将具有给定用户名的现有用户插入数据库时 引发的异常 正如标题所说 我正在使用 EF 当我尝试将用户插入数据库时 引发的唯一异常是 UpdateException 如何提取此异常以识别其是否是重复异常或其他异常 catch Up
  • .NET Windows 服务中调用 C# 的 wait 的 I/O 回调是否可以不阻塞?

    我知道在 ASP NET 中 当使用 wait 时工作线程会返回到池中 而 I O 发生在后台 这对于可扩展性非常有用 我的 Windows 服务是一个套接字服务器 它使用 Begin End 样式的异步套接字 I O 混合我的魔法 我知道
  • 从 .Net 将简单数据插入 Excel 文件的最简单方法

    我有一个 Excel 文件 大约有 10 列和 1 20 行 我需要插入 1 20 行包含各种数据元素 我想知道是否有一种方法可以将一些标签放入 Excel 文件中 以便可以找到并替换它们 将列标记为 名称 的东西 这样我就可以在代码中说
  • C++ - 模板专业化和部分专业化

    我一直在互联网和 stackoverflow 上寻找具体的答案 但我似乎找不到 我必须创建一个通用类 然后实现特定的功能 我的具体说明是 您需要使用模板表达式参数以及模板类专业化和部分专业化 我有一个模板类 template
  • 可选参数“必须是编译时常量”

    我有一个类分为两个部分文件 如下所示 public partial class PersonRepository BaseRepository
  • C++:获取注册表值仅给出第一个字符[重复]

    这个问题在这里已经有答案了 我试图从注册表中获取字符串值 但我只得到第一个字母 HKEY hKey char gamePath MAX PATH if RegOpenKeyEx HKEY CURRENT USER L Software Bl
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • CMake 警告:无法为目标生成安全的链接器搜索路径

    在为 pcl 项目运行 CMake 时 我收到一条警告消息 Configuring done CMake Warning at CMakeLists txt 12 add executable Cannot generate a safe
  • Windows 程序如何临时更改其时区?

    我写了一个函数来返回time t与给定日期的午夜相对应的值 当给定日期没有午夜时 它返回最早可用的时间 例如 当埃及进入夏令时时 这种情况就可能发生 今年 时间更改于 4 月 29 日晚上午夜生效 因此时钟直接从 23 59 转到 01 0
  • 在非指针变量和类成员上放置 new

    考虑以下示例 include
  • 为什么在 .net 中使用 Invoke on Controls? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 NET不允许跨线程操作 https stackoverflow com questions 2896504 why net does not allow cross thread operat
  • 使用 cudamalloc()。为什么是双指针?

    我目前正在浏览有关的教程示例http code google com p stanford cs193g sp2010 http code google com p stanford cs193g sp2010 学习CUDA 演示的代码 g
  • C# - 命名空间内的类型声明

    在命名空间内而不是在类中声明类型的可能用途是什么 For ex namespace Test public delegate void Ispossible 这是有效的并且不会产生任何编译错误 但我无法想象为什么我们会以这种方式声明它而不是
  • 如何使用eclipse构建C++应用程序

    我已经从以下位置下载了 Eclipse Juno for C here http www eclipse org downloads download php file technology epp downloads release ju
  • 使 C# 编译器相信执行将在成员返回后停止

    我认为目前这是不可能的 或者这是否是一个好主意 但这是我刚才正在考虑的事情 我使用 MSTest 对我的 C 项目进行单元测试 在我的一项测试中 我执行以下操作 MyClass instance try instance getValue
  • 为什么从绑定返回的对象会忽略额外的参数?

    假设我有一个带有两个参数的函数 void f int x int y 我想绑定其中之一 我可以用std bind如下 auto partiallyBoundF std bind f 10 1 partiallyBoundF仅需要一个参数 但
  • Visual Studio 2015默认附加库

    当我在 VS 2015 中创建一个空项目时 它会自动将这些库放入 附加依赖项 中 kernel32 lib user32 lib gdi32 lib winspool lib comdlg32 lib advapi32 lib shell3
  • 如何设置 Swashbuckle 与 Microsoft.AspNetCore.Mvc.Versioning

    我们有asp net core webapi 我们添加了Microsoft AspNetCore Mvc Versioning and Swashbuckle拥有招摇的用户界面 我们将控制器指定为 ApiVersion 1 0 Route
  • 如何获取通过网络驱动器访问的文件的 UNC 路径?

    我正在 VC 中开发一个应用程序 其中网络驱动器用于访问文件 驱动器由用户手动分配 然后在应用程序中选择驱动器 这会导致驱动器并不总是映射到相同的服务器 我该如何获取此类文件的 UNC 路径 这主要是为了识别目的 这是我用来将普通路径转换为

随机推荐

  • Javascript 函数压平多个输入数组

    我正在处理几个对象数组 这些对象将使用 React 渲染到 UI 中 这就是我正在做的事情的背景 我从不同的 API 获取不同的数据集 这些数据集是对象数组的数组 例如 age 23 name john age 24 name jane a
  • Python 组合列表——保留相对顺序

    不知道如何解决这个人 have L1 1 2 3 L2 a b c want 1 a 2 b 3 c import itertools L1 1 2 3 L2 a b c list itertools chain from iterable
  • 反应事件discord.js

    我正在尝试用我的机器人编写右舷代码 其他一切都运行良好 但我试图让机器人忽略实际消息作者的反应 这是我当前的代码 client on messageReactionAdd reaction orig message user gt if m
  • Maven/Surefire 未找到单元测试

    我尝试使用 Maven 创建一个测试项目 单元测试工作正常 但是 当尝试对 j2ee 项目执行相同操作时 surefire 无法找到单元测试 测试位于正确的目录 src test java 中并且正在编译它们 junit 测试位于 src
  • 如何将数据从服务发送到活动?

    我是 Android 开发的初学者 我尝试创建一种 MusicPlayer 它使用服务来播放音乐 当我单击 MainActivity 中的按钮时 我会使用 Intent 调用 startService 其中包含操作信号 例如播放 暂停 停止
  • 如何为 git hooks 目录指定新路径?

    我在 Program files 目录中安装了一个 git 并且没有修改它的权限 仅读取 但我想放一些新的钩子 有办法打电话吗git在命令行中并指定 hooks 目录的新路径 Git 挂钩是存储库本地的 创建存储库后 git init yo
  • Raphaeljs 和 Internet Explorer,单击元素时出现问题

    我有下面一段 JavaScript 代码 当我点击它时 它基本上隐藏或显示 Raphaeljs 集 它在 Google Chrome FireFox 和 Safari 下运行得非常好 但在 Internet Explorer 下根本不行 v
  • C - 生成相对于均值的区间内的随机数

    我需要在一个间隔内生成一组随机数 这些随机数也恰好有一个平均值 例如 最小值 1000 最大值 10000 平均值为 7000 我知道如何在一定范围内创建数字 但我在平均值问题上遇到了困难 有我可以使用的功能吗 您所寻找的内容可以通过所谓的
  • 跨源资源共享策略拒绝跨源图像加载

    我使用 html2canvas 来自 html2canvas hertzen com 来捕获屏幕截图 我收到这样的奇怪错误 我的网页代码放在一台主机上 比如说主机A 如果我的网页包含另一台主机 例如主机 B 上的图像 那么我会遇到此错误 跨
  • 使用 python 和 scipy.integrate.ode 求解循环内的两个非耦合 ODE

    我在使用 scipy integrate ode 解决两个非常简单的解耦 ODE 时遇到问题 例如下面的简单代码 from scipy integrate import ode def f t y r r 1 68 mu ext 0 tau
  • 如何在 Tkinter 中获取文本结束位置的行和列?

    我的 Tkinter GUI 中有文本区域 我想实现一个撤消功能 它将删除最后一行 为此 我需要获取最后一行的行和列 如何获取最后一行的行数和位置 获得位置后 如何删除该行 我在谷歌上搜索过这个 但没有得到任何有价值的链接 最后一行的索引是
  • 扩展/修改 Zend Framework 有多容易?

    我最近开始构建已有一年历史的自定义 MVC 框架的第二版 它在许多项目中对我来说非常有效 但我确实看到了改进的空间 它缺少一些主要功能 例如 ACL 表单验证和缓存 尽管我很想自己制造这些部件 但我知道实际上这不是一个明智的决定 因此 我开
  • 什么是未经检查的演员阵容以及如何检查它?

    我想我明白未经检查的演员意味着什么 从一种不同类型的演员到另一种类型的演员 但是 检查 演员意味着什么 如何检查强制转换以避免 Eclipse 中出现此警告 详细说明彼得所写的内容 从非泛型类型到泛型类型的转换可能在运行时工作得很好 因为泛
  • 从网页检测我自己的 Firefox 扩展

    我正在尝试找到一种简单的方法来检测我的扩展程序是否安装在 Firefox 3 6 中 这应该从网页完成 可能使用 JavaScript 我读过很多博客 说我应该尝试从我的扩展程序加载图像 由于我拥有该扩展 并且我可以编写代码 因此这似乎是不
  • OpenCV / Array 应该是 CvMat 或 IplImage / 释放捕获对象

    Edit Array should be CvMat or IplImage不是特定于此问题的错误消息 这是我收到的唯一最相关的错误消息 我正在尝试使用 opencv 从应用程序中创建 exe 我在用着Python 2 6 and 开放式C
  • React-Native 使用从 blob 转换而来的 URL 填充图像

    我正在尝试使用 URl 填充图像
  • 在 MATLAB 中导入带有注释的文本文件

    从文本文件导入数据时 MATLAB 是否将任何字符或字符组合解释为注释 当它在一行的开头检测到它时 会知道要忽略的所有行吗 I have a set of points in a file that look like this And a
  • 为什么多值字段在关系数据库中是一个坏主意

    在使用 Mongodb 和 Solr Lucene 后 我开始想知道为什么关系数据库的多值字段 通常 被认为是一个坏主意 我了解关系数据库的理论基础并且正常化 然而 在实践中 我遇到了许多用例 最终我使用键值对的元表来补充主表 例如在标记的
  • [LLVM-9 clang-9 OSX]: std::filesystem::path 无法识别

    您好 在 OSX Mojave 上升级到版本 LLVM 9 后 使用brew upgrade llvm 我收到以下错误 In file included from Users roman CLionProjects Milerius ant
  • 分析 boost::uuid 的 Valgrind 日志

    我使用 boost uuid 来生成唯一的 id string UUid boost uuids uuid uuid boost uuids random generator return boost lexical cast