Is cudaHostRegister thread safe?

I am getting random occurrences of error 61 - “… memory range passed to cudaHostRegister has already been registered …”. It seems to occur when a region has been registered prior, then unregistered, and then a new register attempt occurs that happens to point to the same memory region. This can happen when I unregister and free a region, do a malloc which happens to return the same region pointer value and then try to register it. Almost like the cudaHostUnregister call had not completed. Any help would be appreciated