Skip to content

Fix hang before exit on arm by pinning uilive to non-broken version #493

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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

corneliusroemer
Copy link

@corneliusroemer corneliusroemer commented May 27, 2025

I've figured out what causes the hang on Apple silicon since version 18.0.5 first reported in #490: an indirect dependency of the progress bar (uilive) causes this hang for Go versions >=1.21 (that's probably why this bug only surfaced in 18.0.5, before then, Go 1.20 was used).

Luckily there's an easy workaround: downgrade uilive to 0.0.3. Version 0.0.4 contains this commit which seems to cause the hang: gosuri/uilive@11a6ee7

Given that uiprogress (and uilive) are no longer maintained, it might make sense to switch to a different progress bar package in the mid term.

An alternative is to downgrade Go to <1.20

Testing

I've verified that with this change, datasets no longer hangs on exit.

I'll also run a few smoke tests. Unfortunately there seem to be no (unit) tests at all for the client.

gosuri/uilive v0.0.4 causes hang on Apple silicon macs with Go >=1.21, see
- ncbi#490
- gosuri/uiprogress#53

resolves `datasets` >=18.0.5 hangs on macOS arm64 ncbi#490
@ericcox1
Copy link
Collaborator

Thanks @corneliusroemer, we are going to test this internally and try to get a fix out soon.

-Eric

@corneliusroemer corneliusroemer changed the title Fix hang before exit on Apple Silicon by pinning uilive to non-broken version Fix hang before exit on arm by pinning uilive to non-broken version May 27, 2025
@corneliusroemer
Copy link
Author

@BradHolmes I see you implemented this fix in v18.2.3

The way you do it is not going to survive a go mod tidy - it might be better to move uilive out of the // indirect go.mod here

8f0466d#diff-c0d41e03b066d789a7e053476d1739af6da114a2b6c75306fb9735d2cae48700L27

the way that I'm doing in this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants