[alsa-devel] jack: Fixing a small memory leak
Hello Alsa developers,
I observed a small memory leak in alsa-plugins (jack):
... ==1034== ==1034== 8 bytes in 1 blocks are definitely lost in loss record 7 of 108 ==1034== at 0x4027E5A: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==1034== by 0x4035102: snd_pcm_jack_prepare (in /usr/lib/alsa-lib/libasound_module_pcm_jack.so) ==1034== by 0x40D07AB: snd_pcm_ioplug_prepare (pcm_ioplug.c:145) ==1034== by 0x4084961: snd_pcm_prepare (pcm.c:1052) ==1034== by 0x409DDB4: snd_pcm_plugin_prepare (pcm_plugin.c:162) ==1034== by 0x4084961: snd_pcm_prepare (pcm.c:1052) ==1034== by 0x409DDB4: snd_pcm_plugin_prepare (pcm_plugin.c:162) ==1034== by 0x4084961: snd_pcm_prepare (pcm.c:1052) ==1034== by 0x4084A1D: snd_pcm_hw_params (pcm.c:838) ==1034== by 0x4090013: snd_pcm_set_params (pcm.c:8053) ==1034== by 0x80486EB: main (in /root/pcm_min_ok) ... ==1034== LEAK SUMMARY: ==1034== definitely lost: 8 bytes in 1 blocks ==1034== indirectly lost: 0 bytes in 0 blocks ==1034== possibly lost: 31,311 bytes in 1,630 blocks ==1034== still reachable: 5,619 bytes in 24 blocks ==1034== suppressed: 0 bytes in 0 blocks ==1034== Reachable blocks (those to which a pointer was found) are not shown. ==1034== To see them, rerun with: --leak-check=full --show-leak-kinds=all ...
Best Regards, Valentin Corfu
Signed-off-by: Valentin Corfu corfuvalentin@gmail.com --- jack/pcm_jack.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/jack/pcm_jack.c b/jack/pcm_jack.c index 568ec43..de9c46e 100644 --- a/jack/pcm_jack.c +++ b/jack/pcm_jack.c @@ -103,6 +103,7 @@ static void snd_pcm_jack_free(snd_pcm_jack_t *jack) if (jack->io.poll_fd >= 0) close(jack->io.poll_fd); free(jack->areas); + free(jack->ports); free(jack); } }
On Mon, 10 Aug 2015 16:58:26 +0200, Valentin Corfu wrote:
Signed-off-by: Valentin Corfu corfuvalentin@gmail.com
So you found out the very same fix :)
But please put more description in the commit log. For example, the valgrind output you cited would be a good material.
thanks,
Takashi
jack/pcm_jack.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/jack/pcm_jack.c b/jack/pcm_jack.c index 568ec43..de9c46e 100644 --- a/jack/pcm_jack.c +++ b/jack/pcm_jack.c @@ -103,6 +103,7 @@ static void snd_pcm_jack_free(snd_pcm_jack_t *jack) if (jack->io.poll_fd >= 0) close(jack->io.poll_fd); free(jack->areas);
free(jack); }free(jack->ports);
}
1.9.1
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
On Mon, 10 Aug 2015 16:58:25 +0200, Valentin Corfu wrote:
Hello Alsa developers,
I observed a small memory leak in alsa-plugins (jack):
... ==1034== ==1034== 8 bytes in 1 blocks are definitely lost in loss record 7 of 108 ==1034== at 0x4027E5A: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==1034== by 0x4035102: snd_pcm_jack_prepare (in /usr/lib/alsa-lib/libasound_module_pcm_jack.so) ==1034== by 0x40D07AB: snd_pcm_ioplug_prepare (pcm_ioplug.c:145) ==1034== by 0x4084961: snd_pcm_prepare (pcm.c:1052) ==1034== by 0x409DDB4: snd_pcm_plugin_prepare (pcm_plugin.c:162) ==1034== by 0x4084961: snd_pcm_prepare (pcm.c:1052) ==1034== by 0x409DDB4: snd_pcm_plugin_prepare (pcm_plugin.c:162) ==1034== by 0x4084961: snd_pcm_prepare (pcm.c:1052) ==1034== by 0x4084A1D: snd_pcm_hw_params (pcm.c:838) ==1034== by 0x4090013: snd_pcm_set_params (pcm.c:8053) ==1034== by 0x80486EB: main (in /root/pcm_min_ok) ... ==1034== LEAK SUMMARY: ==1034== definitely lost: 8 bytes in 1 blocks ==1034== indirectly lost: 0 bytes in 0 blocks ==1034== possibly lost: 31,311 bytes in 1,630 blocks ==1034== still reachable: 5,619 bytes in 24 blocks ==1034== suppressed: 0 bytes in 0 blocks ==1034== Reachable blocks (those to which a pointer was found) are not shown. ==1034== To see them, rerun with: --leak-check=full --show-leak-kinds=all ...
Does the patch below fix it?
Takashi
--- diff --git a/jack/pcm_jack.c b/jack/pcm_jack.c index 568ec43b0924..4134f9e6498e 100644 --- a/jack/pcm_jack.c +++ b/jack/pcm_jack.c @@ -102,6 +102,7 @@ static void snd_pcm_jack_free(snd_pcm_jack_t *jack) close(jack->fd); if (jack->io.poll_fd >= 0) close(jack->io.poll_fd); + free(jack->ports); free(jack->areas); free(jack); }
participants (2)
-
Takashi Iwai
-
Valentin Corfu