question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Pytest gives exit code 127

See original GitHub issue

I have a step in a GitHub Actions CI job that has a single invocation of pytest, like so:

    - name: Run test suite using pytest
      env:
        # For test_cli.test_dl; see code in message_ix.cli.dl
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      working-directory: message_ix
      run: |
        pytest message_ix -m "not nightly" -rA --verbose --cov-report=xml --color=yes
      shell: bash

Pytest runs successfully, and all tests pass (see here):

…
XFAIL message_ix/tests/test_core.py::test_add_horizon[args7-kwargs7-None]
XFAIL message_ix/tests/test_core.py::test_add_horizon[args8-kwargs8-None]
==== 113 passed, 2 deselected, 5 xfailed, 4 warnings in 509.99s (0:08:29) =====

However, the overall CI step and job fails, because pytest is apparently returning exit code 127—which, according to the docs, should never happen.

Further information:

  • This occurs only on Windows Server 2019 job runners; not on (Ubuntu) Linux or macOS.
  • I experimented with modifying the line like so:
        run: |
          pytest message_ix -m "not nightly" -rA --verbose --cov-report=xml --color=yes || echo "Spurious exit code $? from pytest"
    
    …and indeed the message “Spurious exit code 127 from pytest” is printed.
  • In bash, exit code 127 is for a command not found; but the only command here is pytest, which is clearly found, because it runs.
  • I wonder if this may be something in the tests that I am running that somehow “leaks through” pytest; but I am at a total loss as to how to identify and debug that.
Output of `pip list`, including pytest From https://github.com/iiasa/message_ix/pull/453/checks?check_run_id=2253546265#step:17
Package                       Version
----------------------------- --------------------
alabaster                     0.7.12
argon2-cffi                   20.1.0
async-generator               1.10
asyncssh                      2.5.0
atomicwrites                  1.4.0
attrs                         20.3.0
Babel                         2.9.0
backcall                      0.2.0
bleach                        3.3.0
certifi                       2020.12.5
cffi                          1.14.5
chardet                       4.0.0
click                         7.1.2
cloudpickle                   1.6.0
colorama                      0.4.4
coverage                      5.5
cryptography                  3.4.7
cycler                        0.10.0
dask                          2021.3.1
decorator                     5.0.1
defusedxml                    0.7.1
descartes                     1.1.0
docutils                      0.16
entrypoints                   0.3
et-xmlfile                    1.0.1
fsspec                        0.8.7
genno                         1.3.0
iam-units                     2021.3.22
idna                          2.10
imagesize                     1.2.0
iniconfig                     1.1.1
ipykernel                     5.5.3
ipython                       7.22.0
ipython-genutils              0.2.0
ipywidgets                    7.6.3
ixmp                          3.2.1.dev71+g33404fd
jedi                          0.18.0
Jinja2                        2.11.3
JPype1                        1.2.1
jsonschema                    3.2.0
jupyter                       1.0.0
jupyter-client                6.1.12
jupyter-console               6.4.0
jupyter-core                  4.7.1
jupyterlab-pygments           0.1.2
jupyterlab-widgets            1.0.0
kiwisolver                    1.3.1
latexcodec                    2.0.1
llvmlite                      0.36.0
locket                        0.2.1
MarkupSafe                    1.1.1
matplotlib                    3.4.1
message-ix                    3.2.1.dev49+gbe45b14
mistune                       0.8.4
mizani                        0.7.3
nbclient                      0.5.3
nbconvert                     6.0.7
nbformat                      5.1.3
nest-asyncio                  1.5.1
notebook                      6.3.0
numba                         0.53.1
numpy                         1.20.2
numpydoc                      1.1.0
openpyxl                      3.0.7
packaging                     20.9
palettable                    3.3.0
pandas                        1.2.3
pandocfilters                 1.4.3
parso                         0.8.2
partd                         1.1.0
patsy                         0.5.1
pickleshare                   0.7.5
Pillow                        8.2.0
Pint                          0.17
pip                           21.0.1
plotly                        4.14.3
plotnine                      0.8.0
pluggy                        0.13.1
prometheus-client             0.9.0
prompt-toolkit                3.0.18
py                            1.10.0
pyam-iamc                     0.10.0
pybtex                        0.24.0
pybtex-docutils               1.0.0
pycparser                     2.20
Pygments                      2.8.1
pyparsing                     2.4.7
pyrsistent                    0.17.3
pytest                        6.2.2
pytest-cov                    2.11.1
python-dateutil               2.8.1
pytz                          2021.1
pywin32                       300
pywinpty                      0.5.7
PyYAML                        5.4.1
pyzmq                         22.0.3
qtconsole                     5.0.3
QtPy                          1.9.0
requests                      2.25.1
retrying                      1.3.3
scipy                         1.6.2
seaborn                       0.11.1
Send2Trash                    1.5.0
setuptools                    49.2.1
setuptools-scm                6.0.1
six                           1.15.0
snowballstemmer               2.1.0
sparse                        0.12.0
Sphinx                        3.5.3
sphinx-rtd-theme              0.5.1
sphinxcontrib-applehelp       1.0.2
sphinxcontrib-bibtex          2.2.0
sphinxcontrib-devhelp         1.0.2
sphinxcontrib-htmlhelp        1.0.3
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          1.0.3
sphinxcontrib-serializinghtml 1.1.4
statsmodels                   0.12.2
terminado                     0.9.4
testpath                      0.4.4
toml                          0.10.2
toolz                         0.11.1
tornado                       6.1
traitlets                     5.0.5
urllib3                       1.26.4
wcwidth                       0.2.5
webencodings                  0.5.1
wheel                         0.36.2
widgetsnbextension            3.5.1
xarray                        0.17.0
xlrd                          1.2.0

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:8 (4 by maintainers)

github_iconTop GitHub Comments

1reaction
asottilecommented, Apr 4, 2021

it’s probably not atexit – it’s probably when the interpreter runs destructors of globals while tearing down the process

does this reproduce when you run locally on windows? there’s free VMs you can try out at https://modern.ie provided by microsoft

1reaction
asottilecommented, Apr 2, 2021

maybe try debugging where the exit is coming from?

import sys
import pytest
import traceback
try:
    pytest.main(sys.argv[1:])
except BaseException:
    traceback.print_exc()
    raise
Read more comments on GitHub >

github_iconTop Results From Across the Web

127 Return code from $? - Stack Overflow
Value 127 is returned by /bin/sh when the given command is not found within your PATH system variable and it is not a...
Read more >
Exit code 127 error status in Bash script - LinuxConfig.org
The 127 error code indicates “command not found”. This occurs when any given command within your Bash script or on Bash command line...
Read more >
127. and Extension host terminated unexpectedly. on Mac ...
I try to use . code to open a new window in terminal then the error pop up "The terminal process terminated with...
Read more >
Python tasks on windows over PCP return a 127 exit code
Some tasks over PCP on Windows will throw an "Error: Task finished with exit-code 127". This is reproducible when using a `.py` task, ......
Read more >
Exit Codes in Containers & Kubernetes | Complete Guide
Exit Code 127 means a command specified in the container specification refers to a non-existent file or directory. What to do if a...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found