OwlCyberSecurity - MANAGER
Edit File: forkserver.cpython-37.opt-1.pyc
B ����� fq0������������������@���s����d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dlZddl m Z �ddl mZ�ddlm Z �ddl mZ�ddl mZ�ddl mZ�d d ddgZd Ze�d�ZG�dd��de�Zddd�Zdd��Zdd��Zdd��Ze��ZejZejZejZejZdS�)�����N����)� connection)�process)� reduction)�semaphore_tracker)�spawn)�util�ensure_running�get_inherited_fds�connect_to_new_process�set_forkserver_preload�����qc���������������@���sD���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��Zdd��Zd d��Z dS�)� ForkServerc�������������C���s.���d�|�_�d�|�_d�|�_d�|�_t���|�_dg|�_d�S�)N�__main__)�_forkserver_address�_forkserver_alive_fd�_forkserver_pid�_inherited_fds� threadingZLock�_lock�_preload_modules)�self��r����?/opt/alt/python37/lib64/python3.7/multiprocessing/forkserver.py�__init__"���s���� zForkServer.__init__c���������� ���C���s���|�j���|�����W�d�Q�R�X�d�S�)N)r����_stop_unlocked)r���r���r���r����_stop*���s����zForkServer._stopc�������������C���sJ���|�j�d�krd�S�t�|�j��d�|�_t�|�j�d��d�|�_�t�|�j��d�|�_d�S�)Nr���)r����os�closer����waitpid�unlinkr���)r���r���r���r���r���/���s���� zForkServer._stop_unlockedc�������������C���s&���t�dd��|�jD���std��||�_dS�)z>Set list of module names to try to load in forkserver process.c�������������s���s���|�]}t�|�tkV��qd�S�)N)�type�str)�.0�modr���r���r���� <genexpr>?���s����z4ForkServer.set_forkserver_preload.<locals>.<genexpr>z&module_names must be a list of stringsN)�allr���� TypeError)r���Z modules_namesr���r���r���r���=���s����z!ForkServer.set_forkserver_preloadc�������������C���s���|�j�S�)z�Return list of fds inherited from parent process. This returns None if the current process was not started by fork server. )r���)r���r���r���r���r ���C���s����zForkServer.get_inherited_fdsc���������� ���C���s����|������t|�d�tkr td��t�tj���}|�|�j��t� ��\}}t� ��\}}|||�j t���g}||7�}z<yt �||��||fS����t�|��t�|����Y�nX�W�dt�|��t�|��X�W�dQ�R�X�dS�)a;��Request forkserver to create a child process. Returns a pair of fds (status_r, data_w). The calling process can read the child process's pid and (eventually) its returncode from status_r. The calling process should write to data_w the pickled preparation and process data. ����ztoo many fdsN)r ����len�MAXFDS_TO_SEND� ValueError�socket�AF_UNIXZconnectr���r����piper���r���Zgetfdr���Zsendfdsr���)r����fdsZclientZparent_r�child_w�child_rZparent_wZallfdsr���r���r���r���K���s&���� z!ForkServer.connect_to_new_processc����������������s���|�j���t�t����|�jdk rVt�|�jtj�\}}|s8dS�t�|�j��d|�_ d|�_d|�_d}|�j r�ddh��t�d�}��fdd�|� ��D��}ni�}t�tj���}t�d�}|�|��t�|�s�t�|d ��|����t���\}}ztyV|���|g} ||���||�j |f;�}t���} | gt����}|d |g7�}t�| || �}W�n���t�|����Y�nX�W�dt�|��X�||�_ ||�_||�_W�dQ�R�X�W�dQ�R�X�dS�)z�Make sure that a fork server is running. This can be called from any process. Note that usually a child process will just reuse the forkserver started by its parent, so ensure_running() will do nothing. NzCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r)� main_path�sys_path�ignorec����������������s���i�|�]\}}|��kr||�qS�r���r���)r$����x�y)�desired_keysr���r���� <dictcomp>����s����z-ForkServer.ensure_running.<locals>.<dictcomp>r.���i���z-c)r���r���r ���r���r���r ����WNOHANGr���r���r���r���r���Zget_preparation_data�itemsr-���r.���r���Zarbitrary_addressZbindr���Zis_abstract_socket_namespace�chmodZlistenr/����filenoZget_executableZ_args_from_interpreter_flagsZspawnv_passfds)r����pidZstatus�cmd�data�listenerZaddress�alive_rZalive_wZfds_to_passZexe�argsr���)r8���r���r ���h���sL���� zForkServer.ensure_runningN) �__name__� __module__�__qualname__r���r���r���r���r ���r���r ���r���r���r���r���r��� ���s���r���c�������������C���s���|rhd|kr8|dk r8dt����_zt�|��W�dt����`X�x.|D�]&}yt|��W�q>�tk rb���Y�q>X�q>W�t����t � ��\}}t �|d��t �|d��dd��}tj |tjtji} dd��| ���D��} t�|��i�}tjtj|�d ���}t������} |���t_| �|tj��| �|tj��| �|tj���x��yrx d d��| ���D��}|�r,P��q,W�||k�rZt�||k�rJt �|d��x�yt �d t j�\}}W�n�t k �r����P�Y�nX�|dk�r�P�|�!|d�}|dk �r6t �"|��r�t �#|��}n&t �$|��s�t%d�&||���t �'|�}yt(||��W�n�t)k �r(���Y�nX�t �*|��nt+�,d|����qrW�||k�r�|�-��d���0}t.�/|t0d��}t1|�t0k�r�t2d�&t1|����|^}}}|�*���t �3��}|dk�r<d}zpy<|�*���| �*���||||g}|�4|�5����t6|||| �}W�n.�t7k �r(���t8j9t8�:�����t8j;�<���Y�nX�W�dt �=|��X�nRyt(||��W�n�t)k �r`���Y�nX�|||<�t �*|��x|D�]}t �*|���qzW�W�dQ�R�X�W�n4�t>k �r��}�z|j?t?j@k�r���W�dd}~X�Y�nX��q&W�W�dQ�R�X�W�dQ�R�X�dS�)zRun forkserver.r���NTFc��������������W���s���d�S�)Nr���)Z_unusedr���r���r����sigchld_handler����s����zmain.<locals>.sigchld_handlerc�������������S���s���i�|�]\}}t���||�|�qS�r���)�signal)r$����sig�valr���r���r���r9�������s���zmain.<locals>.<dictcomp>)r=���c�������������S���s���g�|�]\}}|j��qS�r���)Zfileobj)r$����keyZeventsr���r���r���� <listcomp>����s����zmain.<locals>.<listcomp>i������r���zChild {0:n} status is {1:n}z.forkserver: waitpid returned unexpected pid %dr���zToo many ({0:n}) fds to send)Ar���Zcurrent_processZ_inheritingr���Zimport_main_path� __import__�ImportErrorr���Z_close_stdinr���r/����set_blockingrH����SIGCHLD�SIGINT�SIG_IGNr;���� set_wakeup_fdr-���r.���� selectorsZDefaultSelectorZgetsockname�_forkserverr����registerZ EVENT_READZselect� SystemExit�readr ���r:����ChildProcessError�pop�WIFSIGNALED�WTERMSIG� WIFEXITED�AssertionError�format�WEXITSTATUS�write_signed�BrokenPipeErrorr����warnings�warnZacceptr���Zrecvfdsr+���r*����RuntimeError�fork�extend�values� _serve_one� Exception�sys� excepthook�exc_info�stderr�flush�_exit�OSError�errnoZECONNABORTED)Zlistener_fdrB���Zpreloadr3���r4����modnameZsig_rZsig_wrG����handlersZold_handlersZ pid_to_fdrA���ZselectorZrfdsr>����stsr1���� returncode�sr0���r2����code� unused_fds�fd�er���r���r����main����s����� r}���c�������������C���sd���t��d��x |���D�]\}}t���||��qW�x|D�]}t�|��q2W�|^t_tj_ t_ t�|��}|S�)NrM���) rH���rT���r;���r���r���rV���r���r���Z_semaphore_trackerZ_fdr���r����_main)r2���r0���rz���ru���rI���rJ���r{���ry���r���r���r���rj���0��s���� rj���c�������������C���sR���d}t�j}x8t|�|k�rBt�|�|t|���}|s8td��||7�}qW�t��|�d�S�)N�����zunexpected EOFr���)� SIGNED_STRUCT�sizer*���r���rY����EOFErrorZunpack)r{���r@����lengthrx���r���r���r����read_signedF��s����r����c�������������C���s@���t��|�}x0|r:t�|�|�}|dkr,td��||d���}qW�d�S�)Nr���zshould not get here)r����Zpackr����writerf���)r{����n�msg�nbytesr���r���r���rb���P��s���� rb���)NN) rs���r���rU���rH���r-���Zstructrl���r���rd�����r���r����contextr���r���r���r����__all__r+���ZStructr�����objectr���r}���rj���r����rb���rV���r ���r ���r���r���r���r���r���r����<module>���s<��� � �