python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_faulthandler.cpython-311.opt-1.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|tjd	t|dd
5}|}dddn#1swxYwY|
dd}||
fS)a{
        Run the specified code in Python (in a new child process) and read the
        output from the standard error or from a file (if filename is set).
        Return the output lines as a list.

        Strip the reference count from the standard error for Python debug
        build, and replace "Current thread 0x00007f8d8fbd9700" by "Current
        thread XXX".
        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_output2sd||!!##
>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,/C,1EEE>GG#&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)z
        Check that the fault handler for fatal errors is enabled and check the
        traceback from the child process output.

        Raise an error if the output doesn't match the expected format.
        zCurrent 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#rCrN)r1joinrJassertRegexassertNotEqual)rArBlinenofatal_errorr#rKrLrCrMrNrOrPrrrFrHs                rcheck_errorzFaultHandlerTests.check_error[sZ	"
.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'22222rrUcd}|||}|rd}n|d}nd}dd|zd	d
g}||||\}}|||||ddS)z
        Explicitly call dump_traceback() function and check its output.
        Raise an error if the output doesn't match the expected format.
        a[
            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()
            rUrqNStack (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%%%%%rcd}|t|}|||\}}d|}|rd}nd}d}t	||}|||||dd	S)
z
        Call explicitly dump_traceback(all_threads=True) and check the output.
        Raise an error if the output doesn't match the expected format.
        a
            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>$
            )rYrN)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
cttjt}d}|t|||||}|||\}}	d|}|s8|}
|r|
dz}
d|z}tdd||
	}|||n|	|d
|	|	ddS)
a
        Check how many times the traceback is written in timeout x 2.5 seconds,
        or timeout x 3.5 seconds if cancel is True: 1, 2 or 3 times depending
        on repeat and cancel options.

        Raise an error if the output doesn't match the expect format.
        )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-rN)
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.registerctj}d}|||||||}|||\}}	d|}|s/|rd}
nd}
tdd|
}
|||
n||d|r||	d	d
S||	d	d
S)a
        Register a handler displaying the traceback on a user signal. Raise the
        signal and check the written traceback.

        If chain is True, check that the previous signal handler is called.

        Raise an error if the output doesn't match the expected format.
        az
            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-rN)	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