Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.1k
Closed
Description
A third bug found while working on#91713 🙃
Bug report
I can reproduce this locally on my Windows machine:
.\python.bat -m test test_embed -m test_finalize_structseq -R1:50
This is the result:
PS C:\Users\sween\Source\Repos\cpython2\cpython> .\python.bat -m test test_embed -m test_finalize_structseq -R1:50Running Debug|x64 interpreter...WARNING: Running tests with --huntrleaks/-R and less than 3 warmup repetitions can give false positives!0:00:00 Run tests sequentially0:00:00 [1/1] test_embedbeginning 51 repetitions123456789012345678901234567890123456789012345678901...................test test_embed failed -- Traceback (most recent call last): File "C:\Users\sween\Source\Repos\cpython2\cpython\Lib\test\test_embed.py", line 343, in test_finalize_structseq out, err = self.run_embedded_interpreter("test_repeated_init_exec", code) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\sween\Source\Repos\cpython2\cpython\Lib\test\test_embed.py", line 117, in run_embedded_interpreter self.assertEqual(p.returncode, returncode, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AssertionError: 3 != 0 : bad returncode 3, stderr is '--- Loop #1 ---\n..\n----------------------------------------------------------------------\nRan 2 tests in 0.001s\n\nOK\n--- Loop #2 ---\nA\x00s\x00s\x00e\x00r\x00t\x00i\x00o\x00n\x00 \x00f\x00a\x00i\x00l\x00e\x00d\x00:\x00 \x00i\x00n\x00s\x00t\x00r\x00u\x00c\x00t\x00i\x00o\x00n\x00s\x00[\x00i\x00 \x00+\x00 \x001\x00]\x00 \x00=\x00=\x00 \x000\x00,\x00 \x00f\x00i\x00l\x00e\x00 \x00C\x00:\x00\\\x00U\x00s\x00e\x00r\x00s\x00\\\x00s\x00w\x00e\x00e\x00n\x00\\\x00S\x00o\x00u\x00r\x00c\x00e\x00\\\x00R\x00e\x00p\x00o\x00s\x00\\\x00c\x00p\x00y\x00t\x00h\x00o\x00n\x002\x00\\\x00c\x00p\x00y\x00t\x00h\x00o\x00n\x00\\\x00P\x00y\x00t\x00h\x00o\x00n\x00\\\x00s\x00p\x00e\x00c\x00i\x00a\x00l\x00i\x00z\x00e\x00.\x00c\x00,\x00 \x00l\x00i\x00n\x00e\x00 \x002\x006\x006\x00\n\x00'test_embed failed (1 failure)== Tests result: FAILURE ==1 test failed: test_embedTotal duration: 17.7 secTests result: FAILURE
A more self-contained simplified (less unittest) reproducer is this:
fromtestimportsupportimportosimportos.pathimportsubprocessimportsysMS_WINDOWS= (os.name=='nt')MACOS= (sys.platform=='darwin')defdebug_build(program):program=os.path.basename(program)name=os.path.splitext(program)[0]returnname.casefold().endswith("_d".casefold())exename="_testembed"builddir=os.path.dirname(sys.executable)ifMS_WINDOWS:ext= ("_d"ifdebug_build(sys.executable)else"")+".exe"exename+=extexepath=builddirexpecteddir=os.path.join(support.REPO_ROOT,builddir)else:exepath=os.path.join(builddir,'Programs')expecteddir=os.path.join(support.REPO_ROOT,'Programs')test_exe=os.path.join(exepath,exename)###########################################################os.chdir(support.REPO_ROOT)code="""if 1: import unittest print("Tests passed")"""cmd= [test_exe,"test_repeated_init_exec",code]foriinrange(200):print(i)p=subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True,env=None,cwd=None) (out,err)=p.communicate(input=input,timeout=None)print(out)ifp.returncode!=0:print("bad return code",p.returncode)print(err)break
This fails with the following message:
A s s e r t i o n f a i l e d : i n s t r u c t i o n s [ i + 1 ] = = 0 , f i l e C : \ U s e r s \ s w e e n \ S o u r c e \ R e p o s \ c p y t h o n 2 \ c p y t h o n \ P y t h o n \ s p e c i a l i z e . c , l i n e 2 6 6