首页 > 解决方案 > 为什么 Valgrind 会检测 Dbus 应用程序中的内存泄漏?

问题描述

我正在使用 Dbus 进行进程间通信。我正在使用 dbus_connection_send_with_reply_and_block 通过 dbus 发送数据,而对于阅读,我正在使用 dbus_connection_read_write(connection, 0)。两者都在单独的线程中运行。

我们在 valgrind 中遇到内存泄漏,如下所述:

==16199== 792 (368 direct, 424 indirect) bytes in 2 blocks are definitely lost in loss record 75 of 78
==16199==    at 0x484AC14: calloc (vg_replace_malloc.c:760)
==16199==    by 0x4E05FBB: dbus_malloc0 (in /lib/libdbus-1.so.3)
==16199==    by 0x4DEC867: dbus_message_new_empty_header (in /lib/libdbus-1.so.3)
==16199==    by 0x4DF1613: _dbus_message_loader_queue_messages (in /lib/libdbus-1.so.3)
==16199==    by 0x4DFDE5B: _dbus_transport_get_dispatch_status (in /lib/libdbus-1.so.3)
==16199==    by 0x4DFDF37: _dbus_transport_queue_messages (in /lib/libdbus-1.so.3)
==16199==    by 0x4DFF6CF: do_reading (in /lib/libdbus-1.so.3)
==16199==    by 0x4DFFCEF: socket_do_iteration (in /lib/libdbus-1.so.3)
==16199==    by 0x4DFDBCB: _dbus_transport_do_iteration (in /lib/libdbus-1.so.3)
==16199==    by 0x4DDBA77: _dbus_connection_do_iteration_unlocked (in /lib/libdbus-1.so.3)
==16199==    by 0x4DDD10F: _dbus_connection_block_pending_call (in /lib/libdbus-1.so.3)
==16199==    by 0x4DF520F: dbus_pending_call_block (in /lib/libdbus-1.so.3).

这种内存泄漏在一段时间内是递增的。请有人帮我解决这个泄漏。

标签: memory-leaksembedded-linuxvalgrinddbus

解决方案


推荐阅读