U ,a!@sddlZddlZddlZddlZddlZddlmZddlmZdddgZe edZ ej ej fZ d d d iZejd krddlZddlZeejejd GdddeZeZejZejZejZejZddZdS)N)spawn)utilensure_runningregister unregisterpthread_sigmaskZnoopcCsdSNr r r E/opt/alt/python38/lib64/python3.8/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__c CsT|jD|jdkr W5QRdSt|jd|_t|jdd|_W5QRXdS)Nr)rrosclosewaitpidrrr r r _stop5s  zResourceTracker._stopcCs||jSr )rrrr r r getfdBszResourceTracker.getfdc Cst|jb|jdk r~|r*W5QRdSt|jz|jdk rPt|jdWntk rfYnXd|_d|_t dg}z| t j Wntk rYnXd}t\}}zzr| |t}|gt}|d||g7}z&trttjtt|||}W5tr,ttjtXWnt|YnX||_||_W5t|XW5QRXdS)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_UNBLOCK_IGNORED_SIGNALS SIG_BLOCKZspawnv_passfds)rZ fds_to_passcmdrwZexeargspidr r r rFsJ         zResourceTracker.ensure_runningcCs2zt|jdWntk r(YdSXdSdS)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 k rbYq>Xq>ddt D}zt|d}|D]}z|dd\}}}t |d} | dkrtd|d ||d kr|||n2|d kr|||n|d krn td |Wqt k rTztjtWn YnXYqXqW5QRXW5|D]\}}|rztdt||fWnt k rYnX|D]V}zLzt ||Wn6t k r}ztd||fW5d}~XYnXW5XqqnXdS)NcSsi|] }|tqSr )set).0r7r r r szmain..zQresource_tracker: There appear to be %d leaked %s objects to clean up at shutdownzresource_tracker: %r: %srbr9:zCannot register z. for automatic cleanup: unknown resource type r2r8ZPROBEzunrecognized command %r)r'SIGINTSIG_IGNSIGTERMr&rr(r)r!stdinstdoutrr$_CLEANUP_FUNCSkeysitemsrrr<openstripdecodesplitgetr=addremove RuntimeError excepthookexc_info) fdfcacher7Z rtype_cacher6eliner+Z cleanup_funcr r r mains^      (r_)rr'r!rrrr__all__hasattrr&rHrJr)rMr6Z_multiprocessingZ _posixshmemupdateZ sem_unlinkZ shm_unlinkobjectrZ_resource_trackerrrrrr_r r r r s4      w