From b793bdb14f3aeeb361845c254c390006fbf5aad5 Mon Sep 17 00:00:00 2001 From: Ilan Truanovsky Date: Mon, 6 Feb 2023 07:27:37 -0800 Subject: [PATCH] Fix `RESOURCE_LEAK` error in `acl_profiler_test.cpp` Coverity picked up a `RESOURCE_LEAK` error that was not fixed in https://github.com/intel/fpga-runtime-for-opencl/pull/267 Fixes: ``` test/acl_profiler_test.cpp:812:3: Type: Resource leak (RESOURCE_LEAK) test/acl_profiler_test.cpp:756:3: 1. path: Condition "MtUtest::threadNum() == 0", taking true branch. test/acl_profiler_test.cpp:758:5: 2. path: Condition "0 != status", taking true branch. test/acl_profiler_test.cpp:758:5: 3. path: Falling through to end of if statement. test/acl_profiler_test.cpp:763:5: 4. path: Condition "0 != status", taking true branch. test/acl_profiler_test.cpp:763:5: 5. path: Falling through to end of if statement. test/acl_profiler_test.cpp:765:5: 6. path: Condition "0 != clSetKernelArg(kernel, 0, 8UL /* sizeof (cl_mem) */, &src_mem)", taking true branch. test/acl_profiler_test.cpp:765:5: 7. path: Falling through to end of if statement. test/acl_profiler_test.cpp:767:5: 8. path: Condition "0 != clSetKernelArg(kernel, 1, 8UL /* sizeof (cl_mem) */, &src_mem)", taking true branch. test/acl_profiler_test.cpp:767:5: 9. path: Falling through to end of if statement. test/acl_profiler_test.cpp:769:5: 10. path: Condition "0 != clSetKernelArg(kernel, 2, 8UL /* sizeof (cl_mem) */, &src_mem)", taking true branch. test/acl_profiler_test.cpp:769:5: 11. path: Falling through to end of if statement. test/acl_profiler_test.cpp:777:5: 12. path: Condition "0 != status", taking true branch. test/acl_profiler_test.cpp:777:5: 13. path: Falling through to end of if statement. test/acl_profiler_test.cpp:784:3: 14. path: Condition "MtUtest::threadNum() == 0", taking true branch. test/acl_profiler_test.cpp:786:5: 15. path: Condition "active_op", taking true branch. test/acl_profiler_test.cpp:786:5: 16. path: Condition "!Utest::getCurrent()->assertTrue(active_op, "active_op", "/__w/fpga-runtime-for-opencl/fpga-runtime-for-opencl/test/acl_profiler_test.cpp", 786)", taking true branch. test/acl_profiler_test.cpp:787:5: 17. path: Condition "ACL_DEVICE_OP_KERNEL != active_op->info.type", taking true branch. test/acl_profiler_test.cpp:787:5: 18. path: Falling through to end of if statement. test/acl_profiler_test.cpp:796:3: 19. path: Condition "MtUtest::threadNum() == 0", taking true branch. test/acl_profiler_test.cpp:797:5: 20. alloc_fn: Storage is returned from allocation function "fopen". test/acl_profiler_test.cpp:797:5: 21. var_assign: Assigning: "fp" = storage returned from "fopen("profile.mon", "r")". test/acl_profiler_test.cpp:798:5: 22. path: Condition "fp == NULL", taking false branch. test/acl_profiler_test.cpp:798:5: 23. path: Condition "!Utest::getCurrent()->assertTrue(fp == NULL, "fp == NULL", "/__w/fpga-runtime-for-opencl/fpga-runtime-for-opencl/test/acl_profiler_test.cpp", 798)", taking true branch. test/acl_profiler_test.cpp:805:5: 24. path: Condition "acl_process_profiler_scan_chain(event->current_device_op)", taking true branch. test/acl_profiler_test.cpp:805:5: 25. path: Condition "!Utest::getCurrent()->assertTrue(acl_process_profiler_scan_chain(event->current_device_op), "acl_process_profiler_scan_chain(event->current_device_op)", "/__w/fpga-runtime-for-opencl/fpga-runtime-for-opencl/test/acl_profiler_test.cpp", 806)", taking true branch. test/acl_profiler_test.cpp:807:5: 26. path: Condition "acl_process_autorun_profiler_scan_chain(0, 0)", taking true branch. test/acl_profiler_test.cpp:807:5: 27. path: Condition "!Utest::getCurrent()->assertTrue(acl_process_autorun_profiler_scan_chain(0, 0), "acl_process_autorun_profiler_scan_chain(0, 0)", "/__w/fpga-runtime-for-opencl/fpga-runtime-for-opencl/test/acl_profiler_test.cpp", 807)", taking true branch. test/acl_profiler_test.cpp:812:3: 28. leaked_storage: Variable "fp" going out of scope leaks the storage it points to. ``` --- test/acl_profiler_test.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/acl_profiler_test.cpp b/test/acl_profiler_test.cpp index d19df71b..37d0d14e 100644 --- a/test/acl_profiler_test.cpp +++ b/test/acl_profiler_test.cpp @@ -795,6 +795,9 @@ MT_TEST(acl_no_profile, no_profiler) { if (threadNum() == 0) { FILE *fp = fopen(PROFILE_MON, "r"); + if (fp != NULL) { + fclose(fp); + } CHECK(fp == NULL); // Check that the low level call checks event completion status.