@@ -542,22 +542,41 @@ static void cu_memory_provider_get_last_native_error(void *provider,
542
542
return ;
543
543
}
544
544
545
- const char * error_name = 0 ;
546
- const char * error_string = 0 ;
547
- g_cu_ops .cuGetErrorName (TLS_last_native_error .native_error , & error_name );
548
- g_cu_ops .cuGetErrorString (TLS_last_native_error .native_error ,
549
- & error_string );
550
-
545
+ CUresult result ;
551
546
size_t buf_size = 0 ;
552
- strncpy (TLS_last_native_error .msg_buff , error_name , TLS_MSG_BUF_LEN - 1 );
553
- buf_size = strlen (TLS_last_native_error .msg_buff );
547
+ const char * error_name = NULL ;
548
+ const char * error_string = NULL ;
549
+
550
+ // If the error code is not recognized,
551
+ // CUDA_ERROR_INVALID_VALUE will be returned
552
+ // and error_name will be set to the NULL address.
553
+ result = g_cu_ops .cuGetErrorName (TLS_last_native_error .native_error ,
554
+ & error_name );
555
+ if (result == CUDA_SUCCESS && error_name != NULL ) {
556
+ strncpy (TLS_last_native_error .msg_buff , error_name ,
557
+ TLS_MSG_BUF_LEN - 1 );
558
+ } else {
559
+ strncpy (TLS_last_native_error .msg_buff , "cuGetErrorName() failed" ,
560
+ TLS_MSG_BUF_LEN - 1 );
561
+ }
554
562
563
+ buf_size = strlen (TLS_last_native_error .msg_buff );
555
564
strncat (TLS_last_native_error .msg_buff , " - " ,
556
565
TLS_MSG_BUF_LEN - buf_size - 1 );
557
566
buf_size = strlen (TLS_last_native_error .msg_buff );
558
567
559
- strncat (TLS_last_native_error .msg_buff , error_string ,
560
- TLS_MSG_BUF_LEN - buf_size - 1 );
568
+ // If the error code is not recognized,
569
+ // CUDA_ERROR_INVALID_VALUE will be returned
570
+ // and error_string will be set to the NULL address.
571
+ result = g_cu_ops .cuGetErrorString (TLS_last_native_error .native_error ,
572
+ & error_string );
573
+ if (result == CUDA_SUCCESS && error_string != NULL ) {
574
+ strncat (TLS_last_native_error .msg_buff , error_string ,
575
+ TLS_MSG_BUF_LEN - buf_size - 1 );
576
+ } else {
577
+ strncat (TLS_last_native_error .msg_buff , "cuGetErrorString() failed" ,
578
+ TLS_MSG_BUF_LEN - buf_size - 1 );
579
+ }
561
580
562
581
* pError = TLS_last_native_error .native_error ;
563
582
* ppMessage = TLS_last_native_error .msg_buff ;
0 commit comments