The file handle from os.Create(cpuProfile) was passed to
pprof.StartCPUProfile but never closed in the OnInterrupt handler.
The block and mutex profile files are correctly closed, but the
main CPU profile file was leaked.
Add f.Close() after pprof.StopCPUProfile() to prevent the file
descriptor leak.
Co-authored-by: easonysliu <easonysliu@tencent.com>