HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //opt/alt/python312/lib64/python3.12/test/__pycache__/test_threadsignals.cpython-312.opt-2.pyc
�

~h�e�(��"�	ddlZddlZddlZddlZddlmZddlZddlZejdddk(rejdejz��ej�Zej�Zejj dk(xrejj"dk(Zd�Zd	�Zd
�Zej,�ej.eed�d�Gd
�dej2���Zd�Zedk(rej:�yy)�N)�threading_helper��winzCan't test signal on %s�pthreadz
mutex+condc���tjtj|�}tjtj|�}tjtj|�}|||fS�N)�signal�SIGUSR1�SIGUSR2�SIGALRM)�for_usr1�for_usr2�for_alrm�usr1�usr2�alrms      �>/opt/alt/python312/lib64/python3.12/test/test_threadsignals.py�registerSignalsrsK���=�=�����2�D��=�=�����2�D��=�=�����2�D���t���c�h�t|dxxdz
cc<tj�t|d<y)N�tripped��
tripped_by)�signal_blackboard�thread�	get_ident)�sig�frames  r�handle_signalsrs0���c��9�%��*�%�+1�+;�+;�+=��c��<�(rc���tjttj�tjttj
�tj�yr)�os�kill�process_pidr	r
r�
signalled_all�release�rr�send_signalsr'"s2���G�G�K����(��G�G�K����(����r�alarmztest requires signal.alarmc�v�eZdZd�Zd�Zd�Zejed�eje	jjd�xre	jjd�eje	jjd�d�d	����Zejed�eje	jjd�xre	jjd�eje	jjd�d�d
����Zd�Zd�Zd
�Zd�Zy)�
ThreadSignalsc��tj�5tj�|j	�tj�ddd�t
tjddk(st
tjddk(r?	t
jd�t
j�t
jd�|jt
tjdd�|jt
tjdtj��|jt
tjdd�|jt
tjdtj��tj�y#1swY��dxYw#t
jd�wxYw)Nrrrr)r�wait_threads_exitr$�acquire�spawnSignallingThreadrr	r
rr(�pause�assertEqualrrr%��selfs r�test_signalszThreadSignals.test_signals,sI��
�
/�
/�
1�	$�

�!�!�#��&�&�(��!�!�#�	$��V�^�^�,�Y�7�1�<�����/�	�:�a�?�
 ����Q���������Q�����+�F�N�N�;�I�F��J����+�F�N�N�;�L�I�!�+�+�-�	/����+�F�N�N�;�I�F��J����+�F�N�N�;�L�I�!�+�+�-�	/�����;	$�	$��*���Q��s�9F0�)F=�0F:�=Gc�8�tjtd�y)Nr&)r�start_new_threadr'r1s rr.z#ThreadSignals.spawnSignallingThreadLs������b�1rc��t�r)�KeyboardInterrupt)r2rrs   r�alarm_interruptzThreadSignals.alarm_interruptOs���rz/POSIX condition variables cannot be interrupted�linuxzBIssue 34004: musl does not allow interruption of locks by signals.�openbsdz%lock cannot be interrupted on OpenBSDc��tjtj|j�}	tj�}|j�tjd�tj�}|jt|j
d��tj�|z
}|j|d�tjd�tjtj|�y#tjd�tjtj|�wxYw)Nr���timeout�@r)r	rr8r�
allocate_lockr-r(�time�	monotonic�assertRaisesr7�
assertLess)r2�oldalrm�lock�t1�dts     r�test_lock_acquire_interruptionz,ThreadSignals.test_lock_acquire_interruptionRs����-�-�����0D�0D�E��	3��'�'�)�D��L�L�N��L�L��O����!�B����/����q��I����!�B�&�B�

�O�O�B��$��L�L��O��M�M�&�.�.�'�2��
�L�L��O��M�M�&�.�.�'�2�s�BD�;D=c�~��tjtj|j�}	tj���fd�}tj�5tj|d��jd��r8�j�tjd��jd��r�8tjd�tj�}|jt�jd��tj�|z
}|j!|d	�ddd�tjd
�tjtj|�y#1swY�CxYw#tjd
�tjtj|�wxYw)Nc�&���j�yr)r-)�rlocks�r�other_threadzCThreadSignals.test_rlock_acquire_interruption.<locals>.other_thread�s����
�
�rr&F��blocking�{�G�z�?rr<r=r?r)r	rr8r�RLockrr,r5r-r%rA�sleepr(rBrCr7rD)r2rErMrGrHrLs     @r�test_rlock_acquire_interruptionz-ThreadSignals.test_rlock_acquire_interruptionqs+����-�-�����0D�0D�E��	3��L�L�N�E�
 �"�3�3�5�
)��'�'��b�9��m�m�U�m�3��M�M�O��J�J�t�$��m�m�U�m�3����Q���^�^�%���!�!�"3�U�]�]�A�!�N��^�^�%��*������C�(�
)�
�L�L��O��M�M�&�.�.�'�2�
)�
)��
�L�L��O��M�M�&�.�.�'�2�s+�-F�A E5�?A4E5�3F�5E>�:F�;F<c����d�_�fd�}tjtj|�}	�fd�}tj�5tj|d��jd��r8�j�tjd��jd��r�8�j�}�j�j��j|�ddd�tjtj|�y#1swY�.xYw#tjtj|�wxYw)NFc���d�_y)NT)�	sig_recvd)r	rr2s  �r�
my_handlerz9ThreadSignals.acquire_retries_on_intr.<locals>.my_handler�s
���!�D�Nrc�����j�tjd�tjt
tj�tjd��j�y)N��?)	r-rArRr!r"r#r	r
r%)rFs�rrMz;ThreadSignals.acquire_retries_on_intr.<locals>.other_thread�sC��������
�
�3������V�^�^�4��
�
�3�����rr&rNrP)rVr	r
rr,rr5r-r%rArR�
assertTrue)r2rFrW�old_handlerrM�results``    r�acquire_retries_on_intrz%ThreadSignals.acquire_retries_on_intr�s�������	"��m�m�F�N�N�J�?��	7�
�"�3�3�5�
(��'�'��b�9��l�l�E�l�2��L�L�N��J�J�t�$��l�l�E�l�2������������/�����'�
(�
�M�M�&�.�.�+�6�
(�
(��
�M�M�&�.�.�+�6�s*�D#�
A D�.<D�*D#�D �D#�#&E	c�J�|jtj��yr)r]rr@r1s r�!test_lock_acquire_retries_on_intrz/ThreadSignals.test_lock_acquire_retries_on_intr�s���$�$�V�%9�%9�%;�<rc�J�|jtj��yr)r]rrQr1s r�"test_rlock_acquire_retries_on_intrz0ThreadSignals.test_rlock_acquire_retries_on_intr�s���$�$�V�\�\�^�4rc�P����d�_d�_d�_tj���j�tj���j��fd�}t
jtj|�}	��fd�}�fd�}tj�5tj|d�|��j��j�j�jz
d��j�j�jz
d��j�jd�ddd�t
jtj|�y#1swY�.xYw#t
jtj|�wxYw)Nrc�0���xjdz
c_y)Nr)�
sigs_recvd)�signumrr2s  �rrWz@ThreadSignals.test_interrupted_timed_acquire.<locals>.my_handler�s����O�O�q� �Orc���tj��_�jd��tj��_y)NrYr=)rArB�startr-�end)rFr2s��r�
timed_acquirezCThreadSignals.test_interrupted_timed_acquire.<locals>.timed_acquire�s-���!�^�^�-��
����S��)��>�>�+��rc���td�D]?}tjd�tjt
tj��A�j�y)N�(g{�G�z�?)	�rangerArRr!r"r#r	r
r%)�_�dones �rr'zBThreadSignals.test_interrupted_timed_acquire.<locals>.send_signals�s?����r��9�A��J�J�t�$��G�G�K����8�9����rr&g@g333333�?)
rgrhrdrr@r-r	r
rr,r5rD�
assertGreater)r2rWr[rir'rnrFs`    @@r�test_interrupted_timed_acquirez,ThreadSignals.test_interrupted_timed_acquire�s*�����
��������#�#�%�������#�#�%������	!��m�m�F�N�N�J�?��	7�
,�
�"�3�3�5�

7��'�'��b�9�������������4�:�:� 5�s�;��"�"�4�8�8�d�j�j�#8�#�>��"�"�4�?�?�A�6�

7�
�M�M�&�.�.�+�6�

7�

7��
�M�M�&�.�.�+�6�s%�E?�*BE3�E?�3E<�8E?�?&F%N)�__name__�
__module__�__qualname__r3r.r8�unittest�skipIf�USING_PTHREAD_COND�sys�platform�
startswith�thread_info�versionrIrSr]r_rarpr&rrr*r*(sC�� �@2� ��X�_�_�'�F�H��X�_�_�S�\�\�,�,�W�5�1����0�0�0�#�$�
�X�_�_�S�\�\�,�,�Y�7�<�>�3�>�$�H�3�,�X�_�_�'�F�H��X�_�_�S�\�\�,�,�W�5�1����0�0�0�#�$�
�X�_�_�S�\�\�,�,�Y�7�<�>�3�>�$�H�3�:7�@=�5�,7rr*c���tjddd�tjddd�tjddd�iatttt�}tjt
g|���y)Nr)rr)	r	r
rrrrrrt�addModuleCleanup)�oldsigss r�setUpModuler�sZ��!�.�.�q��+K� �.�.�q��+K� �.�.�q��+K�N���n�n�n�M�G����o�8��8r�__main__)rtr	r!rw�test.supportr�_threadrrArx�SkipTest�getpidr#r@r$rz�namerFrvrrr'�requires_working_threading�
skipUnless�hasattr�TestCaser*rrq�mainr&rr�<module>r�s��<��
�	�
�)����L�L��!����
�(�
�
�5����D�
E�E��b�i�i�k��"�f�"�"�$�
��o�o�*�*�i�7�?��/�/�.�.�,�>���>�
�-��,�,�.�����W�V�W�-�/K�L�7�H�%�%�7�M�/�7�D9��z���H�M�M�O�r