KWmddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z  dd lmZn#e$r ddlZd ZYnwxYwd e d efd ZdZdZdS)N) isabstract)Any)support) os_helper) HuntRefleak) clear_caches) _get_dumpchtd|jD}||j|j|jfS)Nc3>K|]}tj|VdSN)weakrefref).0objs ?/opt/alt/python311/lib64/python3.11/test/libregrtest/refleak.py z_get_dump..s,NNS C 0 0NNNNNN)set _abc_registry _abc_cache_abc_negative_cache_abc_negative_cache_version)clsregistry_weakrefss rr r sB NNC')HJ Jr hunt_refleakquietc ./ddl}ddl.ttdst dt t jdd}|j }tj } ddl }|j } n#t$rd} YnwxYwi} .fd.jjDD]E} t!| s| | gzD]} t%| d| | <Fdt'ddD//fd } |j}|j}|j}||z}t/t'|}dg|z}dg|z}dg|z}tj}tj}t4j}dx}x}}|sdt9d |d tj d |dzdzzd|}|d|dz||dz}t9|tjdd}t=|||| | t?j |D] }|}t=|||| | t?j |}|} |}!| | |z ||<| ||z ||<| |!|z ||<|stC||||||}"|"dkrd}#n|"dkr d|"}#nd}#||krt9ddtjdt9|#dtjd~"~#|}| }|!} |st9tj d}$d}%d}&|d|$f|d|$f|d|%ffD]\}'}(})|'|d}'|)|'}*tE|'}+|*s|+r|d|'d|(d tG|'},t9|,dtj!|*rmt9tjdtI|d"d#$5}-t9|,|- |-%dddn #1swxYwYd}&t9d%tjd|&|fS)&zRun a test multiple times, looking for reference leaks. Returns: False if the test didn't leak references; True if we detected refleaks. rNgettotalrefcountz9Tracking reference leaks requires a debug build of Pythonc:g|]}tj|Sgetattrabcra collectionss r z#runtest_refleak..:s%MMM ++MMMrci|]}||Sr!r!)rvalues r z#runtest_refleak..Ds===u===riic0||Sr ) setdefault)r*int_pools rget_pooled_intz'runtest_refleak..get_pooled_intEs""5%000r beginningzHrepetitions. Showing number of leaks (. for 0 or less, X for 10 or more))file 1234567890 r:T)r1flush.) r6123456789X )endr1r5c4td|DS)Nc3"K|] }|dkV dS)rNr!)rdeltas rrz;runtest_refleak..check_rc_deltas..s&22%5A:222222r)alldeltass rcheck_rc_deltasz(runtest_refleak..check_rc_deltass!226222222rc t|Sr )anyrHs rcheck_fd_deltasz(runtest_refleak..check_fd_deltass6{{rF referencesz memory blockszfile descriptorsz leaked z, sum=)rCr1r&zutf-8)encodingz (this is fine))&copyregcollections.abchasattrsys Exception warm_cacheswarningsfiltersdispatch_tablecopypath_importer_cache zipimport_zip_directory_cache ImportErrorr$__all__r__subclasses__r rangewarmupsrunsfilenamelistgetallocatedblocksrrfd_countprintstderrdash_R_cleanupr gc_collectmaxrLsumopenr5)0 test_name test_funcrrrPfspspicr[zdcabcsr$rr/rarbrcrepcount rep_range rc_deltas alloc_deltas fd_deltasrerrf rc_before alloc_before fd_beforenumbersresultsi alloc_afterrc_afterfd_after total_leakssymbolrJrMfailedrI item_namecheckerfailing suspiciousmsgrefrepr'r.s0 @@rruntest_refleakrsNNN 3* + +%$%% % MMM  !!! B   $ $ & &B ! & & ( (C4 ,1133  DMMMM[_5LMMM**#  %%''3%/ * *C!#q)DII *>=%t*<*<===H11111"G  D$H~HU8__%%IhI3>LhI/+!H+,,I, y 4 k8&6:     2!12IXI>(7(#c)GGHH,== gCJd3333G2r3T***  "")++r2sC...)(** ##%%8::%~h&:;; ! (.|)CDD Q%~h&:;; !  ilLOYq\JJKar!!!#G||cr $???? &bsz > > > >"    3: 3 3 3F L/2 8 &8'FF" 7 !'&//[[  Fj F 666999c&kkk;C #2CJ / / / / F3:T2222(C':::#f#F++++LLNNN###############'cjEEEE G s$ B'' B65B6 &P>>Q Q cH ddl}ddl |tjdd<|j|j|tjtj| ddl }|j |j |n#t$rYnwxYw fd j j D}tt|}|D]}}||gzD]b} || t%D])} | | | *| c~t+tjdS)Nrc:g|]}tj|Sr!r"r%s rr(z"dash_R_cleanup..s%PPP17;?A..PPPr)rPrQrVrWrXclearupdaterSrZr[r\r]r$r^filterrr_getrregister_abc_caches_clearr _clear_type_cache) rprqrrrsrtrPr[ abs_classesr$rrr's @rririsNNNHQQQ   """ !!"%%%!!###""3'''3 &,,...&--c2222      QPPP 8OPPPK[11K$$%%''3%/ $ $CxxSUU++ ( (355$LL'''  ! ! # # # #  $NNNs C CCcttd}tdD]}|||dzdtdDttdddS)Nrc,g|]}t|Sr!)chr)rrs rr(zwarm_caches..s   SVV   ri)bytesr`rd)srs rrUrUss eCjjA 3ZZ !AaC%  U3ZZ    r3r)rSrVinspectrtypingrtestr test.supportrruntestsrutilsr _abcr r]rboolrrirUr!rrrs8 """"""!!!!!! JJJJNNNJJJJJJ["-[[[[[|!!!Hs5 AA