如何检测内存不足的段错误?

2024-03-17

如何检测段错误是否是由内存不足情况引起的?

我有一个段错误,无法通过 valgrind 和 duma/efence 进行诊断,因为它似乎使这些工具本身崩溃(Valgrind“不可能的事情发生了”,duma:“mprotect()失败:无法分配内存”)

应用程序(Gazebo)只是因段错误而崩溃,并且堆栈跟踪似乎没有提供很多关于原因的提示。

TLDR: 是否有一种简单的工具或方法可以确认或排除内存不足的情况是导致段错误的原因?

(顶部没有显示崩溃前过多的内存使用量)


在 Linux 上,内存不足情况可以通过以下两种方式之一表现出来:

  • 如果禁用过度使用,则会出现brk() or mmap()呼叫失败ENOMEM。此后不久,应用程序尝试取消引用从返回的 NULL 指针malloc()和崩溃。
  • 如果启用了过量使用,那么 OOM 杀手就会启动,并使用 SIGKILL 终止进程。 dmesg 中留下一条消息。

因此,您可以通过检查 strace 是否不显示来排除 OOMbrk() or mmap()呼叫失败ENOMEM,并验证 dmesg 中没有出现 OOM 杀手消息。

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

如何检测内存不足的段错误? 的相关文章

  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • 怎样才能使 Windows 成为一个开箱即用的 POSIX 兼容操作系统?

    这个问题的动机是我的一个牵强的梦想 即 nix 平台上可用的许多优秀软件可以轻松移植到 Windows 微软最近对开源和开放性采取了不同的方法 所以我真的很想知道如果微软有这样的倾向 这样的事情会有多可行 我很好奇的一些更具体的事情是 是否
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • 为 Qt 应用程序创建 Linux 安装

    我刚刚用 Qt Creator 制作了一个很棒的程序 我对自己很满意 如何将其从台式机移至笔记本电脑 那么 最好的方法是安装程序 对吗 对于 Ubuntu 这是一个 Debian 软件包 对吗 我怎么做 有人这样做过吗 他们可以分享 QT
  • 如何以编程方式从Linux中的进程名称获取进程ID

    在我的项目中 我们使用 ACE 自适应通信环境 中间件来编写可在 Windows 和 Linux 上运行的独立于操作系统的代码 要求是从进程名称中获取进程 ID 由于 ACE 不支持这一点 因此我们必须使用特定于平台的宏来分离 Window
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • linux x86 汇编语言 sys_read 调用的第一个参数应为 0 (stdin)

    我正在编写一个简单的汇编程序来从标准输入读取 如 scanf 这是我的代码 section bss num resb 5 section txt global start start mov eax 3 sys read mov ebx 0
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 为什么大多数平台上没有“aligned_realloc”?

    MSVC有自己的非标准函数 aligned malloc aligned realloc and aligned free C 17和C11引入了 std aligned alloc 其结果可以是de分配有free or realloc B
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • C++中const对象位于哪个内存区域? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • 如何使用 sed 仅删除双空行?

    我找到了这个问题和答案 https stackoverflow com questions 4651591 howto use sed to remove only triple empty lines关于如何删除三重空行 但是 我只需要对
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • 如何制作和应用SVN补丁?

    我想制作一个SVN类型的补丁文件httpd conf这样我就可以轻松地将其应用到其他主机上 If I do cd root diff Naur etc httpd conf httpd conf original etc httpd con
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte

随机推荐

  • 有没有办法提前测试Windows exe是否会因为缺少dll而无法加载?

    如果您尝试在没有任何更新的情况下在 Windows 8 1 上安装 vs2015 Redistributable 它将安装失败 但它会在安装过程中进行足够多的操作 guid 位于注册表中 因此 如果您运行一个程序来检查注册表中是否存在可再发
  • 在 .NET 中组合多个 PNG8 图像的最简单方法

    我正在尝试在 C 中将一堆 8 位 PNG 图像组合成一个更大的 PNG 图像 奇怪的是 这似乎特别困难 由于图形不支持索引颜色 因此您不能使用它 因此我尝试构建非索引位图 使用图形 并将其转换为索引颜色位图 转换很好 但我不知道如何设置输
  • NTP请求包

    我试图弄清楚我需要在 NTP 请求包中发送 客户端 什么才能从服务器检索 NTP 包 我正在 Cortex M3 Stellaris LM3S6965 上使用 LWIP 据我了解 我将收到 UDP 标头 然后收到具有不同时间戳的 NTP 协
  • 使用 Android AccountManager 自定义帐户类型

    我有一个帐户类型 mypackage account 和一个内容权限 mypackage 我有一个Service提供了一个实现AbstractAccountAuthenticator the addAccount方法的实现如下 The us
  • iOS6中无法设置UITableViewCell的背景颜色?

    我开始在模拟器下测试我的应用程序 因为我没有任何 iOS 6 设备 并偶然发现了奇怪的问题 我无法设置 UITableViewCell 的 backgroundColor 属性 如果我这样 cell contentView backgrou
  • Windows 窗体线程和事件 - 列表框更新迅速,但进度条经历巨大延迟

    我们的团队正在创建一个新的招聘工作流程系统来取代旧的系统 我的任务是将旧数据迁移到新模式中 我决定通过创建一个小型 Windows 窗体项目来实现此目的 因为架构完全不同 并且直接的 TSQL 脚本并不是一个足够的解决方案 执行此工作的主要
  • Firebase 身份验证 - 电话 -“INVALID_CERT_HASH”

    当我尝试在本地 Android 设备中运行电话身份验证时 出现以下错误 GetAuthDomainTask Error getting project config Failed with E FirebaseAuth 25345 erro
  • 更改 NetBeans 项目中的 JRE

    我有一个使用 JRE 1 4 环境的 NetBeans 项目 这意味着我无法使用泛型 如何更改项目以使用 1 6 以便我可以使用泛型 In the Project选项卡 右键单击该项目并选择特性 在里面Library类别选择Java 平台
  • 在 C# 中更快地调用 PowerShell cmdlet

    我可以使用 C 中的 Powershell cmdlet 从 O365 获取用户详细信息 问题是获取时间 那太慢了 每个用户需要 2 秒 所以如果我有大量用户 就会导致时间问题 在这里我只想打印所有用户的信息 如名称 组详细信息 许可证 我
  • 在类内部使用具有非静态大小的数组

    我想使用一个可以在 4d 数组内为我存储值的类 Matrix 我想用SetSize为了设置的大小Matrix从我的main功能 class Value public int a int b int c int d sets the valu
  • Android 上的 Socket IO 连接失败

    我正在尝试使用 Socket IO Android 和 Node 创建一个简单的聊天 当我运行应用程序并尝试连接到服务器时 它总是因超时错误而失败 我不明白为什么 这是节点代码 app require express http requir
  • 使用 Watin 登录网页

    我尝试在网页上登录 网页上有两个带有输入的表单 输入具有相同的 Id 用户名 我怎样才能获得正确的输入来设置我的文本 这是我的错误代码 browser TextField Find ByName 用户名 TypeText test123 o
  • 如何从 8 位字节转换为 7 位字节(Base 256 到 Base 128)

    如何从 8 位字节转换为 7 位字节 Base 256 到 Base 128 我想做这样的事情 public string BytesToString byte in public byte StringToBytes string in
  • Angular Ag-Grid 无法正确显示

    我正在尝试使用角度Ag Grid https www ag grid com 在我的网络应用程序中 我已经遵循了这些教程 角网格 开始使用 ag Grid https www ag grid com angular getting star
  • Powershell 默认下拉值

    我有一个脚本 用户可以从下拉列表中选择选项 但如果用户没有选择任何内容 我就会收到错误 即使用户未输入值 如何设置返回的默认值 这是脚本 Edit This item to change the DropDown Values array
  • xquery 中的 SUM 和 GROUP BY 以及 1 个 xml 文件

    我有一个 SQL 查询 SELECT ShipVia SUM Freight FROM Orders GROUP BY ShipVia 它从访问数据库返回以下值 Ship Via TotalFreight 1 16 185 33 2 28
  • android - 如何创建可重用的函数?

    在我的 Android 项目中 我有很多活动 其中一些活动已经扩展了其他内容 例如地图活动或 BroadcastReceiver 如何创建一个可以从任何活动调用的函数 因为我不想在多个活动中重复任何代码 thanks 如果我有一些有用的函数
  • Scala 集合已排序、sortWith 和 sortBy 性能

    Scala在标准库中包含了几种用于对列表进行排序的方法 例如对列表进行排序list 可以使用 list sorted list sortWith lt list sortBy x gt x 虽然这些可能是对列表进行排序的最简单方法 但我发现
  • 用于分组 UITableView 的半透明 UITableViewCell?

    我想创建一个半透明分组表视图单元格 换句话说 我想看到分组的表格视图背景图案 但我不想要完全清晰的单元格 我见过很多关于透明单元的问题 但没有一个解决制作半透明 仅部分透明 单元的问题 这就是我正在尝试的 void tableView UI
  • 如何检测内存不足的段错误?

    如何检测段错误是否是由内存不足情况引起的 我有一个段错误 无法通过 valgrind 和 duma efence 进行诊断 因为它似乎使这些工具本身崩溃 Valgrind 不可能的事情发生了 duma mprotect 失败 无法分配内存