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

3.1.0: streamlinkw.exe / streamlink.exe broken on Windows #4307

Closed
4 tasks done
bastimeyer opened this issue Jan 24, 2022 · 3 comments
Closed
4 tasks done

3.1.0: streamlinkw.exe / streamlink.exe broken on Windows #4307

bastimeyer opened this issue Jan 24, 2022 · 3 comments
Labels
bug os: Windows Related to Microsoft Windows Windows installer

Comments

@bastimeyer
Copy link
Member

bastimeyer commented Jan 24, 2022

Checklist

Streamlink version

Latest stable release

Description

There seems to be an issue with the Streamlink executables in the Windows installer of the Streamlink 3.1.0 release. This wasn't the case in the 3.0.3 release. See here:
streamlink/streamlink-twitch-gui#854 (reply in thread)

For some reason, both streamlinkw.exe and streamlink.exe immediately terminate with exit code 3221225477 (0xC0000005) since the 3.1.0 release, but only when not launching them from a command line shell, eg. from Streamlink Twitch GUI.

If streamlinkw.exe gets executed from the MinGW bash shell, its exit code is 0 and it prints output to stdout. If it gets executed from the powershell, its exit code is 0 but there's no stdout output (which expected behavior).

This is very weird and I'm not sure what has caused this. The Python version of the Windows installer hasn't been changed between 3.0.3 and 3.1.0, and neither have the dependencies (which are pinpointed with checksums):

$ git diff 3.0.3..3.1.0 script/makeinstaller{.sh,-{assets,requirements}.json}
(empty)

Comparing the checksums of both bundled Python installs in 3.0.3 and 3.1.0 shows that both are indentical. The executable wrappers streamlinkw.exe and streamlink.exe however are not identical compared to the previous release.

This is how pynsist builds the wrappers:
https://github.com/takluyver/pynsist/blame/2.7/nsist/commands.py
(pynsist 2.7 was used for both 3.0.3 and 3.1.0)

As you can see, the wrappers get their executable code from distlib, and they append a shebang and entry script.

Distlib had a new release in December and the changelog suggests that something has changed in regards to the launcher executables:
https://github.com/pypa/distlib/blob/master/CHANGES.rst#034

@bastimeyer bastimeyer added bug os: Windows Related to Microsoft Windows labels Jan 24, 2022
@bastimeyer
Copy link
Member Author

Since the executable wrappers built via pip when installing the streamlink wheel from pypi are working fine, this probably means that pynsist needs to be fixed/upgraded.

@bastimeyer
Copy link
Member Author

@dogbertai
Copy link

The pip install method is still broken because pip-22.0.3 uses the same broken distlib.
pypa/pip#10875
The workaround is to downgrade pip.
The solution is to wait for the next version of pip.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug os: Windows Related to Microsoft Windows Windows installer
Projects
None yet
Development

No branches or pull requests

2 participants