HEX
Server: Apache
System: Linux box5154.bluehost.com 5.14.0-162.23.1.9991722448259.nf.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 31 18:11:45 UTC 2024 x86_64
User: almiraso (1849)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //usr/libexec/oracle-cloud-agent/plugins/osms/multiprocessing/resource_tracker.pyc
a

���d�!�@s�ddlZddlZddlZddlZddlZddlmZddlmZgd�Ze	ed�Z
ejejfZ
ddd	�iZejd
kr�ddlZddlZe�ejejd��Gdd
�d
e�Ze�ZejZejZejZejZdd�ZdS)�N�)�spawn)�util)�ensure_running�register�
unregister�pthread_sigmask�noopcCsdS�N�rrr�8/usr/lib64/python3.9/multiprocessing/resource_tracker.py�<lambda>!�r
�posix)�	semaphore�
shared_memoryc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�ResourceTrackercCst��|_d|_d|_dSr
)�	threading�Lock�_lock�_fd�_pid��selfrrr�__init__0s
zResourceTracker.__init__cCsj|j�P|jdur"Wd�dSt�|j�d|_t�|jd�d|_Wd�n1s\0YdS)Nr)rr�os�close�waitpidrrrrr�_stop5s
zResourceTracker._stopcCs|��|jSr
)rrrrrr�getfdBszResourceTracker.getfdcCs�|j���|jdur~|��r,Wd�dSt�|j�z|jdurRt�|jd�WntyfYn0d|_d|_t�	d�g}z|�
tj�
��Wnty�Yn0d}t��\}}z�z�|�
|�t��}|gt��}|d||g7}z:t�rt�tjt�t�|||�}Wt�r@t�tjt�nt�r>t�tjt�0Wnt�|��Yn0||_||_Wt�|�nt�|�0Wd�n1�s�0YdS)z�Make sure that resource tracker process is running.

        This can be run from any process.  Usually a child process will use
        the resource created by its parent.NrzUresource_tracker: process died unexpectedly, relaunching.  Some resources might leak.z:from multiprocessing.resource_tracker import main;main(%d)z-c)rr�_check_aliverrrr�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�pidrrrrFsN




�
zResourceTracker.ensure_runningcCs0zt�|jd�Wnty&YdS0dSdS)z;Check that the pipe has not been closed by sending a probe.s
PROBE:0:noop
FTN)r�writer�OSErrorrrrrr �s
zResourceTracker._check_alivecCs|�d||�dS)z0Register name of resource with resource tracker.�REGISTERN��_send�r�name�rtyperrrr�szResourceTracker.registercCs|�d||�dS)z2Unregister name of resource with resource tracker.�
UNREGISTERNr<r>rrrr�szResourceTracker.unregistercCsb|��d�|||��d�}t|�dkr0td��t�|j|�}|t|�ks^Jd�|t|����dS)Nz{0}:{1}:{2}
�asciiiz
name too longznbytes {0:n} but len(msg) {1:n})r�format�encode�len�
ValueErrorrr9r)rr3r?r@�msg�nbytesrrrr=�s�zResourceTracker._sendN)�__name__�
__module__�__qualname__rrrrr rrr=rrrrr.s
@rc
Cs�t�tjtj�t�tjtj�tr2t�tjt�tj	tj
fD]$}z|��Wq>ty`Yq>0q>dd�t
��D�}�z�t|d���}|D]�}z�|���d��d�\}}}t
�|d�}|dur�td|�d|����|d	kr�||�|�n2|d
k�r||�|�n|dk�rntd|��Wq�t�yRztjt���WnYn0Yq�0q�Wd�n1�sl0YW|��D]�\}}|�r�zt�d
t|�|f�Wnt�y�Yn0|D]X}zNzt
||�Wn8t�y}	zt�d||	f�WYd}	~	n
d}	~	00Wn0�qq�n�|��D]�\}}|�rhzt�d
t|�|f�Wnt�yfYn0|D]X}zNzt
||�Wn8t�y�}	zt�d||	f�WYd}	~	n
d}	~	00Wn0�ql�q*0dS)zRun resource tracker.cSsi|]}|t��qSr)�set)�.0r@rrr�
<dictcomp>�rzmain.<locals>.<dictcomp>�rbrB�:NzCannot register z. for automatic cleanup: unknown resource type r;rA�PROBEzunrecognized command %rzQresource_tracker: There appear to be %d leaked %s objects to clean up at shutdownzresource_tracker: %r: %s)r-�SIGINT�SIG_IGN�SIGTERMr,rr1r/r%�stdin�stdoutrr(�_CLEANUP_FUNCS�keys�open�strip�decode�split�getrF�add�remove�RuntimeError�
excepthook�exc_info�itemsr"r#rE)
�fd�f�cache�liner3r?r@�cleanup_func�rtype_cache�errr�main�s���

0
�
*�
�
*rk)rr-r%rr"�rr�__all__�hasattrr,rRrTr/rWr?�_multiprocessing�_posixshmem�update�
sem_unlink�
shm_unlink�objectr�_resource_trackerrrrrrkrrrr�<module>s2
�
�w