From: Tom de Vries Date: Thu, 24 Jan 2019 14:12:19 +0000 (+0000) Subject: [nvptx, libgomp] Fix memleak in GOMP_OFFLOAD_fini_device X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=738c56d4104867713d8fe64dd0ddbdef56f9c67b;p=gcc.git [nvptx, libgomp] Fix memleak in GOMP_OFFLOAD_fini_device I wrote a test-case: ... int main (void) { for (unsigned i = 0; i < 128; ++i) { acc_init (acc_device_nvidia); acc_shutdown (acc_device_nvidia); } return 0; } ... and ran it under valgrind. The only leak location reported with a frequency of 128, was the allocation of ptx_devices in nvptx_init. Fix this by freeing ptx_devices in GOMP_OFFLOAD_fini_device, once instantiated_devices drops to 0. 2019-01-24 Tom de Vries * plugin/plugin-nvptx.c (GOMP_OFFLOAD_fini_device): Free ptx_devices once instantiated_devices drops to 0. From-SVN: r268237 --- diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 660fc924c7e..fb694020dcd 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2019-01-24 Tom de Vries + + * plugin/plugin-nvptx.c (GOMP_OFFLOAD_fini_device): Free ptx_devices + once instantiated_devices drops to 0. + 2019-01-23 Tom de Vries PR target/PR88946 diff --git a/libgomp/plugin/plugin-nvptx.c b/libgomp/plugin/plugin-nvptx.c index ff90b67cb86..387e7cc6dd3 100644 --- a/libgomp/plugin/plugin-nvptx.c +++ b/libgomp/plugin/plugin-nvptx.c @@ -1936,6 +1936,12 @@ GOMP_OFFLOAD_fini_device (int n) instantiated_devices--; } + if (instantiated_devices == 0) + { + free (ptx_devices); + ptx_devices = NULL; + } + pthread_mutex_unlock (&ptx_dev_lock); return true; }