+
     Bi.                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^RIHt ^RIHt . ROt]	! ]R4      t
]P                  ]P                  3tR tR]RR /t] P                   R	8X  d6   ^ RIt^ RIt]	! ]R
4      '       d   ]P&                  ]R&   ]P(                  ]R&    ! R R]4      t ! R R]4      t]! 4       t]P4                  t]P6                  t]P8                  t]P:                  tR tR# )    N)spawn)utilpthread_sigmaskc                     \        R 4      h)z-noop should never be registered or cleaned up)RuntimeErrornames   &7/usr/lib/python3.14/multiprocessing/resource_tracker.pycleanup_noopr       s    
F
GG    noopdummyc                     R # N r   s   &r
   <lambda>r   %   s    $r   posix
sem_unlink	semaphoreshared_memoryc                       ] tR t^6tRtR# )ReentrantCallErrorr   N)__name__
__module____qualname____firstlineno____static_attributes__r   r   r
   r   r   6   s    r   r   c                      a  ] tR t^:t o R tR tR tRR lt]P                  ]P                  ]P                  3R ltR tR tR tR	 tR
 tR tRtV tR# )ResourceTrackerc                d    \         P                  ! 4       V n        R V n        R V n        R V n        R # r   )	threadingRLock_lock_fd_pid	_exitcodeselfs   &r
   __init__ResourceTracker.__init__<   s%    __&
	r   c                    \        R 4      h)z8Reentrant call into the multiprocessing resource tracker)r   r'   s   &r
   _reentrant_call_error%ResourceTracker._reentrant_call_errorB   s    
 !FH 	Hr   c                *    V P                  R R7       R# )F)use_blocking_lockN)_stopr'   s   &r
   __del__ResourceTracker.__del__J   s     	

U
+r   c                   V'       d0   V P                   ;_uu_ 4        V P                  4        R R R 4       R # V P                   P                  RR7      p V P                  4        V'       d   V P                   P                  4        R # R #   + '       g   i     R # ; i  T'       d   T P                   P                  4        i i ; i)NF)blocking)r#   _stop_lockedacquirerelease)r(   r/   acquireds   && r
   r0   ResourceTracker._stopP   s    !!#  zz))5)9H)!!#JJ&&(   JJ&&( s   BB B	%Cc                \   V P                   P                  4       ^8  d   V P                  4       # V P                  f   R# V P                  f   R# V! V P                  4       RV n        V! V P                  ^ 4      w  rERV n         V! V4      V n        R#   \         d    RT n         R# i ; i)   N)r#   _recursion_countr,   r$   r%   r&   
ValueError)r(   closewaitpidwaitstatus_to_exitcode_statuss   &&&&  r
   r5   ResourceTracker._stop_locked\   s     ::&&(1,--//8899 	dhhDIIq)			"3F;DN 	"!DN	"s   B B+*B+c                :    V P                  4        V P                  # r   )ensure_runningr$   r'   s   &r
   getfdResourceTracker.getfdz   s    xxr   c                   V P                   ;_uu_ 4        V P                   P                  4       ^8  d   V P                  4       uuRRR4       # V P                  e   V P	                  4       '       d    RRR4       R# \
        P                  ! V P                  4        V P                  e"   \
        P                  ! V P                  ^ 4       RT n        RT n        RT n
        \        P                  ! R4       . p VP                  \        P                  P!                  4       4       Rp\
        P$                  ! 4       w  r4 VP                  V4       \&        P(                  ! 4       pV.\*        P,                  ! 4       ,           pVRW#,          .,          pRp \.        '       d*   \0        P2                  ! \0        P4                  \6        4      p\*        P8                  ! WVV4      pVe&   \0        P2                  ! \0        P:                  V4       Y@n        Yn         \
        P                  ! T4        RRR4       R#   \         d     EL}i ; i  \"         d     EL4i ; i  Te'   \0        P2                  ! \0        P:                  T4       i i ; i   \
        P                  ! T4       h ; i  \
        P                  ! T4       i ; i  + '       g   i     R# ; i)zMake 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.NzUresource_tracker: process died unexpectedly, relaunching.  Some resources might leak.z:from multiprocessing.resource_tracker import main;main(%d)z-c)r#   r<   r,   r$   _check_aliveosr>   r%   r?   ChildProcessErrorr&   warningswarnappendsysstderrfileno	Exceptionpiper   get_executabler   _args_from_interpreter_flags_HAVE_SIGMASKsignalr   	SIG_BLOCK_IGNORED_SIGNALSspawnv_passfdsSIG_SETMASK)	r(   fds_to_passcmdrwexeargsprev_sigmaskpids	   &        r
   rE   ResourceTracker.ensure_running~   s+   
 ZZZzz**,q0113 Z xx#$$&& Z " yy,

499a0   	!% I J K""3::#4#4#67 OC779DA""1%**,ut@@BBsw'  $Q$}'-'='=f>N>NP`'a--cEC#/..v/A/A<P
 	} Z$ )   , $/..v/A/A<P 0
 } ZZs   /K#K3K> K/H=-K<-I)KAJAI!&)JJ,K=IKIKIKIK!,JJJ))J,,KKK	c                n     \         P                  ! V P                  R4       R#   \         d     R# i ; i)z;Check that the pipe has not been closed by sending a probe.s   PROBE:0:noop
TF)rJ   writer$   OSErrorr'   s   &r
   rI   ResourceTracker._check_alive   s5    	 HHTXX01   		s   !% 44c                *    V P                  RW4       R# )z0Register name of resource with resource tracker.REGISTERN_sendr(   r	   rtypes   &&&r
   registerResourceTracker.register   s    

:t+r   c                *    V P                  RW4       R# )z2Unregister name of resource with resource tracker.
UNREGISTERNrk   rm   s   &&&r
   
unregisterResourceTracker.unregister   s    

<-r   c                @    V P                  4        RP	                  WV4      P                  R4      p\        V4      R8  d   \        R4      h\        P                  ! V P                  V4      pR#   \         d"    \        P                  ! R T RT: R24        Li ; i)zSResourceTracker called reentrantly for resource cleanup, which is unsupported. The z object z might leak.z{0}:{1}:{2}
asciii   zmsg too longN)rE   r   rL   rM   formatencodelenr=   rJ   rf   r$   )r(   r]   r	   rn   msgnbytess   &&&&  r
   rl   ResourceTracker._send   s    
	<! $$S6==gFs8c> ^,,$((C( " 	<
 MMgXdX\;<	<s   A1 1)BB)r&   r$   r#   r%   N)T)r   r   r   r   r)   r,   r1   r0   rJ   r>   r?   r@   r5   rF   rE   rI   ro   rs   rl   r   __classdictcell__)__classdict__s   @r
   r   r   :   s]     H,
) hh

!88	"<CJ	,. r   r   c                   \         P                   ! \         P                  \         P                  4       \         P                   ! \         P                  \         P                  4       \        '       d*   \         P
                  ! \         P                  \        4       \        P                  \        P                  3 F  p VP                  4        K  	  \        P                  4        Uu/ uF  q"\        4       bK  	  pp^ p \!        V R4      ;_uu_ 4       pV F  p VP#                  4       P%                  R4      P'                  R4      w  rgp\        P)                  VR4      pVf   \+        RV RV 24      hVR8X  d   W2,          P-                  V4       K  VR8X  d   W2,          P/                  V4       K  VR	8X  d   K  \1        R
V,          4      h	  RRR4       VP7                  4        F_  w  r)V	'       d5    ^pVR8X  d   M)\8        P:                  ! R\=        V	4       RV RV	 24        V	 F  p  \        V,          ! V4       K  	  Ka  	  \        P>                  ! V4       R#   \         d     EK  i ; iu upi   \         d:    ^p \        P2                  ! \        P4                  ! 4       !    EK       EK  ; ii ; i  + '       g   i     L; i  \         d     Li ; i  \         d+   p
^p\8        P:                  ! RT: RT
: 24        Rp
?
LRp
?
ii ; i  i ; i  TP7                  4        F  w  r)T	'       dF    ^pTR8X  d   M:\8        P:                  ! R\=        T	4       RT RT	 24       M  \         d     Mi ; iT	 FV  p  \        T,          ! T4       M8  \         d+   p
^p\8        P:                  ! RT: RT
: 24        Rp
?
MRp
?
ii ; iKS    i ; i	  K  	  \        P>                  ! T4       i ; i)zRun resource tracker.rbrv   :NzCannot register z. for automatic cleanup: unknown resource type rj   rr   PROBEzunrecognized command %rr   z%resource_tracker: There appear to be z leaked z" objects to clean up at shutdown: zresource_tracker: z: ) rW   SIGINTSIG_IGNSIGTERMrV   r   SIG_UNBLOCKrY   rO   stdinstdoutr>   rR   _CLEANUP_FUNCSkeyssetopenstripdecodesplitgetr=   addremover   
excepthookexc_infoitemsrL   rM   ry   exit)fdfrn   cache	exit_codeliner]   r	   cleanup_funcrtype_cachees   &          r
   mainr      s}    MM&--0
MM&..&..1}v113CDii$	GGI % (6':':'<='<eCE\'<E=I9"d^^q'+zz|':':7'C'I'I#'N$Cu#1#5#5eT#BL#+(.tf 555:G=> > j(((.,++D1*+Ds+JKK!  4 #(++-E !I'  C";/0 @55@MC $N&u-d3
  $! #0: 	  		 >. !  !I7% ^P !  % N$%	 D!&LMMN 7 #(++-E !I'  C";/0 @55@MC
 ! #N&u-d3$ N$%	 D!&LMMN D $! #0: 	sK   I)*I<L) KA:JKJ7K9J KJKL) <	K(K6K,)I98I9K	'J:6K:K<K	=KK	KK	L) K)(K),L!7 LL$L!!L$$L&)P	M;P(M;:P;N		PN			PN'&O!'O2 OO!OO!P!O## P)rE   ro   rs   )rJ   rW   rO   r!   rL    r   r   __all__hasattrrV   r   r   rY   r   r   r	   _multiprocessing_posixshmemr   
shm_unlinkr   r   objectr   _resource_trackerrE   ro   rs   rF   r   r   r   r
   <module>r      s   $ 
  
    
6 12MM6>>2 H L
 77g ..&6&A&A{#&1&<&<N?#	 	of od $% "11%%))
Jr   