o ?Og #@sddlZddlZddlZddlZddlZddlmZddlmZgdZe edZ ej ej fZ ddd iZejd krWddlZddlZe ed rOed ejied ejiGdddeZeZejZejZejZejZddZdS)N)spawn)util)ensure_runningregister unregisterpthread_sigmaskZnoopcCsdSNr r r G/opt/alt/python310/lib64/python3.10/multiprocessing/resource_tracker.py!sr posix sem_unlinkZ semaphoreZ shared_memoryc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)ResourceTrackercCst|_d|_d|_dSr ) threadingZLock_lock_fd_pidselfr r r __init__8s  zResourceTracker.__init__cCsn|j*|jdur WddSt|jd|_t|jdd|_WddS1s0wYdS)Nr)rrosclosewaitpidrrr r r _stop=s  "zResourceTracker._stopcCs||jSr )rrrr r r getfdJszResourceTracker.getfdc Cs |j|jdur@|r WddSt|jz|jdur*t|jdWn ty4Ynwd|_d|_t dg}z | t j Wn tyUYnwd}t\}}zXzA| |t}|gt}|d||g7}ztrttjtt|||}Wtrttjtn trttjtwwWn t|||_||_Wt|nt|wWddS1swYdS)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 rNs`         "zResourceTracker.ensure_runningcCs, z t|jdWdStyYdSw)Ns PROBE:0:noop FT)rwriterOSErrorrr r r rs zResourceTracker._check_alivecC |d||dS)NREGISTER_sendrnamertyper r r rzResourceTracker.registercCr2)N UNREGISTERr4r6r r r rr9zResourceTracker.unregistercCsB|d|||d}t|dkrtdt|j|}dS)Nz {0}:{1}:{2} asciiiz msg too long)rformatencodelen ValueErrorrr0r)rr+r7r8msgnbytesr r r r5s  zResourceTracker._sendN) __name__ __module__ __qualname__rrrrrrrr5r r r r r6s @  rc Cs ttjtjttjtjtrttjttj tj fD]}z| Wq t y1Yq wddt D}zt|dj}|D]_}zF|dd\}}}t |d}|durhtd|d||dkrt|||n|d kr|||n |d krntd |WqDt yz tjtWnYYqDwWdn1swYW|D]I\}}|rz td t||fWn t yYnw|D])}z&zt ||Wnt y} ztd || fWYd} ~ nd} ~ wwWqwqdS|D]N\}}|r'z td t||fWn t y&Ynw|D]+}z(zt ||Wnt yP} ztd || fWYd} ~ nd} ~ wwWq)wqw)NcSsi|]}|tqSr )set).0r8r r r szmain..rbr;:zCannot register z. for automatic cleanup: unknown resource type r3r:ZPROBEzunrecognized 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+r7r8Z cleanup_funcZ rtype_cacheer r r mains          ra)rr'r!rrrr__all__hasattrr&rJrLr)rOr7Z_multiprocessingZ _posixshmemupdaterZ shm_unlinkobjectrZ_resource_trackerrrrrrar r r r s:      w