
    ;e#                        d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ g dZ e	ed          Z
ej        ej        fZdd iZe j        d	k    rLd dlZd dlZ e	ed
          re                    dej        i           e                    dej        i            G d de          Z e            Zej        Zej        Zej        Zej        Zd ZdS )    N   )spawn)util)ensure_runningregister
unregisterpthread_sigmasknoopc                      d S N r       7/usr/lib/python3.11/multiprocessing/resource_tracker.py<lambda>r   !   s    D r   posix
sem_unlink	semaphoreshared_memoryc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
ResourceTrackerc                 R    t          j                    | _        d | _        d | _        d S r   )	threadingLock_lock_fd_pidselfs    r   __init__zResourceTracker.__init__8   s#    ^%%
			r   c                     | j         5  | j        	 d d d            d S t          j        | j                   d | _        t          j        | j        d           d | _        d d d            d S # 1 swxY w Y   d S )Nr   )r   r   osclosewaitpidr   r   s    r   _stopzResourceTracker._stop=   s    Z 
	 
	x
	 
	 
	 
	 
	 
	 
	 
	 HTXDHJty!$$$DI
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s   	A,AA,,A03A0c                 8    |                                   | j        S r   )r   r   r   s    r   getfdzResourceTracker.getfdJ   s    xr   c                    	 | j         5  | j        |                                 r	 d d d            d S t          j        | j                   	 | j        t          j        | j        d           n# t          $ r Y nw xY wd | _        d | _        t          j	        d           g }	 |
                    t          j                                                   n# t          $ r Y nw xY wd}t          j                    \  }}	 |
                    |           t!          j                    }|gt%          j                    z   }|d||z  gz  }	 t(          r$t+          j        t*          j        t0                     t%          j        |||          }t(          r$t+          j        t*          j        t0                     n1# t(          r%t+          j        t*          j        t0                     w w xY w|| _        || _        n#  t          j        |            xY w	 t          j        |           n# t          j        |           w xY w	 d d d            d S # 1 swxY w Y   d S )Nr   zUresource_tracker: process died unexpectedly, relaunching.  Some resources might leak.z:from multiprocessing.resource_tracker import main;main(%d)z-c)r   r   _check_aliver!   r"   r   r#   ChildProcessErrorwarningswarnappendsysstderrfileno	Exceptionpiper   get_executabler   _args_from_interpreter_flags_HAVE_SIGMASKsignalr	   	SIG_BLOCK_IGNORED_SIGNALSspawnv_passfdsSIG_UNBLOCK)r   fds_to_passcmdrwexeargspids           r   r   zResourceTracker.ensure_runningN   s   	/ Z 9	 9	x#$$&& 9	 9	 9	 9	 9	 9	 9	 9	 """ y,
49a000(   D   	 I J J J K""3:#4#4#6#67777   NC799DAq""1%%%*,,ut@BBBsQw'U$ S.v/?AQRRR-c4EEC$ U.v/ACSTTT % U.v/ACSTTTTU 		 s9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	s   II!A/.I/
A<9I;A<<'I$1CI
C# I"C##I?A	G6	AF6
,G66.G$$G6'H&6HH&I&H<<IIIc                 `    	 	 t          j        | j        d           dS # t          $ r Y dS w xY w)Ns   PROBE:0:noop
TF)r!   writer   OSErrorr   s    r   r(   zResourceTracker._check_alive   sL    I	 HTX0111 4  	 	 	55	s    
--c                 6    	 |                      d||           d S )NREGISTER_sendr   namertypes      r   r   zResourceTracker.register   s!    >

:tU+++++r   c                 6    	 |                      d||           d S )N
UNREGISTERrF   rH   s      r   r   zResourceTracker.unregister   s!    @

<u-----r   c                     |                                   d                    |||                              d          }t          |          dk    rt	          d          t          j        | j        |          }d S )Nz{0}:{1}:{2}
asciii   zmsg too long)r   formatencodelen
ValueErrorr!   rB   r   )r   r;   rI   rJ   msgnbytess         r   rG   zResourceTracker._send   so    $$S$66==gFFs88c>> ^,,,$(C((r   N)__name__
__module____qualname__r   r$   r&   r   r(   r   r   rG   r   r   r   r   r   6   s          
    > > >@	 	 	, , ,. . .	 	 	 	 	r   r   c                    	 t          j         t           j        t           j                   t          j         t           j        t           j                   t          r$t          j        t           j        t                     t          j	        t          j
        fD ]'}	 |                                 # t          $ r Y $w xY wd t                                          D             }	 t          | d          5 }|D ]	}	 |                                                    d                              d          \  }}}t                              |d           }|t)          d| d|           |dk    r||                             |           n;|dk    r||                             |           n|d	k    rnt/          d
|z            # t          $ r, 	 t          j        t          j                      n#  Y nxY wY w xY w	 d d d            n# 1 swxY w Y   |                                D ]\  }}|r8	 t7          j        dt;          |          |fz             n# t          $ r Y nw xY w|D ]P}	 	 t          |         |           n1# t          $ r$}	t7          j        d|d|	           Y d }	~	nd }	~	ww xY wL# w xY wd S # |                                D ]\  }}|r8	 t7          j        dt;          |          |fz             n# t          $ r Y nw xY w|D ]P}	 	 t          |         |           n1# t          $ r$}	t7          j        d|d|	           Y d }	~	nd }	~	ww xY wL# w xY ww xY w)Nc                 ,    i | ]}|t                      S r   )set).0rJ   s     r   
<dictcomp>zmain.<locals>.<dictcomp>   s    ===eUCEE===r   rbrN   :zCannot register z. for automatic cleanup: unknown resource type rE   rL   PROBEzunrecognized command %rzQresource_tracker: There appear to be %d leaked %s objects to clean up at shutdownzresource_tracker: z: )r5   SIGINTSIG_IGNSIGTERMr4   r	   r9   r7   r-   stdinstdoutr"   r0   _CLEANUP_FUNCSkeysopenstripdecodesplitgetrR   addremoveRuntimeError
excepthookexc_infoitemsr*   r+   rQ   )
fdfcacheliner;   rI   rJ   cleanup_funcrtype_cachees
             r   mainry      s   
M&-000
M&.&.111 Ev13CDDDi$  	GGIIII 	 	 	D	 >=~':':'<'<===E-"d^^ 	q  '+zz||':':7'C'C'I'I#'N'N$Cu#1#5#5eT#B#BL#+(=t = =5:= => > > j((e((....,,e++D1111*+Ds+JKKK    777	#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2 #(++-- 	 	E; M #N#&{#3#3U";#< = = = = !   D# 
 
N&u-d3333$ N N N DDD!!&LMMMMMMMMN DDDD
	 	%++-- 	 	E; M #N#&{#3#3U";#< = = = = !   D# 
 
N&u-d3333$ N N N DDD!!&LMMMMMMMMN DDDD
	s!  B//
B<;B<#K 3H:CGH
G>G32G>3G7	5G>:H=G>>HK HK HK 5&I
I)(I)2JJ:
J6J1,J:1J66J::J<M+&LM+
L	M+L	M+L21M$2
M <MM$M  M$#M+$M&&M+)r!   r5   r-   r   r*    r   r   __all__hasattrr4   r`   rb   r7   re   rI   _multiprocessing_posixshmemupdater   
shm_unlinkobjectr   _resource_trackerr   r   r   r&   ry   r   r   r   <module>r      s  $ 
			  



                 
6
6
6 122M6>2  LL 7g w.. )4
 	 	 	 /   
t t t t tf t t tn $O%% "1%)
< < < < <r   