Message383582
The following program can work well in Python 2. However it crashes in Python 3( 3.6-3.10 ) with the following error messages.
Program:
============================================
import sys,time, threading
class test:
def test(self):
pass
class test1:
def run(self):
for i in range(0,10000000):
connection = test()
sys.stderr.write(' =_= ')
def testrun():
client = test1()
thread = threading.Thread(target=client.run, args=())
thread.setDaemon(True)
thread.start()
time.sleep(0.1)
testrun()
============================================
Error message:
------------------------------------------------------------------------------
=_= =_= =_= =_= =_= ...... =_= =_= =_= =_=
Fatal Python error: _enter_buffered_busy: could not acquire lock for <_io.BufferedWriter name='<stderr>'> at interpreter shutdown, possibly due to daemon threads
Python runtime state: finalizing (tstate=0xd0c180)
Current thread 0x00007f08a638f700 (most recent call first):
<no Python frame>
Aborted (core dumped)
------------------------------------------------------------------------------
When I remove "time.sleep(0.1)" or "thread.setDaemon(True)" or "sys.stderr.write(' =_= ')" or "for i in range(0,10000000)":, the python interpreter seems to work well. |
|
Date |
User |
Action |
Args |
2020-12-22 10:25:03 | xxm | set | recipients:
+ xxm |
2020-12-22 10:25:03 | xxm | set | messageid: <1608632703.27.0.708410911987.issue42717@roundup.psfhosted.org> |
2020-12-22 10:25:03 | xxm | link | issue42717 messages |
2020-12-22 10:25:03 | xxm | create | |
|