I'm trying Valgrind on a simple CUDA program for CPU memory check (It worked for GPU memcheck when using cuda-memcheck
):
#include <stdlib.h>
int main()
{
void *dp = NULL;
cudaMalloc(&dp, 1024);
cudaFree(dp);
void *p = NULL;
p = malloc(1024);
free(p);
cudaDeviceReset();
return 0;
}
The program hangs with many noted but unhandled ioctl with no size/direction hints
warnings.
$ nvcc prog.cu
$ valgrind ./a.out
==61517== Memcheck, a memory error detector
==61517== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==61517== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==61517== Command: ./a.out
==61517==
==61517== Warning: noted but unhandled ioctl 0x30000001 with no size/direction hints.
==61517== This could cause spurious value errors to appear.
==61517== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==61517== Warning: noted but unhandled ioctl 0x27 with no size/direction hints.
==61517== This could cause spurious value errors to appear.
==61517== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==61517== Warning: noted but unhandled ioctl 0x7ff with no size/direction hints.
==61517== This could cause spurious value errors to appear.
==61517== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==61517== Warning: noted but unhandled ioctl 0x25 with no size/direction hints.
==61517== This could cause spurious value errors to appear.
==61517== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==61517== Warning: noted but unhandled ioctl 0x37 with no size/direction hints.
==61517== This could cause spurious value errors to appear.
==61517== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==61517== Warning: noted but unhandled ioctl 0x17 with no size/direction hints.
==61517== This could cause spurious value errors to appear.
==61517== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==61517== Warning: set address range perms: large range [0x200000000, 0x300200000) (noaccess)
==61517== Warning: set address range perms: large range [0x7798000, 0x27797000) (noaccess)
==61517== Warning: set address range perms: large range [0x10006000000, 0x10106000000) (noaccess)
==61517== Warning: noted but unhandled ioctl 0x19 with no size/direction hints.
==61517== This could cause spurious value errors to appear.
==61517== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==61517== Warning: set address range perms: large range [0x10106000000, 0x10206000000) (noaccess)
==61517== Warning: noted but unhandled ioctl 0x21 with no size/direction hints.
==61517== This could cause spurious value errors to appear.
==61517== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
==61517== Warning: noted but unhandled ioctl 0x1b with no size/direction hints.
==61517== This could cause spurious value errors to appear.
==61517== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper.
I'm also follwing this question to generate Valgrind suppressions, the program hangs again with same warnings. How can I use Valgrind with CUDA correctly?
I'm using Ubuntu 18.04
+ CUDA 9.1
+ Valgrind 3.13.0
.
User contributions licensed under CC BY-SA 3.0