@@ -349,11 +349,12 @@ class Linker:
349349 """
350350
351351 class _MembersNeededForFinalize :
352- __slots__ = ("handle" , "use_nvjitlink" )
352+ __slots__ = ("handle" , "use_nvjitlink" , "const_char_keep_alive" )
353353
354354 def __init__ (self , program_obj , handle , use_nvjitlink ):
355355 self .handle = handle
356356 self .use_nvjitlink = use_nvjitlink
357+ self .const_char_keep_alive = []
357358 weakref .finalize (program_obj , self .close )
358359
359360 def close (self ):
@@ -390,27 +391,30 @@ def _add_code_object(self, object_code: ObjectCode):
390391 data = object_code ._module
391392 assert_type (data , bytes )
392393 with _exception_manager (self ):
394+ name_str = f"{ object_code ._handle } _{ object_code ._code_type } "
393395 if _nvjitlink :
394396 _nvjitlink .add_data (
395397 self ._mnff .handle ,
396398 self ._input_type_from_code_type (object_code ._code_type ),
397399 data ,
398400 len (data ),
399- f" { object_code . _handle } _ { object_code . _code_type } " ,
401+ name_str ,
400402 )
401403 else :
404+ name_bytes = name_str .encode ()
402405 handle_return (
403406 _driver .cuLinkAddData (
404407 self ._mnff .handle ,
405408 self ._input_type_from_code_type (object_code ._code_type ),
406409 data ,
407410 len (data ),
408- f" { object_code . _handle } _ { object_code . _code_type } " . encode () ,
411+ name_bytes ,
409412 0 ,
410413 None ,
411414 None ,
412415 )
413416 )
417+ self ._mnff .const_char_keep_alive .append (name_bytes )
414418
415419 def link (self , target_type ) -> ObjectCode :
416420 """
0 commit comments