Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-36511: Fix Windows arm32 buildbot pythoninfo, scp, and ssh #13454

Merged
merged 21 commits into from
Jun 19, 2019

Conversation

paulmon
Copy link
Contributor

@paulmon paulmon commented May 20, 2019

When running the buildbot for Windows ARM32 test.pythoninfo must be run remotely.
Also seperating deploy step from both pythoninfo and test.bat

Requires buildmaster config change to work:
python/buildmaster-config#91

@zooba @zware

https://bugs.python.org/issue36511

@paulmon
Copy link
Contributor Author

paulmon commented May 22, 2019

The debug part of the test pass should pass locally with these fixes, except for test_datetime.
See this PR for test_datetime: #13073
I am re-running test.bat now with these fixes, which takes more than an hour.
The last pass took 4 hours and 23 minutes on my secondary ARM test device, but on the buildbot ARM test device it's been taking about an hour and a half.
I still need to try the WindowsArm32ReleaseBuild steps, but expect the same results.

Copy link
Member

@zooba zooba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would prefer a tighter skip on the tests, and deferring to @zware on the buildbot scripts (as with the build config change).

@@ -1345,6 +1346,7 @@ def test_load_verify_cadata(self):
ctx.load_verify_locations(cadata=b"broken")


@unittest.skipIf(Py_DEBUG, "Crashes on debug python builds")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is certainly not a general issue - can we scope it down to the platform(s) where it crashes?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will scope it down.

I think it's limited to UCRT. The problem is that SSL has FILE* from the ucrtbase.dll table and python has a FILE* from the ucrtbased.dll table.

I think we could limit it to win32+arm or platform.win32_is_iot( ). Unless there's a way to check if python is using UCRT? I couldn't find one.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, it's because of mixing FILE* across debug/release builds? In that case we scope it down to Windows and enhance the skip message to say "Avoid mixing debug/release CRT on Windows"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@paulmon
Copy link
Contributor Author

paulmon commented May 24, 2019

Enabling is_python_build( ) to return true on the test target uncovered more failing tests.
There is still one failure in test_pyexpat that I will be investigating next.

======================================================================
FAIL: test_exception (test.test_pyexpat.HandlerExceptionTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\py\lib\test\test_pyexpat.py", line 453, in test_exception
    parser.Parse(b"<a><b><c/></b></a>", 1)
RuntimeError: a

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\py\lib\test\test_pyexpat.py", line 469, in test_exception
    self.assertIn('call_with_frame("StartElement"', entries[1][3])
AssertionError: 'call_with_frame("StartElement"' not found in ''

----------------------------------------------------------------------

@paulmon
Copy link
Contributor Author

paulmon commented May 24, 2019

I simplified the deployment script to copy entire directories instead of picking files, except for PCBuild and Modules which have many files that aren't needed for the test run. This should make the script more resilient to test changes.

I think the Windows ARM32 test pass is green now when I run the scripts manually, if #13073 is included.

@@ -465,7 +466,7 @@ def test_exception(self):
"pyexpat.c", "StartElement")
self.check_traceback_entry(entries[2],
"test_pyexpat.py", "StartElementHandler")
if sysconfig.is_python_build():
if sysconfig.is_python_build() and not (sys.platform == 'win32' and platform.machine() == 'ARM'):
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather fix this than skip it, but I haven't figured out where to start looking yet.

@paulmon paulmon requested a review from tiran as a code owner June 11, 2019 23:08
Lib/test/test_ssl.py Outdated Show resolved Hide resolved
Lib/test/test_math.py Outdated Show resolved Hide resolved
@paulmon
Copy link
Contributor Author

paulmon commented Jun 13, 2019

@tiran can you please review?
Some of these changes are required to enable the Windows arm32 buildbot to start working.
Thanks!

@zooba
Copy link
Member

zooba commented Jun 19, 2019

@paulmon I'm happy to merge without Christian's review once the updates I suggested in my last one are done.

paulmon and others added 2 commits June 19, 2019 11:16
Co-Authored-By: Steve Dower <steve.dower@microsoft.com>
Co-Authored-By: Steve Dower <steve.dower@microsoft.com>
@paulmon
Copy link
Contributor Author

paulmon commented Jun 19, 2019

@zooba I merged your suggested changes. I think it's ready

@zooba
Copy link
Member

zooba commented Jun 19, 2019

@paulmon The Py_DEBUG_WIN32 change needs the references to that variable updated as well. I didn't go through and suggest a change on each one.

@paulmon
Copy link
Contributor Author

paulmon commented Jun 19, 2019

@paulmon The Py_DEBUG_WIN32 change needs the references to that variable updated as well. I didn't go through and suggest a change on each one.

I'm not sure I'm following you. Are suggesting adding a check for arm/arm64 to Py_DEBUG_WIN32? That would be incorrect for Windows IoT Core x86/x64 which also use UCRT for everything.

@zooba
Copy link
Member

zooba commented Jun 19, 2019

@paulmon The Py_DEBUG_WIN32 change needs the references to that variable updated as well. I didn't go through and suggest a change on each one.

I'm not sure I'm following you. Are suggesting adding a check for arm/arm64 to Py_DEBUG_WIN32? That would be incorrect for Windows IoT Core x86/x64 which also use UCRT for everything.

No, I'm saying elsewhere you are referring to Py_DEBUG_Win32 which is now undefined. They need to be changed to Py_DEBUG_WIN32 as well

@paulmon
Copy link
Contributor Author

paulmon commented Jun 19, 2019

No, I'm saying elsewhere you are referring to Py_DEBUG_Win32 which is now undefined. They need to be changed to Py_DEBUG_WIN32 as well

Thanks. I noticed the whitespace change but somehow didn't see the uppercase change.

@paulmon
Copy link
Contributor Author

paulmon commented Jun 19, 2019

@zooba Thanks for the help
I fixed test_ssl and test_math so they pass on my dev machine.
All of the PR checks pass now.

@zooba zooba merged commit f355069 into python:master Jun 19, 2019
@miss-islington
Copy link
Contributor

Thanks @paulmon for the PR, and @zooba for merging it 🌮🎉.. I'm working now to backport this PR to: 3.8.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Jun 19, 2019
…bot (pythonGH-13454)

(cherry picked from commit f355069)

Co-authored-by: Paul Monson <paulmon@users.noreply.github.com>
@bedevere-bot
Copy link

GH-14244 is a backport of this pull request to the 3.8 branch.

@zooba
Copy link
Member

zooba commented Jun 19, 2019

@paulmon Seems like it still fails: https://buildbot.python.org/all/#/builders/197/builds/338

@paulmon
Copy link
Contributor Author

paulmon commented Jun 19, 2019

@paulmon Seems like it still fails: https://buildbot.python.org/all/#/builders/197/builds/338

The raspberry pi was in a bad state. I have restarted it

@paulmon
Copy link
Contributor Author

paulmon commented Jun 19, 2019

Also, ssh.exe and scp.exe somehow don't exist when running under the buildbot, which is breaking the script.

@zooba
Copy link
Member

zooba commented Jun 19, 2019

@paulmon Different PATH setting? Or perhaps it's running with different file redirection settings (as a 32-bit app, maybe)?

@paulmon
Copy link
Contributor Author

paulmon commented Jun 19, 2019

@paulmon Different PATH setting? Or perhaps it's running with different file redirection settings (as a 32-bit app, maybe)?

The PATH is echoed at the top of the log and includes the PATH to ssh.
I hadn't thought of WoW as a possible cause. I installed from the link on python.org so I got the 32-bit version of python. I'll update to the 64-bit python and see if that helps. There isn't a SysWOW64 version of ssh.exe, so that could be it.

CuriousLearner added a commit to CuriousLearner/cpython that referenced this pull request Jun 21, 2019
* master: (599 commits)
  Docs: Improved phrasing (pythonGH-14069)
  Remove redundant if check from optional argument function in argparse. (pythonGH-8766)
  bpo-37289: Add a test for if with ifexpr in the peephole optimiser to detect regressions (pythonGH-14127)
  Update What's New in Python 3.9 (pythonGH-14253)
  bpo-36511: Improve ARM32 buildbot scripts (pythonGH-14251)
  bpo-37151: remove _PyCFunction_FastCallDict (pythonGH-14269)
  Fix typo, 'widger' -> 'widget', in idlelib/tree.py (pythonGH-14263)
  Fix bpo number in News file. (pythonGH-14260)
  bpo-37342: Fix the incorrect nb_index's type in typeobj documentation (pythonGH-14241)
  Update What's New in Python 3.8 (pythonGH-14239)
  bpo-36710: Use tstate in pylifecycle.c (pythonGH-14249)
  Add missing single quote in io.TextIOWrapper.reconfigure documentation (pythonGH-14246)
  bpo-36511: Add buildbot scripts and fix tests for Windows ARM32 buildbot (pythonGH-13454)
  bpo-37333: Ensure IncludeTkinter has a value (pythonGH-14240)
  bpo-37331: Clarify format of socket handler messages in the documentation. (pythonGH-14234)
  bpo-37258: Not a bug, but added a unit test and updated documentation. (pythonGH-14229)
  bpo-36710: Remove PyImport_Cleanup() function (pythonGH-14221)
  Fix name of '\0'. (pythonGH-14222)
  bpo-36710: Add tstate parameter in import.c (pythonGH-14218)
  Document typing.ForwardRef (pythonGH-14216)
  ...
@paulmon paulmon deleted the arm32_pythoninfo branch July 17, 2019 20:30
lisroach pushed a commit to lisroach/cpython that referenced this pull request Sep 10, 2019
DinoV pushed a commit to DinoV/cpython that referenced this pull request Jan 14, 2020
@paulmon paulmon mannequin mentioned this pull request May 20, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants