Error 'cudafe++' died with status 0xC0000409

I want to report a problem. When I compiled my program with visual studio and cuda(v11.8), I encountered a error. “‘cudafe++’ died with status 0xC0000409” and “assertion failed at: ‘overload.c’, in deduce class template args”. Other than that, there were no other more useful and specific error messages, even with verbose mode enabled. The actual error was “=std::pair(1,1)” instead of “=std::pair<double, double>(1,1)”. It is difficult to find this error with other error prompts, so I hope nvcc can provide more useful error messages.

Suggestions:

  1. Provide a complete test case. A simple test case based on what you have described doesn’t seem to show any issue. Without a way to demonstrate the issue, nobody on the compiler team will be able to address it.
  2. Test with the latest CUDA (12.3.2, currently)

The error messages you observed are not intended to tell a user what is wrong with their source code. Rather, they are indications that something went wrong inside cudafe++, that is, an internal compiler error occurred.

assertion failed indicates that something happened inside the compiler that should never happen. Error code 0xC0000409 indicates that as a consequence, the program bailed out immediately as there was no point in continuing, by calling __fastfail():

User-mode fast fail requests appear as a second chance non-continuable exception with exception code 0xC0000409

Robert Crovella already provided practical advice on how to proceed.