是什么导致 sprof 抱怨“ld.so 检测到的不一致”?

2024-02-01

我正在尝试使用 sprof 来分析一些软件(ossim),其中几乎所有代码都在共享库中。我已经生成了一个分析文件,但是当我运行 sprof 时,出现以下错误:

> sprof /home/eca7215/usr/lib/libossim.so.1 libossim.so.1.profile -p > log
Inconsistency detected by ld.so: dl-open.c: 612: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed!

我遵循的说明说我需要 libc 版本至少为 2.5-34,我有 libc 版本 2.12.2(Gentoo,内核 2.6.36-r5)。

我找不到任何关于错误含义或(更有趣的是)如何修复它的解释,唯一半相关的谷歌结果是针对旧版本 Skype 中的错误。


我有点好奇,因为这在 OpenSuse 12.x 中仍然被破坏。我本以为最初在 09 年左右报告的错误现在已经被修复了。我猜没有人真正使用 sprof。 (或者也许 dl-open 太脆弱以至于人们不敢碰它:-)

该问题归结为 __RTLD_SPROF 标志用作 dlopen 的参数。 采用任何调用 dlopen 的简单程序,或者将该标志设置为第二个参数,您都会得到相同的失败断言。我使用了底部的示例程序http://linux.die.net/man/3/dlopen http://linux.die.net/man/3/dlopen举个例子

handle = dlopen(argv[1], RTLD_LAZY | __RTLD_SPROF);

通过快速查看 dl-open.c,我可以看出,这个标志短路了 dl_open 的一些功能。因此断言中指定的 r_flag 不会设置为 RT_CONSISTENT。

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

是什么导致 sprof 抱怨“ld.so 检测到的不一致”? 的相关文章

  • GNU 链接器:适应名称修改算法的更改

    我正在尝试重新编译现有的 C 应用程序 不幸的是 我必须依赖一个专有库 我只有一个预编译的静态存档 我使用 g 版本 7 3 0 和 ld 版本 2 30 无论它是用什么 GCC 版本编译的 它都是古老的 头文件定义了方法 class fo
  • 为什么 Rust 中的 C strlen() 也会计算 print 中的字符串切片! `s` 变量之后的宏?

    所以我只是在 Rust 中修改 C 库 我发现以下代码 extern crate libc use libc c char c int size t extern C fn printf fmt const c char gt c int
  • 符号查找错误未定义符号,但所有符号似乎都存在

    可执行文件似乎无法解析链接库中的符号 LD DEBUG libs 的相关输出表明加载了正确的库 6557 usr lib libcharon so 0 error symbol lookup error undefined symbol a
  • GNU 链接器 - 孤立部分和符号分配

    在阅读了足够多有关 GNU 链接器的文档后 我对结合有关实现自定义链接器文件的两个不同概念感到困惑 第一个概念是孤儿节 https sourceware org binutils docs ld Orphan Sections html O
  • 通过 bash 调用应用程序时忽略 dyld_insert_libraries

    对于我的应用程序 我使用 DYLD INSERT LIBRARIES 来切换库 我运行的是 Mac OS X El Capitan 如果我在 shell 中设置这些环境变量 export PYTHONHOME HOME anaconda e
  • Libsourcey 缺少 -fPIC 编译错误

    我正在尝试运行 LibSourcey 以使用 Webrtc 流服务器 问题是我似乎无法让它发挥作用 我努力在我的 Ubuntu 16 04 上 cmake 该项目 cmake 文件中的正则表达式 但现在它已修复 我实际上遇到的问题是编译时的
  • 为什么我的 Linux 应用程序引入了错误的 .so 库?

    我正在构建一个使用 NetCDF C 库的应用程序 并且 NetCDF 正在引入 HDF 4 库 然而 它正在拉动wrongHDF 4 库 我的应用程序的链接方式如下 apps1 intel bin icpc gxx name apps1
  • CMake:不要为链接中使用的单个库设置 rpath

    我想要做的是配置我的 CMakeLists 文件 以便在构建我的项目时 链接器使用驻留在我的构建树中的共享库 so 的副本来链接可执行文件 但不会在中设置 rpath链接的可执行文件 以便系统必须在加载程序请求时提供该库 具体来说 我想在构
  • 修改编译共享库中符号的可见性

    我的项目依赖于一个第三方库 该库导出了更多应有的符号 其中一些符号被其他库和主程序无意地覆盖 如何更改已编译共享对象的函数和变量的可见性 如何更改已编译共享对象的函数和变量的可见性 您可以通过修改动态符号部分来更改符号的可见性 dynsym
  • 加载器如何引用共享库中的变量?

    我现在了解如何通过过程链接表引用动态函数 如下所示 Dump of assembler code for function foo plt 0x0000000000400528
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 使用 gcc 理解共享库

    我试图理解 C 中共享库的以下行为 机器一 cat one c include
  • 使用 Gradle 在多个 Android 应用程序之间共享 Android 库

    我有 Android 应用程序 A 和 B 我想将每个应用程序中的重复代码提取到共享库 L 中 如何使用 Gradle 执行此操作 我之前见过这个问题的一些排列 但答案很少 最接近 最好的已问问题是这个 多个 Android 应用程序依赖于
  • 如何查看共享库加载的顺序

    给定一个 ELF 二进制文件或共享对象 我如何才能最轻松地查看所需共享库的加载顺序 它们是否按照列出的顺序加载readelf d 我怎样才能最容易地看到所需共享库的加载顺序 Use LD DEBUG LD DEBUG files bin l
  • Clang++ -fmodules 在 #include 之后使用类型时出错

    下面的简单测试用例文件在编译时给我一个编译时错误 提示来自 Clang 的 github 镜像的 master fmodules 使用如下所示的命令 我想知道这是否是 Clang 的新实验性模块功能的一个错误 可能是标准库模块映射实现的问题
  • nasm/ld“重定位被截断以适合:R_386_16”

    集会 BITS 16 global start start mov ax 0x07C0 mov ds ax mov si hw call print string jmp print string mov ah 0x0E char lods
  • C/C++ with GCC:静态地将资源文件添加到可执行文件/库

    有人知道如何使用 GCC 将任何资源文件静态编译为可执行文件或共享库文件吗 例如 我想添加永远不会改变的图像文件 如果它们改变了 我无论如何都必须替换该文件 并且不希望它们位于文件系统中 如果这是可能的 我认为这是因为 Visual C f
  • 我使用 tm/mktime 是否错误,如果没有,有解决方法吗?

    我认为下面的程序应该输出从公元 1 年到 1970 年每年第一天到 1970 年的秒数 前面是time t在编译它的系统上 CHAR BIT是一个宏 所以我认为你不能只是复制编译后的可执行文件并假设它是正确的 尽管实际上一切都使用 8 位c
  • 是什么使 ELF 库中的符号成为对象或普通符号?

    我有一个正在加载一些插件的应用程序dlopen 具体来说dlopen name RTLD LAZY RTLD DEEPBIND 有一些插件 以二进制形式提供 可以正常加载 但我尝试构建的插件无法加载并出现错误 opt app plugins
  • TFS 2010 跨团队项目分支 - 最佳实践

    我在了解如何根据 TFS Ranger 团队提供的最佳实践配置 TFS 时遇到问题 问题是这样的 我的公司有多种产品使用共享的通用代码库 gt Core gt gt Main Source Parent Branch gt gt Produ

随机推荐

  • Cucumber Scenario Outline 的示例表中是否可以有空值? [复制]

    这个问题在这里已经有答案了 这是我的场景大纲中的示例表 有些没有价值 这可能吗 Examples ID UserName Password Contact1 Number ID1 username1 password1 Phone 111
  • protobuf-net 并使用接口序列化链表

    我遇到了 protobuf net 的问题 并将其缩小到这个最简单的情况 我想要一个链表类型结构 其中一个类具有相同类型的属性 当我序列化它时 它效果很好 但是 如果类型是接口而不是类 我会收到以下错误 一旦为 ConsoleApplica
  • 单击链接时如何切换复选框?

    我正在尝试做一个非常简单的HTML 电子邮件中的复选框 hack https youtu be 38pcplCDOng进行一些基本的电子邮件内交互 像下面这样
  • Node.js 大型应用程序的可靠性

    我是 Node js 的新手 目前正在质疑它的可靠性 根据我到目前为止所看到的 似乎存在一个重大缺陷 任何未捕获的错误 异常都会导致服务器崩溃 当然 您可以尝试对代码进行防弹保护或将 try catch 放在关键区域 但几乎总会有错误被漏掉
  • 在django中上传图像时如何更改图像格式?

    当用户从 Django 管理面板上传图像时 我想将图像格式更改为 webp 我已经重写了模型的保存方法 Webp 文件在 media banner 文件夹中生成 但生成的文件未保存在数据库中 我怎样才能做到这一点 def save self
  • 无法将应用程序上传到 Chrome 网上应用店 - “此项目不是应用程序,请从清单中删除应用程序部分。”

    上传我的应用程序时 我不断收到此错误 发生错误 无法处理您的项目 该项目不是应用程序 请从清单中删除应用程序部分 这是我的 Chrome 应用程序的清单文件 基于开始使用 你好世界 https developer chrome com ap
  • Angular2 与 video.js 错误没有兼容的源

    视频 错误 代码 4 MEDIA ERR SRC NOT SUPPORTED 找不到该视频的兼容源 我正在尝试在 Angular 2 项目中播放视频 这是我的代码 import Component ElementRef OnInit OnD
  • 如何使用 Python 中的 Perl 模块?

    有一个 Perl 模块可以为我的 Python 应用程序提供完美的功能 我有什么办法可以利用它吗 这是复杂的 我需要一个月的时间来移植它 我不想为每次使用都生成一个子进程 因为我需要它数十万次 它是一种特定类型的数据解析器 谢谢你的建议 编
  • 如何使用flavorDimensions为每种口味组合设置不同的applicationId?

    我有一个旧的 Android 应用程序 我正在尝试将其迁移到 Android gradle 构建系统 该应用程序目前构建在多项目设置中 并作为四个不同的应用程序发布 包括两个不同的数据集以及两个数据集的免费 付费版本 我已经通过使用flav
  • 游标用前一行和当前行的值更新行

    各位查询作者 我有一个表如下 myTable t1 col2 col3 2 1 3 0 4 0 5 0 6 0 我想用前一行中 col3 的值加上当前行中 col2 的值来更新 col3 上的每个零 所以我的桌子会像下面这样 myTable
  • 使用 BizTalk 代替 NServiceBus 或 MassTransit 的优点/缺点

    我很好奇它是否考虑使用 BizTalk 来实现 pub sub 消息传递架构 基本上我真正需要的就是你可以使用 NServiceBus 或 MassTransit 做的事情 我的经理倾向于坚持使用直接从 Microsoft 提供的框架 因此
  • 谷歌地图:隐藏国家边界

    我相当确定geometry stroke允许在地图上隐藏国家边界的选项 featureType administrative country elementType geometry stroke stylers visibility of
  • 抢占的中断处理程序会发生什么?

    即使在一些写得很好的内核书籍中 我也找不到以下问题的正确答案 他们说 ISR 无法休眠 因为它无法重新调度 ISR 因为它没有与任何进程连接 那么当更高优先级的中断抢占正在执行的中断时会发生什么 中断的 ISR 不会再次重新调度 执行 如果
  • 验证十进制 (18,3) 的正则表达式 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要一个可以验证的正则表达式Decimal 18 3 表示精度为 18 小数位数为 3 它需要通过以下标准 逗号前的最大位数为15 逗号
  • 如何在节点中将图形渲染为图像

    我想在服务器上以图像格式呈现堆叠条形图 预期用途是推送到像 twitter 这样不支持 SVG 的服务 以及可部署到 Heroku 等服务的代码 我已经尝试过 Plotly 他们的节点包已经过时了 而且他们的 API 文档也很差 我还查看了
  • 代码OSS不执行Jupyter笔记本

    在我的 Arch 系统上 我安装了 jupyter notebook 版本 6 4 4 和 Code OSS 版本 1 61 0 带有 Python v2021 9 1246542782 扩展和 Jupyter v2021 9 100 扩展
  • 如何在 Swift 中访问应用程序包中包含的文件?

    我知道有一些与此相关的问题 但它们是在 Objective C 中的 我怎样才能访问 txt使用 Swift 包含在我的应用程序中的文件在实际的 iPhone 上 我希望能够从中读取和写入 Here https github com gho
  • 如何在 Postgresql 命令行中指定要运行 sql 文件的架构

    我像这样针对我的数据库运行脚本 psql d myDataBase a f myInsertFile sql 唯一的问题是我希望能够在此命令中指定运行脚本的模式 我可以调用 set search path my schema 01 但文件应
  • Azure Devops 发布管道 XML 变量替换不起作用

    我的发布管道中有一个非常简单的变量替换 但它不起作用 我有变量connectionStrings config文件如下
  • 是什么导致 sprof 抱怨“ld.so 检测到的不一致”?

    我正在尝试使用 sprof 来分析一些软件 ossim 其中几乎所有代码都在共享库中 我已经生成了一个分析文件 但是当我运行 sprof 时 出现以下错误 gt sprof home eca7215 usr lib libossim so