JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB YI~dq0@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl mZddl mZddl mZd d d d gZd ZedZGdddeZdddZddZddZddZeZejZejZejZejZdS)N) connection)process) reduction)semaphore_tracker)spawn)utilensure_runningget_inherited_fdsconnect_to_new_processset_forkserver_preloadqc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS) ForkServercCs.d|_d|_d|_d|_t|_dg|_dS)N__main__)_forkserver_address_forkserver_alive_fd_forkserver_pid_inherited_fds threadingZLock_lock_preload_modules)selfr?/opt/alt/python37/lib64/python3.7/multiprocessing/forkserver.py__init__"s  zForkServer.__init__c Cs|j|WdQRXdS)N)r_stop_unlocked)rrrr_stop*szForkServer._stopcCsJ|jdkrdSt|jd|_t|jdd|_t|jd|_dS)Nr)roscloserwaitpidunlinkr)rrrrr/s   zForkServer._stop_unlockedcCs&tdd|jDstd||_dS)Ncss|]}t|tkVqdS)N)typestr).0modrrr ?sz4ForkServer.set_forkserver_preload..z&module_names must be a list of strings)allr TypeError)rZ modules_namesrrrr =sz!ForkServer.set_forkserver_preloadcCs|jS)N)r)rrrrr CszForkServer.get_inherited_fdsc Cs|t|dtkr tdttj}||jt \}}t \}}|||j t g}||7}zsz-ForkServer.ensure_running..r.iz-c)rrr rrr WNOHANGrrrrrZget_preparation_dataitemsr-r.rZarbitrary_addressZbindrZis_abstract_socket_namespacechmodZlistenr/filenoZget_executableZ_args_from_interpreter_flagsZspawnv_passfds) rpidstatuscmddatalistenerZaddressalive_rZalive_wZ fds_to_passZexeargsr)r8rr hsL              zForkServer.ensure_runningN) __name__ __module__ __qualname__rrrr r r r rrrrr src Cs|rhd|kr8|dk r8dt_zt|Wdt`Xx.|D]&}y t|Wq>tk rbYq>Xq>Wtt \}}t |dt |ddd}t j |t jt ji} dd| D} t |i} tjtj|d} t} | t_| | tj| |tj| |tjxyrx d d | D}|r,Pq,W||krZt||krJt |d xyt d t j\}}Wnt k rPYnX|d krP| !|d}|dk r6t "|rt #| }n&t $|st%d&||t '|}yt(||Wnt)k r(YnXt *|nt+,d|qrW| |kr| -d 0}t./|t0d}t1|t0krt2d&t1||^}}}|*t 3}|d krk r}z|j?t?j@krWdd}~XYnXq&WWdQRXWdQRXdS)NrTFcWsdS)Nr)Z_unusedrrrsigchld_handlerszmain..sigchld_handlercSsi|]\}}t|||qSr)signal)r$sigvalrrrr9szmain..)r=cSsg|]\}}|jqSr)Zfileobj)r$keyZeventsrrr szmain..irzChild {0:n} status is {1:n}z.forkserver: waitpid returned unexpected pid %drzToo many ({0:n}) fds to send)ArZcurrent_processZ _inheritingrZimport_main_path __import__ ImportErrorrZ _close_stdinrr/ set_blockingrISIGCHLDSIGINTSIG_IGNr; set_wakeup_fdr-r. selectorsZDefaultSelectorZ getsockname _forkserverrregisterZ EVENT_READZselect SystemExitreadr r:ChildProcessErrorpop WIFSIGNALEDWTERMSIG WIFEXITEDAssertionErrorformat WEXITSTATUS write_signedBrokenPipeErrorrwarningswarnZacceptrZrecvfdsr+r* RuntimeErrorforkextendvalues _serve_one Exceptionsys excepthookexc_infostderrflush_exitOSErrorerrnoZ ECONNABORTED)Z listener_fdrCZpreloadr3r4modnameZsig_rZsig_wrHhandlersZ old_handlersZ pid_to_fdrBZselectorZrfdsr>stsr1 returncodesr0r2code unused_fdsfderrrmains                                r~cCsdtdx |D]\}}t||qWx|D]}t|q2W|^t_tj_ t_ t |}|S)NrN) rIrUr;rrrWrrZ_semaphore_trackerZ_fdrr_main)r2r0r{rvrJrKr|rzrrrrk0s   rkcCsRd}tj}x8t||krBt||t|}|s8td||7}q Wt|dS)Nzunexpected EOFr) SIGNED_STRUCTsizer*rrZEOFErrorunpack)r|rAlengthryrrr read_signedFs rcCs@t|}x0|r:t||}|dkr,td||d}q WdS)Nrzshould not get here)rpackrwriterg)r|nmsgnbytesrrrrcPs   rc)NN) rtrrVrIr-structrmrrerrcontextrrrr__all__r+Structrobjectrr~rkrrcrWr r r r rrrrs<