python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_faulthandler.cpython-311.opt-2.pyc

e4yZddlmZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZm
Z
mZmZddlZddlZddlmZ	ddlZn
#e$rdZYnwxYwe
jsejddZdd	Zd
ZedZGdd
ejZedkrejdSdS))contextmanagerN)support)	os_helper
script_helper
is_android
MS_WINDOWS)dedentztest module requires subprocessg?cd|}|d|zz
}|d|zz
}d|krd|dz|dz
zz|zSd|zdzS)Nz#  File "<string>", line %s in func
z&  File "<string>", line %s in <module>r
^
$)lineno1lineno2header	min_countregexs     J/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_faulthandler.pyexpected_tracebackrs\E	
3g
==E	
5
??E9}}edly1}55==U{S  cHtjtd|S)Nz(raising SIGSEGV on Android is unreliable)unittestskipIfr)tests rskip_segfault_on_androidr#s2G8?:EGGGKMMMrc#Ktj}	|Vtj|dS#tj|wxYwN)tempfilemktemprunlinkfilenames rtemporary_filenamer$(sO  H#"""""	""""s	1Ac	eZdZdQdZddddddddddZdRdZd	Zeje	j
d
ddZe
d
Ze
dZdZdZeje	j
dkddZejedudejeedde
dZejedudejeedde
dZdZdZdZeje	j
ddejeed d!d"Ze
d#Ze
d$Zeje	j
dkd%e
d&Z e
d'Z!e
d(Z"e
d)Z#d*Z$e%j&d+Z'e%j&d,Z(e%j&d-Z)ddd.d/Z*d0Z+d1Z,eje	j
dkd%d2Z-d3Z.d4Z/d5Z0d6Z1dSddd.d8Z2d9Z3d:Z4d;Z5d<Z6eje	j
dkd%d=Z7e%j8d>d?Z9ejeed@dA		dTdBZ:dCZ;dDZ<dEZ=eje	j
dkd%dFZ>dGZ?dHZ@eAdIZBdJZCejeDdKdLZEejeDdKdMZFejeDdKdNZGejeDdKdOZHdPZIdS)UFaultHandlerTestsNc.	t|}g}|||ttj}d}t
j||t
j5tj
d|||}|5|\}}	|}
dddn#1swxYwYdddn#1swxYwY|
dd}|ri||dt|d5}|}dddn#1swxYwY|
dd}n|||dt	j|tjdt|dd	
5}|}dddn#1swxYwY|
dd}||
fS)Nz
handle_segv=0-c)pass_fdsenvasciibackslashreplacerbrF)closefd)r	stripappenddictosenvironrset_sanitizer_env_varSuppressCrashReportrspawn_pythoncommunicatewaitdecodeassertEqualopenreadlseekSEEK_SET
splitlines)selfcoder#fdr)r*optionprocessoutputstderrexitcodefps            r
get_outputzFaultHandlerTests.get_output2s	d||!!##
>OOB2:!%c6222

(
*
*	*	*#0t:B58:::G
*
*!(!4!4!6!6"<<>>
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*		*	*	*	*	*	*	*	*	*	*	*	*	*	*	*w(:;;
	@VR(((h%%
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#]]7,>??FF
^VR(((HRa(((b$...
#"
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#]]7,>??F  ""H,,sZ?C),CC)C	C)C	C))C-0C-2EEE?G  G$'G$TFz<module>)r#all_threadsother_regexrCknow_current_threadpy_fatal_errorgarbage_collectingfunctionc	|r|rd}nd}nd}d|g}
|	r|
d|
d|
|d|
r|
d|
d	|d
|d|
}
|r	d|
d
|d}
d|
}
||||\}}d|}|||
||ddS)NzCurrent thread 0x[0-9a-f]+zThread 0x[0-9a-f]+Stackrz!Python runtime state: initializedr-z \(most recent call first\):z  Garbage-collectingz  File "<string>", line z in r
z(?:|)z(?m)r#rCr)r1joinrJassertRegexassertNotEqual)rArBlinenofatal_errorr#rKrLrCrMrNrOrPrrrFrHs                rcheck_errorzFaultHandlerTests.check_error[s_		"
.5-F"[""#	>LL<===
R
===>>>	1LL/000
GGGXGGHHH		%  	10%00+000Eu??4(r?JJ6""'''Ha(((((rcB|r|d|}d|z}|j|||fi|dS)Nz: zFatal Python error: %sr[)rArBline_number
name_regexfunckwrZs       rcheck_fatal_errorz#FaultHandlerTests.check_fatal_errorsI	7%)TT::6J.;{K>>2>>>>>rc0d|z}|j|||fi|dS)NzWindows fatal exception: %sr])rArBr^r_rarZs      rcheck_windows_exceptionz)FaultHandlerTests.check_windows_exceptions13j@{K>>2>>>>>raixz5the first page of memory is a mapped read-only on AIXctts|ddddS|ddddS)Nz
                import faulthandler
                faulthandler.enable()
                faulthandler._read_null()
                z4(?:Segmentation fault|Bus error|Illegal instruction)access violation)rrbrdrAs rtest_read_nullz FaultHandlerTests.test_read_nullsn	$""$
,	
-	
-	
-	
-	
-
((*
"

$
$
$
$
$rc4|ddddS)Nzs
            import faulthandler
            faulthandler.enable()
            faulthandler._sigsegv()
            rgSegmentation faultrbris rtest_sigsegvzFaultHandlerTests.test_sigsegv1 

 
	"	"	"	"	"rc:|ddddddS)Na
            import faulthandler
            import gc
            import sys

            faulthandler.enable()

            class RefCycle:
                def __del__(self):
                    faulthandler._sigsegv()

            # create a reference cycle which triggers a fatal
            # error in a destructor
            a = RefCycle()
            b = RefCycle()
            a.b = b
            b.a = a

            # Delete the objects, not the cycle
            a = None
            b = None

            # Break the reference cycle: call __del__()
            gc.collect()

            # Should not reach this line
            print("exit", file=sys.stderr)
            	rl__del__T)rPrOrmris rtest_gczFaultHandlerTests.test_gcs>	
 8
 #?		%	%	%	%	%rc<|dddddddS)Nz
            import faulthandler
            faulthandler.enable()
            faulthandler._fatal_error_c_thread()
            rgz
in new threadFfaulthandler_fatal_error_threadT)rMr`rNrmris rtest_fatal_error_c_threadz+FaultHandlerTests.test_fatal_error_c_threads? 

 %2			!		!		!		!		!rc4|ddddS)Nzs
            import faulthandler
            faulthandler.enable()
            faulthandler._sigabrt()
            rgAbortedrmris rtest_sigabrtzFaultHandlerTests.test_sigabrts1 


					rwin32z"SIGFPE cannot be caught on Windowsc4|ddddS)Nzr
            import faulthandler
            faulthandler.enable()
            faulthandler._sigfpe()
            rgzFloating point exceptionrmris rtest_sigfpezFaultHandlerTests.test_sigfpes3	
 

&
	(	(	(	(	(rzneed _testcapiSIGBUSzneed signal.SIGBUSc4|ddddS)Nz
            import faulthandler
            import signal

            faulthandler.enable()
            signal.raise_signal(signal.SIGBUS)
            z	Bus errorrmris rtest_sigbuszFaultHandlerTests.test_sigbuss3	
 
					rSIGILLzneed signal.SIGILLc4|ddddS)Nz
            import faulthandler
            import signal

            faulthandler.enable()
            signal.raise_signal(signal.SIGILL)
            rzIllegal instructionrmris rtest_sigillzFaultHandlerTests.test_sigills3	
 
!	#	#	#	#	#rctj5|d|dddddddddS#1swxYwYdS)NzP
                import _testcapi
                _testcapi.fatal_error(b'xyz', )
                xyztest_fatal_errorT)r`rN)rr6rb)rArelease_gils  rcheck_fatal_error_funcz(FaultHandlerTests.check_fatal_error_func
s

(
*
*	%	%""$/:$$$'#
#
%
%
%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%sAAAc0|ddS)NFrris rrz"FaultHandlerTests.test_fatal_errors##E*****rc0|ddS)NTrris rtest_fatal_error_without_gilz.FaultHandlerTests.test_fatal_error_without_gils##D)))))ropenbsdzVIssue #12868: sigaltstack() doesn't work on OpenBSD if Python is compiled with pthread_stack_overflowz#need faulthandler._stack_overflow()c8|dddddS)Nzz
            import faulthandler
            faulthandler.enable()
            faulthandler._stack_overflow()
            rgz (?:Segmentation fault|Bus error)z unable to raise a stack overflow)rLrmris rtest_stack_overflowz%FaultHandlerTests.test_stack_overflows;	
 

.:		<	<	<	<	<rc4|ddddS)Nzw
            import faulthandler
            faulthandler.enable()
            faulthandler._sigsegv(True)
            rgrlrmris rtest_gil_releasedz#FaultHandlerTests.test_gil_released.rorct5}|dt|dd|ddddS#1swxYwYdS)Nz
                import faulthandler
                output = open({filename}, 'wb')
                faulthandler.enable(output)
                faulthandler._sigsegv()
                r"rl)r$rbformatreprrAr#s  rtest_enable_filez"FaultHandlerTests.test_enable_file8s

!
!		#X""$
FDNNF33$!
#
#
#
#		#		#		#		#		#		#		#		#		#		#		#		#		#		#		#		#		#		#s;AAAz.subprocess doesn't support pass_fds on Windowsctjd5}|}|d|zdd|ddddS#1swxYwYdS)Nwb+z
                import faulthandler
                import sys
                faulthandler.enable(%s)
                faulthandler._sigsegv()
                rrlrC)r
TemporaryFilefilenorb)rArIrCs   rtest_enable_fdz FaultHandlerTests.test_enable_fdEs
#E
*
*
	bB""$
$$
#



	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	s1AAAc8|dddddS)Nz
            import faulthandler
            faulthandler.enable(all_threads=False)
            faulthandler._sigsegv()
            rgrlFrKrmris rtest_enable_single_threadz+FaultHandlerTests.test_enable_single_threadUs9 

 						rcd}d}||\}}d|}|||v|d|||ddS)Nz
            import faulthandler
            faulthandler.enable()
            faulthandler.disable()
            faulthandler._sigsegv()
            zFatal Python errorr
z is present in r)rJrV
assertTruerX)rArBnot_expectedrGrHs     rtest_disablezFaultHandlerTests.test_disable`s,??4006""F2.:llFFC	E	E	EHa(((((rcd}||\}}d|}tjd|tj}|s|d|t
|d	d}dD]}|
||dS)Nz
            import faulthandler
            import sys
            # Don't filter stdlib module names
            sys.stdlib_module_names = frozenset()
            faulthandler.enable()
            faulthandler._sigsegv()
            r
z*^Extension modules:(.*) \(total: [0-9]+\)$z$Cannot find 'Extension modules:' in r
z, )sysfaulthandler)rJrVresearch	MULTILINEfailsetgroupr0splitassertIn)rArBrGrHmatchmodulesnames       rtest_dump_ext_modulesz'FaultHandlerTests.test_dump_ext_modulesos ??4006""	G ",00	IIIGVGGHHHekk!nn**,,2248899+	)	)DMM$((((	)	)rcBtj}	tjt_tj}	tj|tjtj|tj|rtjnBtjn.#|rtjwtjwxYw|t_dS#|t_wxYwr)	rrG
__stderr__r
is_enabledenablerdisableassertFalse)rAorig_stderrwas_enableds   rtest_is_enabledz!FaultHandlerTests.test_is_enabledsj	%CJ&133K	
+#%%% 7 9 9:::$&&&  !8!:!:;;;+ ')))) (****+ ')))) (****$CJJJCJ$$$$s#)DA2C**D+C??DDcd}tjdd|f}tj|}||ddS)N5import faulthandler; print(faulthandler.is_enabled())-Er(False)r
executable
subprocesscheck_outputr;rstrip)rArBargsrFs    rtest_disabled_by_defaultz*FaultHandlerTests.test_disabled_by_defaultsNGdD1(..(33333rc	Td}tdtjtjjrdndddd|f}t
j}|ddtj
||}||d	dS)
Nrrr-z-Xrr(PYTHONFAULTHANDLERr*True)
filterrrflagsignore_environmentr3r4copypoprrr;rrArBrr*rFs     rtest_sys_xoptionsz#FaultHandlerTests.test_sys_xoptionssGdS^%(Y%AITTr!>4?@@joo$d+++(3777'22222rcd}tjd|f}ttj}d|d<d|d<tj||}||dttj}d|d<d|d<tj||}||d	dS)
Nrr(r-r
PYTHONDEVMODErr1r)	rrr2r3r4rrr;rrs     rtest_env_varzFaultHandlerTests.test_env_varsGd+2:$& !!O(3777(3332:$' !!O(3777'22222rrUc	d}|||}|rd}n|d}nd}dd|zdd	g}||||\}}|||||d
dS)Na[
            import faulthandler

            filename = {filename!r}
            fd = {fd}

            def funcB():
                if filename:
                    with open(filename, "wb") as fp:
                        faulthandler.dump_traceback(fp, all_threads=False)
                elif fd is not None:
                    faulthandler.dump_traceback(fd,
                                                all_threads=False)
                else:
                    faulthandler.dump_traceback(all_threads=False)

            def funcA():
                funcB()

            funcA()
            rUrqStack (most recent call first):z#  File "<string>", line %s in funcBz#  File "<string>", line 17 in funcAz&  File "<string>", line 19 in <module>rrrJr;)rAr#rCrBrYexpectedtracerHs        rcheck_dump_tracebackz&FaultHandlerTests.check_dump_tracebacks	*{{

	FF
^FFF-1F:14	
//$"==x)))1%%%%%rc.|dSr)rris rtest_dump_tracebackz%FaultHandlerTests.test_dump_tracebacks!!#####rct5}||ddddS#1swxYwYdSNr")r$rrs  rtest_dump_traceback_filez*FaultHandlerTests.test_dump_traceback_files

!
!	9X%%x%888	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9377ctjd5}||ddddS#1swxYwYdSNrr)rrrrrArIs  rtest_dump_traceback_fdz(FaultHandlerTests.test_dump_traceback_fds
#E
*
*	6b%%%555	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6)AAAcd}d|dzz}d|zdz}d}||}dd|zd	g}||\}}|||||d
dS)Nix2z...z
            import faulthandler

            def {func_name}():
                faulthandler.dump_traceback(all_threads=False)

            {func_name}()
            )	func_namerz  File "<string>", line 4 in %sz%  File "<string>", line 6 in <module>rr)rAmaxlenr	truncatedrBrrrHs        r
test_truncatezFaultHandlerTests.test_truncates6B;'	&L5(	{{


.-	93

//$//x)))1%%%%%rc	d}|t|}|||\}}d|}|rd}nd}d}t	||}|||||ddS)	Na
            import faulthandler
            from threading import Thread, Event
            import time

            def dump():
                if {filename}:
                    with open({filename}, "wb") as fp:
                        faulthandler.dump_traceback(fp, all_threads=True)
                else:
                    faulthandler.dump_traceback(all_threads=True)

            class Waiter(Thread):
                # avoid blocking if the main thread raises an exception.
                daemon = True

                def __init__(self):
                    Thread.__init__(self)
                    self.running = Event()
                    self.stop = Event()

                def run(self):
                    self.running.set()
                    self.stop.wait()

            waiter = Waiter()
            waiter.start()
            waiter.running.wait()
            dump()
            waiter.stop.set()
            waiter.join()
            r"r

a
            ^Thread 0x[0-9a-f]+ \(most recent call first\):
            (?:  File ".*threading.py", line [0-9]+ in [_a-z]+
            ){{1,3}}  File "<string>", line 23 in run
              File ".*threading.py", line [0-9]+ in _bootstrap_inner
              File ".*threading.py", line [0-9]+ in _bootstrap

            Current thread 0x[0-9a-f]+ \(most recent call first\):
              File "<string>", line {lineno} in dump
              File "<string>", line 28 in <module>$
            )rYr)rrrJrVr	r0rWr;)rAr#rBrFrHrYrs       rcheck_dump_traceback_threadsz.FaultHandlerTests.check_dump_traceback_threadss	@{{DNN{33??4::6""	FFF
u||6|223399;;'''1%%%%%rc0|ddSr)rris rtest_dump_traceback_threadsz-FaultHandlerTests.test_dump_traceback_threadsPs))$/////rc~t5}||ddddS#1swxYwYdSr)r$rrs  r test_dump_traceback_threads_filez2FaultHandlerTests.test_dump_traceback_threads_fileSs

!
!	8X--h777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8s266r
c	ttjt}d}|t|||||}|||\}}	d|}|s8|}
|r|
dz}
d|z}tdd||
	}|||n|	|d
|	|	ddS)N)secondsa
            import faulthandler
            import time
            import sys

            timeout = {timeout}
            repeat = {repeat}
            cancel = {cancel}
            loops = {loops}
            filename = {filename!r}
            fd = {fd}

            def func(timeout, repeat, cancel, file, loops):
                for loop in range(loops):
                    faulthandler.dump_traceback_later(timeout, repeat=repeat, file=file)
                    if cancel:
                        faulthandler.cancel_dump_traceback_later()
                    time.sleep(timeout * 5)
                    faulthandler.cancel_dump_traceback_later()

            if filename:
                file = open(filename, "wb")
            elif fd is not None:
                file = sys.stderr.fileno()
            else:
                file = None
            func(timeout, repeat, cancel, file, loops)
            if filename:
                file.close()
            )timeoutrepeatcancelloopsr#rCr
rzATimeout \(%s\)!\nThread 0x[0-9a-f]+ \(most recent call first\):\n)rr-r)
strdatetime	timedeltaTIMEOUTrrJrVrrWr;)
rArrrr#rCtimeout_strrBrrHcountrrs
             rcheck_dump_traceback_laterz,FaultHandlerTests.check_dump_traceback_laterWs	(,W===>><{{


//$99x		%  	(E

Y\ggF&r2vGGGEUE****UB'''1%%%%%rc.|dSrr	ris rtest_dump_traceback_laterz+FaultHandlerTests.test_dump_traceback_laters'')))))rc2|ddS)NT)rrris r test_dump_traceback_later_repeatz2FaultHandlerTests.test_dump_traceback_later_repeat''t'44444rc2|ddS)NT)rrris r test_dump_traceback_later_cancelz2FaultHandlerTests.test_dump_traceback_later_cancelrrct5}||ddddS#1swxYwYdSr)r$r	rs  rtest_dump_traceback_later_filez0FaultHandlerTests.test_dump_traceback_later_files

!
!	?X++X+>>>	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?rctjd5}||ddddS#1swxYwYdSr)rrr	rrs  rtest_dump_traceback_later_fdz.FaultHandlerTests.test_dump_traceback_later_fds
#E
*
*	<b++ryy{{+;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<rwalltimec2|ddS)Nr)rrris rtest_dump_traceback_later_twicez1FaultHandlerTests.test_dump_traceback_later_twices''a'00000rregisterzneed faulthandler.registerc	tj}d}|||||||}|||\}}	d|}|s/|rd}
nd}
tdd|
}
|||
n||d|r||	d	dS||	d	dS)
Naz
            import faulthandler
            import os
            import signal
            import sys

            all_threads = {all_threads}
            signum = {signum:d}
            unregister = {unregister}
            chain = {chain}
            filename = {filename!r}
            fd = {fd}

            def func(signum):
                os.kill(os.getpid(), signum)

            def handler(signum, frame):
                handler.called = True
            handler.called = False

            if filename:
                file = open(filename, "wb")
            elif fd is not None:
                file = sys.stderr.fileno()
            else:
                file = None
            if chain:
                signal.signal(signum, handler)
            faulthandler.register(signum, file=file,
                                  all_threads=all_threads, chain={chain})
            if unregister:
                faulthandler.unregister(signum)
            func(signum)
            if chain and not handler.called:
                if file is not None:
                    output = file
                else:
                    output = sys.stderr
                print("Error: signal handler not called!", file=output)
                exitcode = 1
            else:
                exitcode = 0
            if filename:
                file.close()
            sys.exit(exitcode)
            )rKsignum
unregisterchainr#rCr
z8Current thread 0x[0-9a-f]+ \(most recent call first\):\nz#Stack \(most recent call first\):\nr r-r)	signalSIGUSR1rrJrVrrWr;rX)rAr#rKrrrCrrBrrHrs           rcheck_registerz FaultHandlerTests.check_registers
	-\{{#!


//$99x		%  	(
?S>&r2u55EUE****UB'''	*!,,,,,Xq)))))rc.|dSrr!ris r
test_registerzFaultHandlerTests.test_registersrc2|ddS)NT)rr#ris rtest_unregisterz!FaultHandlerTests.test_unregisterst,,,,,rct5}||ddddS#1swxYwYdSr)r$r!rs  rtest_register_filez$FaultHandlerTests.test_register_files

!
!	3X222	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3rctjd5}||ddddS#1swxYwYdSr)rrr!rrs  rtest_register_fdz"FaultHandlerTests.test_register_fd	s
#E
*
*	0b299;;///	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0rc2|ddS)NTrr#ris rtest_register_threadsz'FaultHandlerTests.test_register_threadss-----rc2|ddS)NT)rr#ris rtest_register_chainz%FaultHandlerTests.test_register_chains$'''''rc#2Ktj}	dt_|t5}dVdddn#1swxYwY|t|jd|t_dS#|t_wxYw)Nzsys.stderr is None)rrGassertRaisesRuntimeErrorr;r	exception)rArGcms   rcheck_stderr_nonez#FaultHandlerTests.check_stderr_nones	 CJ""<00
B














S..0DEEECJJJCJs-&BABABA+BBcF|5tjdddn#1swxYwY|5tjdddn#1swxYwY|5tjddddn#1swxYwYttdrM|5tjtjddddS#1swxYwYdSdS)NgMbP?r)	r4rrdump_tracebackdump_traceback_laterhasattrrrr ris rtest_stderr_Nonez"FaultHandlerTests.test_stderr_None s

#
#
%
%	"	"!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"

#
#
%
%	*	*')))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*

#
#
%
%	4	4-d333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4<,,	6''))
6
6%fn555
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6	6	6sB599A44A8;A8B44B8;B8(DDDzspecific to WindowscLdD] \}}|d|dd|!dS)N))EXCEPTION_ACCESS_VIOLATIONrh)EXCEPTION_INT_DIVIDE_BY_ZEROzint divide by zero)EXCEPTION_STACK_OVERFLOWzstack overflowz
                import faulthandler
                faulthandler.enable()
                faulthandler._raise_exception(faulthandler._rrg)rd)rAexcrs   rtest_raise_exceptionz&FaultHandlerTests.test_raise_exception-sb
		IC

((*>A***





		rcdD][}d|d}t|}||\}}||g|||\dS)N)lcs@lRC@z
                    import faulthandler
                    faulthandler.enable()
                    faulthandler._raise_exception(z)
                    r	rJr;)rAexc_coderBrFrHs     rtest_ignore_exceptionz'FaultHandlerTests.test_ignore_exception<s
	1	1H4<D
$<<D#t44FHVR(((Xx0000	1	1rcdD]P}|d|dd\}}||g||||dzfQdS)N)rixV4i@i@ipiz{
                import faulthandler
                faulthandler.enable()
                faulthandler._raise_exception(0xrri)rJr;r)rAr>rFrHs    rtest_raise_nonfatal_exceptionz/FaultHandlerTests.test_raise_nonfatal_exceptionLs
	4	4C $0250000  FH
VR(((
MM(k 12
4
4
4
4#	4	4rctd}||\}}||g||ddS)Nz
            import faulthandler
            faulthandler.enable()
            faulthandler.disable()
            code = faulthandler._EXCEPTION_ACCESS_VIOLATION
            faulthandler._raise_exception(code)
        lrArArBrFrHs    r test_disable_windows_exc_handlerz2FaultHandlerTests.test_disable_windows_exc_handlerhs`

 ??400$$$:.....rctd}||\}}||g||ddS)Nz`
            import faulthandler
            faulthandler.cancel_dump_traceback_later()
        rrArGs    r.test_cancel_later_without_dump_traceback_laterz@FaultHandlerTests.test_cancel_later_without_dump_traceback_laterusb

 ??400$$$1%%%%%r)NNr)FFr
)FFFFN)J__name__
__module____qualname__rJr[rbrdrrrplatform
startswithrjrrnrsrvryr|	_testcapi
skipUnlessr8rrrrrrrrrrrrrrrrrequires_subprocessrrrrrrrrrrrr	rrrrrrequires_resourcerr!r$r&r(r*r,r.rr4r9rr?rCrErHrJrrrr&r&0sR'-'-'-'-T"t#(','%)%)%)%)%)N???????X_S\,,U33LNN$$NN$*"""!%!%!%F
!
!
!X_S\W,9;;((;;(X_Y$&(899X224HII		JI:9	X_Y$&(899X224HII	#	#JI:9	#
%
%
%+++***X_S\,,Y77BCCX_/@AAA:<<<<<<CC
<"""
#
#
#X_S\W,EGGGG))))))&%%%,!W ""44#"4!W ""
3
3#"
3!W ""33#"3$04,&,&,&,&,&\$$$999X_S\W,EGG66GG6&&&09&9&9&v000888<&/3<&<&<&<&<&|***555555???X_S\W,EGG<<GG<Wz**11+*1X_z:::1339>9=O*O*O*33O*b---333X_S\W,EGG00GG0...(((  ^ 666X%:;;<;X%:;;
1
1<;
1X%:;;44<;46X%:;;
/
/<;
/	&	&	&	&	&rr&__main__)r
) 
contextlibrrrr3rrrrrrtest.supportrrrrrrtextwrapr	rPImportErrorhas_subprocess_supportSkipTestrrrr$TestCaser&rKmainrrr<module>r]s%%%%%%								







IIIIIIIIIIIIIII%?
(
=
>
>>

!!!!MMM
###N
&N
&N
&N
&N
&)N
&N
&N
&bzHMOOOOOsA		AA