GPU RAM keeps increasing

If I uncomment below code then RAM usage is stable. This code is adopted from Deepstream sample code snippet - #3 by bcao Do you see anything wrong in below code implemented in gie_processing_done_buf_prob()

        NvBufSurface *inter_buf = nullptr;
        NvBufSurfaceCreateParams create_params;
        create_params.gpuId  = in_surf->gpuId;
        create_params.width  = width;
        create_params.height = height;
        create_params.size = 0;
        create_params.colorFormat = NVBUF_COLOR_FORMAT_RGBA;
        create_params.layout = NVBUF_LAYOUT_PITCH;
        create_params.memType = NVBUF_MEM_DEFAULT;

        //Create another scratch RGBA NvBufSurface
        if (NvBufSurfaceCreate (&inter_buf, 1, &create_params) != 0) {
          GST_ERROR ("Error: Could not allocate internal buffer ");
          return GST_PAD_PROBE_OK;
        }
        inter_buf->numFilled = 1;

        if(NvBufSurfaceMap (inter_buf, 0, -1, NVBUF_MAP_READ_WRITE) != 0)
          std::cout << "map error" << std::endl;

        if(NvBufSurfaceSyncForCpu (inter_buf, 0, 0) != 0) {
            printf("Sync CPU failed for in_surf\n");
        }

        cv::Mat inter_mat = cv::Mat(height, width, CV_8UC4, inter_buf->surfaceList[0].mappedAddr.addr[0],
          inter_buf->surfaceList[0].pitch);
        cv::cvtColor(in_frame_bgr, inter_mat, cv::COLOR_BGR2RGBA);

        NvBufSurfaceSyncForDevice(inter_buf, 0, 0);

        NvBufSurfTransformConfigParams transform_config_params;
        NvBufSurfTransformParams transform_params;
        NvBufSurfTransformRect src_rect;
        NvBufSurfTransformRect dst_rect;
        cudaStream_t cuda_stream;
        CHECK_CUDA_STATUS (cudaStreamCreate (&cuda_stream), "Could not create cuda stream");
        transform_config_params.compute_mode = NvBufSurfTransformCompute_Default;
        transform_config_params.gpu_id = in_surf->gpuId;
        transform_config_params.cuda_stream = cuda_stream;
        // Set the transform session parameters for the conversions executed in this thread. 
        if (NvBufSurfTransformSetSessionParams (&transform_config_params) != NvBufSurfTransformError_Success) {
          std::cerr << "NvBufSurfTransformSetSessionParams failed with error" << std::endl;
          return GST_PAD_PROBE_OK;
        }

        // Set the transform ROIs for source and destination, only do the color format conversion
        src_rect = {0, 0, width, height};
        dst_rect = {0, 0, width, height};

        // Set the transform parameters 
        transform_params.src_rect = &src_rect;
        transform_params.dst_rect = &dst_rect;
        transform_params.transform_flag = NVBUFSURF_TRANSFORM_FILTER | NVBUFSURF_TRANSFORM_CROP_SRC |
            NVBUFSURF_TRANSFORM_CROP_DST;
        transform_params.transform_filter = NvBufSurfTransformInter_Default;

        // Transformation format conversion, Transform rotated RGBA mat to NV12 memory in original input surface
        if (NvBufSurfTransform (inter_buf, in_surf, &transform_params) != NvBufSurfTransformError_Success) {
          std::cerr << "NvBufSurfTransform failed with error %d while converting buffer" << std::endl;
          return GST_PAD_PROBE_OK;
        }

        // unmap surface after writing
        if(NvBufSurfaceUnMap(inter_buf, 0, -1) != 0) { 
            std::cerr << "Error: Failed to unmap NvBufSurface in_surf" << std::endl;
            gst_buffer_unmap(buf, &in_map_info);
            return GST_PAD_PROBE_OK;
        }
 
        NvBufSurfaceDestroy(inter_buf);

        // unmap surface after writing
        if(NvBufSurfaceUnMap(in_surf, 0, -1) != 0) { 
            std::cerr << "Error: Failed to unmap NvBufSurface after writing" << std::endl;
            gst_buffer_unmap(buf, &in_map_info);
            return GST_PAD_PROBE_OK;
        }