From: vries Date: Thu, 24 Jan 2019 14:12:19 +0000 (+0000) Subject: [nvptx, libgomp] Fix memleak in GOMP_OFFLOAD_fini_device X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3c3048774b582f949410796dcee8d97dbbba7a0;p=thirdparty%2Fgcc.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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@268237 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 660fc924c7e3..fb694020dcdd 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 ff90b67cb866..387e7cc6dd32 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; }