a XC?h!@sddlZddlZddlZddlZddlZddlmZddlmZgdZe edZ ej ej fZ ddd iZejd krddlZddlZeejejd Gd d d eZeZejZejZejZejZddZdS)N)spawn)util)ensure_runningregister unregisterpthread_sigmaskZnoopcCsdSNr r r E/opt/alt/python39/lib64/python3.9/multiprocessing/resource_tracker.py!r posix)Z semaphoreZ shared_memoryc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)ResourceTrackercCst|_d|_d|_dSr ) threadingZLock_lock_fd_pidselfr r r __init__0s zResourceTracker.__init__cCsj|jP|jdur"WddSt|jd|_t|jdd|_Wdn1s\0YdS)Nr)rrosclosewaitpidrrr r r _stop5s  zResourceTracker._stopcCs||jSr )rrrr r r getfdBszResourceTracker.getfdc Cs|j|jdur~|r,WddSt|jz|jdurRt|jdWntyfYn0d|_d|_t dg}z| t j WntyYn0d}t\}}zz| |t}|gt}|d||g7}z:trttjtt|||}Wtr@ttjtntr>ttjt0Wnt|Yn0||_||_Wt|n t|0Wdn1s0YdS)NrzUresource_tracker: process died unexpectedly, relaunching. Some resources might leak.z:from multiprocessing.resource_tracker import main;main(%d)z-c)rr _check_aliverrrrChildProcessErrorwarningswarnappendsysstderrfileno ExceptionpiperZget_executablerZ_args_from_interpreter_flags _HAVE_SIGMASKsignalr SIG_BLOCK_IGNORED_SIGNALSZspawnv_passfds SIG_UNBLOCK)rZ fds_to_passcmdrwZexeargspidr r r rFsN          zResourceTracker.ensure_runningcCs0zt|jdWnty&YdS0dSdS)Ns PROBE:0:noop FT)rwriterOSErrorrr r r rs  zResourceTracker._check_alivecCs|d||dS)NREGISTER_sendrnamertyper r r rszResourceTracker.registercCs|d||dS)N UNREGISTERr3r5r r r rszResourceTracker.unregistercCsB|d|||d}t|dkr0tdt|j|}dS)Nz {0}:{1}:{2} asciiiz name too long)rformatencodelen ValueErrorrr0r)rr+r6r7msgnbytesr r r r4s  zResourceTracker._sendN) __name__ __module__ __qualname__rrrrrrrr4r r r r r.s @ rc Csttjtjttjtjtr2ttjttj tj fD]$}z | Wq>t y`Yq>0q>ddt D}zt|d}|D]}z|dd\}}}t |d}|durtd|d||dkr|||n2|d kr|||n|d krn td |Wqt yRztjtWn Yn0Yq0qWdn1sl0YW|D]\}}|rztd t||fWnt yYn0|D]X}zNzt ||Wn8t y} ztd || fWYd} ~ n d} ~ 00Wn0qqn|D]\}}|rhztd t||fWnt yfYn0|D]X}zNzt ||Wn8t y} ztd || fWYd} ~ n d} ~ 00Wn0qlq*0dS)NcSsi|] }|tqSr )set).0r7r r r r zmain..rbr9:zCannot register z. for automatic cleanup: unknown resource type r2r8ZPROBEzunrecognized command %rzQresource_tracker: There appear to be %d leaked %s objects to clean up at shutdownzresource_tracker: %r: %s)r'SIGINTSIG_IGNSIGTERMr&rr*r)r!stdinstdoutrr$_CLEANUP_FUNCSkeysopenstripdecodesplitgetr=addremove RuntimeError excepthookexc_infoitemsrrr<) fdfcacheliner+r6r7Z cleanup_funcZ rtype_cacheer r r mains      0 * *r_)rr'r!rrrr__all__hasattrr&rHrJr)rMr6Z_multiprocessingZ _posixshmemupdateZ sem_unlinkZ shm_unlinkobjectrZ_resource_trackerrrrrr_r r r r s2     w