getpwnam_r内存泄漏

2023-12-01

我使用 getpwnam_r 来处理程序中的客户端连接。可悲的是,它似乎分配了一个永远不会释放的缓冲区。 相关的 valgrind 输出:


==15774== 536 (104 direct, 432 indirect) bytes in 2 blocks are definitely lost in loss record 1 of 3
==15774==    at 0x4C24CFE: malloc (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so)
==15774==    by 0x5143B5A: nss_parse_service_list (in /lib64/libc-2.10.1.so)
==15774==    by 0x51442E6: __nss_database_lookup (in /lib64/libc-2.10.1.so)
==15774==    by 0x57BE35F: ???
==15774==    by 0x57BF3F6: ???
==15774==    by 0x51014D2: getpwnam_r@@GLIBC_2.2.5 (in /lib64/libc-2.10.1.so)
==15774==    by 0x407906: dopass (auth.c:71)
==15774==    by 0x40393E: do_cmd (command.c:127)
==15774==    by 0x402496: ftp_main (server.c:58)
==15774==    by 0x40224C: handle_client (daemon.c:211)
==15774==    by 0x402073: daemon_main (daemon.c:123)
==15774==    by 0x4043CC: main (main.c:48)
==15774== 
==15774== LEAK SUMMARY:
==15774==    definitely lost: 104 bytes in 2 blocks.
==15774==    indirectly lost: 432 bytes in 18 blocks.
==15774==      possibly lost: 0 bytes in 0 blocks.
==15774==    still reachable: 0 bytes in 0 blocks.
==15774==         suppressed: 0 bytes in 0 blocks.

有没有办法告诉 getpwnam_r 释放它的缓冲区?或者我必须抑制这些 Valgrind 错误?

谢谢,卡斯帕


内存并不是专门为 getpwnam 分配的。相反,它代表的配置/etc/nsswitch.conf。 AFAICT,让 libc 释放此内存的唯一方法是通过调用__libc_freeres:

extern void __libc_freeres (void);

这应该释放 C 库占用的所有内存(不仅仅是 NSS 占用的内存)。

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

getpwnam_r内存泄漏 的相关文章

随机推荐

  • 我可以对 Linux 进程的地址空间中的每个页面进行写保护吗?

    我想知道是否有一种方法可以对 Linux 中的每个页面进行写保护 进程的地址空间 从进程本身的内部 通过mprotect 我所说的 每一页 实际上是指该网站的每一页 进程的地址空间可以被普通进程写入 程序在用户模式下运行 所以 程序文本 常
  • ServiceStack Javascript JsonServiceClient 缺少属性

    我正在尝试使用 Servicestack JsonServiceClient 连接到经过 JWT 身份验证的服务 但是文档仅描述了如何使用 C 客户端执行此操作 http docs servicestack net jwt authprov
  • 计时器不包含在 Xamarin.Forms 的 System.Threading 中

    I used System Threading Timer in Xamarin Android 我如何在中使用同一个类Xamarin Forms 我想从 Xamarin Forms 中的 Xamarin Android 转移我的项目 pu
  • 单击按钮更改颜色在重新加载或重新启动页面后保持不变

    我创建了锚标记 其中使用心形图标 单击后会更改颜色 但我想在重新加载或重新启动页面后保持相同的颜色 当我重新启动或重新加载页面时 它会恢复默认颜色 var btnvar document getElementById favorite fu
  • 如何从 C# 调用 MongoDb 中存储的 JavaScript

    我正在评估将 SQL Server 数据库移植到 MongoDb 问题是移动存储过程 我读到了有关 MongoDb 存储 JavaScript 的内容 我想在 Net 中进行一些测试 我已经安装了 MongoDb 驱动程序 2 4 0 并在
  • 搜索数组中的连续值

    在数组中搜索连续值的最佳方法是什么 例如 搜索array a b in array x a b c 会产生1 因为这些值首先连续出现在该索引处 还没有测试过这个 但类似这样的事情应该可以 function consecutive value
  • 使用 PHP 接收 JSON POST

    我尝试在支付接口网站上接收 JSON POST 但无法对其进行解码 当我打印时 echo POST I get Array 当我尝试这个时我什么也没得到 if POST foreach POST as key gt value echo l
  • 圆与圆的交点

    如何计算两个圆的交点 我希望在所有情况下都会有两个 一个或没有交点 我有中心点的 x 和 y 坐标以及每个圆的半径 python 中的答案是首选 但任何工作算法都是可以接受的 两个圆的交点 保罗 伯克 编剧 The following no
  • Linq to SQL 是如何工作的?

    我在项目中使用 Linq to SQL 我使用它从 SQL 存储过程中获取数据 它工作完美 但我不明白 LINQ SQL 内部如何与 SQL Server 通信 它在获取数据后将数据存储在哪里 它从哪里获取连接字符串 提前致谢 更好读 ht
  • 为什么使用不带 lambda 的内联

    我试图了解如何使用inline修改正确 我了解一般情况 当我们内联 lambda 以防止过度分配时 如中所述docs 我正在检查 kotlin stdlib 并发现 Strings kt下面这段代码 kotlin internal Inli
  • 在vBulletin中使用curl登录网站

    我一直在尝试登录某个网站 www siamchart 论坛 按照此链接上的说明进行操作 使用 PHP cURL 登录远程站点 我无法通过登录 运行以下脚本后 它将我重定向到相同的登录页面 www siamchart forum 但没有成功登
  • 子类化 sklearn LinearSVC 以用作 sklearn GridSearchCV 的估计器

    我正在尝试创建一个子类sklearn svm LinearSVC用作估计器sklearn model selection GridSearchCV 子类有一个额外的函数 在本例中不执行任何操作 然而 当我运行这个时 我最终遇到了一个我似乎无
  • Delphi 中的丰富 GUI 应用程序

    我想在 Delphi 中创建一个具有丰富 UI 元素且没有 VCL 的应用程序 TForm 除外 每个组件 按钮 列表等 都需要支持完整的每像素 alpha 并且无需任何代码即可轻松创建 它应该是可剥皮的并且能够提供类似于 adobe ai
  • Boost program_options 将多个配置文件解析结果存储到一个 parsed_options 中

    我正在尝试解析命令行提供的任意数量的文件中未注册的选项 假设我有文件 configs0 ini configs1 ini configs2 ini 我想支持其中任意数量的 我的代码 简化 namespace po boost program
  • 根据依赖条件删除行

    删除多个参数上的行并不太困难 例如 data data fd 0 data cl 0 但是 在以下数据框中 data lt structure list id c 0L 0L 0L 0L 0L 0L 0L 0L 0L 0L 0L 0L 0L
  • Android如何让前置摄像头拍摄的视频不反相?

    我使用 MediaRecorder 录制视频 当使用后置摄像头时 它工作正常 但是当使用前置摄像头时 捕获的视频正在翻转 反转 意味着右侧的项目将出现在左侧 相机预览工作正常 只是最终捕获的视频翻转了 这是相机预览的样子 但最终的视频是这样
  • 默认短信应用程序的规则

    我已经阅读了许多文档 但尚未澄清默认短信应遵循的规则列表 Android Dev Blogspot说 仅接收 SMS DELIVER ACTION 广播的应用程序 用户指定的默认短信应用程序 能够写入短信提供商 如果我们的应用程序是默认的短
  • 通过批处理脚本从文本文件中读取特定的单词(第2行,第3行)

    我需要通过批处理脚本从文本文件中读取特定单词 假设我想要读取第 2 行第 3 行 这是代码 ECHO OFF cls SET P line Please enter Line number ECHO Line number entered
  • 清除最近的应用程序会擦除应用程序内存,并且我的接收器停止工作

    如果 MyApp 的接收器在后台运行 则它可以正常工作 public class MySmsReceiver extends WakefulBroadcastReceiver Override public void onReceive C
  • getpwnam_r内存泄漏

    我使用 getpwnam r 来处理程序中的客户端连接 可悲的是 它似乎分配了一个永远不会释放的缓冲区 相关的 valgrind 输出 15774 536 104 direct 432 indirect bytes in 2 blocks