Your IP : 216.73.216.213


Current Path : /opt/alt/python33/lib64/python3.3/test/__pycache__/
Upload File :
Current File : //opt/alt/python33/lib64/python3.3/test/__pycache__/test_faulthandler.cpython-33.pyc

�
��f�Fc@s�ddlmZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZddlm
Z
ddlZddlZyddlZeZWnek
r�eZYnXdZy ddlmZmZmZWnek
reZYn
Xdd�Zd	d
d�Zedd
��ZGdd�dej�Z dd�Z!e"dkr|e!�ndS(i(ucontextmanagerN(usupportu
script_helper(uassert_python_okg�?(u	setrlimituRLIMIT_COREuerrorcCs0yttd�Wnttfk
r+YnXdS(Ni(ii(u	setrlimituRLIMIT_COREu
ValueErroruresource_error(((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyuprepare_subprocesssuprepare_subprocessicCsV|}|d|7}|d|7}d|krFd|d|d|Sd|dSdS(Nu#  File "<string>", line %s in func
u&  File "<string>", line %s in <module>iu^u
u$((ulineno1ulineno2uheaderu	min_counturegex((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyuexpected_traceback"suexpected_tracebackccs*tj�}z	|VWdtj|�XdS(N(utempfileumktempusupportuunlink(ufilename((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutemporary_filename+s	utemporary_filenamecBs�|EeZdZd\dd�Zd\d]d\dd�Zeje	j
jd�d�dd��Zd	d
�Z
dd�Zeje	j
d
kd�dd��Zejeed�d�dd��Zejeed�d�dd��Zdd�Zeje	j
jd�oed�ejeed�d�dd ���Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Z d5d6�Z!ejed7�d8d9��Z"d:d;�Z#d<d=�Z$d>d?�Z%ejeed@�dA�d^d^d^d^dBdC��Z'dDdE�Z(dFdG�Z)dHdI�Z*dJdK�Z+dLdM�Z,ejeedN�dO�d^d^d^d^dPdQ��Z-dRdS�Z.dTdU�Z/dVdW�Z0dXdY�Z1dZd[�Z2d\S(_uFaultHandlerTestsc

Cs�i}trt|d<ntjd||�}|j�\}}|j�}tj|�}|jdd�}|r�|j|d�t	|d��}	|	j
�}WdQX|jdd�}ntjdd	|�}|j
�|fS(
u{
        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".
        u
preexec_fnu-cuasciiubackslashreplaceuurbNuCurrent thread 0x[0-9a-f]+uCurrent thread XXX(uprepare_subprocessu
script_helperuspawn_pythonucommunicateuwaitusupportustrip_python_stderrudecodeuassertEqualuopenureadureusubu
splitlines(
uselfucodeufilenameuoptionsuprocessustdoutustderruexitcodeuoutputufp((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyu
get_output4s"

		uFaultHandlerTests.get_outputc
Cs�|rd}nd}dj�}|jd|d|dtj|��}|r_|d|7}ntj��|j||�\}	}
WdQXd	j|	�}	|j|	|�|j	|
d
�dS(u�
        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.
        uCurrent thread XXXu"Traceback (most recent call first)uU
^Fatal Python error: {name}

{header}:
  File "<string>", line {lineno} in <module>
ulinenounameuheaderu|Nu
i(
ustripuformatureuescapeusupportusuppress_crash_popupu
get_outputujoinuassertRegexuassertNotEqual(uselfucodeuline_numberu
name_regexufilenameuall_threadsuother_regexuheaderuregexuoutputuexitcode((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyucheck_fatal_errorPs		
u#FaultHandlerTests.check_fatal_erroruaixu5the first page of memory is a mapped read-only on AIXcCs|jdj�dd�dS(NuE
import faulthandler
faulthandler.enable()
faulthandler._read_null()
iu4(?:Segmentation fault|Bus error|Illegal instruction)(ucheck_fatal_errorustrip(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_read_nullns	u FaultHandlerTests.test_read_nullcCs|jdj�dd�dS(NuC
import faulthandler
faulthandler.enable()
faulthandler._sigsegv()
iuSegmentation fault(ucheck_fatal_errorustrip(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_sigsegvzs	uFaultHandlerTests.test_sigsegvcCs|jdj�dd�dS(NuC
import faulthandler
faulthandler.enable()
faulthandler._sigabrt()
iuAborted(ucheck_fatal_errorustrip(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_sigabrt�s	uFaultHandlerTests.test_sigabrtuwin32u"SIGFPE cannot be caught on WindowscCs|jdj�dd�dS(NuB
import faulthandler
faulthandler.enable()
faulthandler._sigfpe()
iuFloating point exception(ucheck_fatal_errorustrip(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_sigfpe�s	uFaultHandlerTests.test_sigfpeu_sigbusuneed faulthandler._sigbus()cCs|jdj�dd�dS(NuB
import faulthandler
faulthandler.enable()
faulthandler._sigbus()
iu	Bus error(ucheck_fatal_errorustrip(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_sigbus�s	uFaultHandlerTests.test_sigbusu_sigilluneed faulthandler._sigill()cCs|jdj�dd�dS(NuB
import faulthandler
faulthandler.enable()
faulthandler._sigill()
iuIllegal instruction(ucheck_fatal_errorustrip(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_sigill�s	uFaultHandlerTests.test_sigillcCs|jdj�dd�dS(Nu7
import faulthandler
faulthandler._fatal_error(b'xyz')
iuxyz(ucheck_fatal_errorustrip(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_fatal_error�s	u"FaultHandlerTests.test_fatal_erroruopenbsduVIssue #12868: sigaltstack() doesn't work on OpenBSD if Python is compiled with pthreadu_stack_overflowu#need faulthandler._stack_overflow()cCs#|jdj�dddd�dS(NuJ
import faulthandler
faulthandler.enable()
faulthandler._stack_overflow()
iu (?:Segmentation fault|Bus error)uother_regexu unable to raise a stack overflow(ucheck_fatal_errorustrip(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_stack_overflow�s
	u%FaultHandlerTests.test_stack_overflowcCs|jdj�dd�dS(NuI
import faulthandler
faulthandler.enable()
faulthandler._read_null(True)
iu4(?:Segmentation fault|Bus error|Illegal instruction)(ucheck_fatal_errorustrip(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_gil_released�s	u#FaultHandlerTests.test_gil_releasedc
CsGt��8}|jdj�jdt|��ddd|�WdQXdS(Nui
import faulthandler
output = open({filename}, 'wb')
faulthandler.enable(output)
faulthandler._sigsegv()
ufilenameiuSegmentation fault(utemporary_filenameucheck_fatal_errorustripuformaturepr(uselfufilename((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_enable_file�su"FaultHandlerTests.test_enable_filecCs#|jdj�dddd�dS(NuT
import faulthandler
faulthandler.enable(all_threads=False)
faulthandler._sigsegv()
iuSegmentation faultuall_threadsF(ucheck_fatal_errorustripuFalse(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_enable_single_thread�s
	u+FaultHandlerTests.test_enable_single_threadcCs}dj�}d}tj��|j|�\}}WdQXdj|�}|j||kd||f�|j|d�dS(NuZ
import faulthandler
faulthandler.enable()
faulthandler.disable()
faulthandler._sigsegv()
uFatal Python erroru
u%r is present in %ri(ustripusupportusuppress_crash_popupu
get_outputujoinu
assertTrueuassertNotEqual(uselfucodeunot_expectedustderruexitcodeustder((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_disable�s
uFaultHandlerTests.test_disablecCs�tj}z{tjt_tj�}z>tj�|jtj��tj�|jtj��Wd|rxtj�n
tj�XWd|t_XdS(N(	usysustderru
__stderr__ufaulthandleru
is_enableduenableu
assertTrueudisableuassertFalse(uselfuorig_stderruwas_enabled((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_is_enabled�s	


u!FaultHandlerTests.test_is_enabledcCsBd}td|�\}}}||j�}|j|d�dS(Nu5import faulthandler; print(faulthandler.is_enabled())u-csFalse(uassert_python_okustripuassertEqual(uselfucodeurcustdoutustderr((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_disabled_by_defaultsu*FaultHandlerTests.test_disabled_by_defaultcCsHd}tddd|�\}}}||j�}|j|d�dS(Nu5import faulthandler; print(faulthandler.is_enabled())u-Xufaulthandleru-csTrue(uassert_python_okustripuassertEqual(uselfucodeurcustdoutustderr((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_sys_xoptionssu#FaultHandlerTests.test_sys_xoptionscCs�dj�}|jdt|�dt|��}|r?d}nd}dd|dd	g}|j||�\}}|j||�|j|d
�dS(u�
        Explicitly call dump_traceback() function and check its output.
        Raise an error if the output doesn't match the expected format.
        u
import faulthandler

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

def funcA():
    funcB()

funcA()
ufilenameuhas_filenameiiu#Traceback (most recent call first):u#  File "<string>", line %s in funcBu#  File "<string>", line 11 in funcAu&  File "<string>", line 13 in <module>iN(ustripuformaturepruboolu
get_outputuassertEqual(uselfufilenameucodeulinenouexpectedutraceuexitcode((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyucheck_dump_tracebacks			u&FaultHandlerTests.check_dump_tracebackcCs|jd�dS(N(ucheck_dump_tracebackuNone(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_dump_traceback<su%FaultHandlerTests.test_dump_tracebackc	Cs#t��}|j|�WdQXdS(N(utemporary_filenameucheck_dump_traceback(uselfufilename((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_dump_traceback_file?su*FaultHandlerTests.test_dump_traceback_filecCs�d}d|d}d|d}dj�}|jd|�}dd|d	g}|j|�\}}|j||�|j|d
�dS(Ni�uxi2u...uk
import faulthandler

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

{func_name}()
u	func_nameu#Traceback (most recent call first):u  File "<string>", line 4 in %su%  File "<string>", line 6 in <module>i(ustripuformatu
get_outputuassertEqual(uselfumaxlenu	func_nameu	truncateducodeuexpectedutraceuexitcode((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyu
test_truncateCs			uFaultHandlerTests.test_truncateuneed threadscCs�dj�}|jdt|��}|j||�\}}dj|�}|rZd}nd}dj�}|jd|�}|j||�|j|d�d	S(
u�
        Call explicitly dump_traceback(all_threads=True) and check the output.
        Raise an error if the output doesn't match the expected format.
        u�
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()
ufilenameu
ii
uE
^Thread 0x[0-9a-f]+:
(?:  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 XXX:
  File "<string>", line {lineno} in dump
  File "<string>", line 28 in <module>$
ulinenoiN(ustripuformaturepru
get_outputujoinuassertRegexuassertEqual(uselfufilenameucodeuoutputuexitcodeulinenouregex((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyucheck_dump_traceback_threads[s%	u.FaultHandlerTests.check_dump_traceback_threadscCs|jd�dS(N(ucheck_dump_traceback_threadsuNone(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_dump_traceback_threads�su-FaultHandlerTests.test_dump_traceback_threadsc	Cs#t��}|j|�WdQXdS(N(utemporary_filenameucheck_dump_traceback_threads(uselfufilename((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyu test_dump_traceback_threads_file�su2FaultHandlerTests.test_dump_traceback_threads_filecCs�ttjdt��}dj�}|jdtd|d|d|dt|�dt|��}|j||�\}}d	j	|�}|s�|}	|r�|	d
9}	nd|}
t
dd
|
d|	�}|j||�n|j|d�|j|d�dS(u
        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.
        usecondsu?
import faulthandler
import time

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()

timeout = {timeout}
repeat = {repeat}
cancel = {cancel}
loops = {loops}
if {has_filename}:
    file = open({filename}, "wb")
else:
    file = None
func(timeout, repeat, cancel, file, loops)
if file is not None:
    file.close()
utimeouturepeatucanceluloopsuhas_filenameufilenameu
iu&Timeout \(%s\)!\nThread 0x[0-9a-f]+:\ni	iu	min_countuiN(
ustrudatetimeu	timedeltauTIMEOUTustripuformatuboolurepru
get_outputujoinuexpected_tracebackuassertRegexuassertEqual(uselfurepeatucancelufilenameuloopsutimeout_strucodeutraceuexitcodeucountuheaderuregex((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyu_check_dump_traceback_later�s(	

u-FaultHandlerTests._check_dump_traceback_laterudump_traceback_lateru(need faulthandler.dump_traceback_later()cCs`|rd}nd}|rFt��}|j||||�WdQXn|j||d|�dS(Nii(utemporary_filenameu_check_dump_traceback_lateruNone(uselfurepeatucancelufileutwiceuloopsufilename((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyucheck_dump_traceback_later�s	u,FaultHandlerTests.check_dump_traceback_latercCs|j�dS(N(ucheck_dump_traceback_later(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_dump_traceback_later�su+FaultHandlerTests.test_dump_traceback_latercCs|jdd�dS(NurepeatT(ucheck_dump_traceback_lateruTrue(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyu test_dump_traceback_later_repeat�su2FaultHandlerTests.test_dump_traceback_later_repeatcCs|jdd�dS(NucancelT(ucheck_dump_traceback_lateruTrue(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyu test_dump_traceback_later_cancel�su2FaultHandlerTests.test_dump_traceback_later_cancelcCs|jdd�dS(NufileT(ucheck_dump_traceback_lateruTrue(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_dump_traceback_later_file�su0FaultHandlerTests.test_dump_traceback_later_filecCs|jdd�dS(NutwiceT(ucheck_dump_traceback_lateruTrue(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_dump_traceback_later_twice�su1FaultHandlerTests.test_dump_traceback_later_twiceuregisteruneed faulthandler.registerc

Cs�tj}dj�}|jdt|�dt|�d|d|d|d|�}|j||�\}}dj|�}|s�|r�d	}	nd
}	tdd|	�}	|j	||	�n|j
|d
�|r�|j|d�n|j
|d�dS(u
        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.
        u"
import faulthandler
import os
import signal
import sys

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

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

exitcode = 0
signum = {signum}
unregister = {unregister}
chain = {chain}

if {has_filename}:
    file = open({filename}, "wb")
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
if file is not None:
    file.close()
sys.exit(exitcode)
ufilenameuhas_filenameuall_threadsusignumu
unregisteruchainu
uCurrent thread XXX:
u&Traceback \(most recent call first\):
iiuiN(usignaluSIGUSR1ustripuformaturepruboolu
get_outputujoinuexpected_tracebackuassertRegexuassertEqualuassertNotEqual(
uselfufilenameuall_threadsu
unregisteruchainusignumucodeutraceuexitcodeuregex((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyucheck_register�s*	(			u FaultHandlerTests.check_registercCs|j�dS(N(ucheck_register(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyu
test_register@suFaultHandlerTests.test_registercCs|jdd�dS(Nu
unregisterT(ucheck_registeruTrue(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_unregisterCsu!FaultHandlerTests.test_unregisterc
Cs&t��}|jd|�WdQXdS(Nufilename(utemporary_filenameucheck_register(uselfufilename((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_register_fileFsu$FaultHandlerTests.test_register_filecCs|jdd�dS(Nuall_threadsT(ucheck_registeruTrue(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_register_threadsJsu'FaultHandlerTests.test_register_threadscCs|jdd�dS(NuchainT(ucheck_registeruTrue(uself((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyutest_register_chainMsu%FaultHandlerTests.test_register_chainNTF(3u__name__u
__module__u__qualname__uNoneu
get_outputuTrueucheck_fatal_erroruunittestuskipIfusysuplatformu
startswithutest_read_nullutest_sigsegvutest_sigabrtutest_sigfpeuhasattrufaulthandlerutest_sigbusutest_sigillutest_fatal_erroruHAVE_THREADSutest_stack_overflowutest_gil_releasedutest_enable_fileutest_enable_single_threadutest_disableutest_is_enabledutest_disabled_by_defaultutest_sys_xoptionsucheck_dump_tracebackutest_dump_tracebackutest_dump_traceback_fileu
test_truncateucheck_dump_traceback_threadsutest_dump_traceback_threadsu test_dump_traceback_threads_fileu_check_dump_traceback_lateruFalseucheck_dump_traceback_laterutest_dump_traceback_lateru test_dump_traceback_later_repeatu test_dump_traceback_later_cancelutest_dump_traceback_later_fileutest_dump_traceback_later_twiceucheck_registeru
test_registerutest_unregisterutest_register_fileutest_register_threadsutest_register_chain(u
__locals__((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyuFaultHandlerTests3sd		


	
&<7JuFaultHandlerTestscCstjt�dS(N(usupporturun_unittestuFaultHandlerTests(((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyu	test_mainQsu	test_mainu__main__(#u
contextlibucontextmanagerudatetimeufaulthandleruosureusignalu
subprocessusysutestusupportu
script_helperutest.script_helperuassert_python_okutempfileuunittestu	threadinguTrueuHAVE_THREADSuImportErroruFalseuTIMEOUTuresourceu	setrlimituRLIMIT_COREuerroruresource_erroruNoneuprepare_subprocessuexpected_tracebackutemporary_filenameuTestCaseuFaultHandlerTestsu	test_mainu__name__(((u;/opt/alt/python33/lib64/python3.3/test/test_faulthandler.pyu<module>s<

 
	��