07th-mod / 07th-mod/python-patcher

Windows: Closing the installer loader doesn't terminate an aria2c download which is in progress

Ouverte
#112 0 commentaires 0 réactions 1 personne assignée Réclamée par @drojf Voir sur GitHub
bug
Langage dominant
JavaScript
Étoiles
214
Forks
12
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

As per the title, if you close the installer loader (which should terminate the whole installer), it doesn't terminate the aria2c download. This is pretty bad, as it could result in both the download continuing when you don't expect it to, and also multiple aria2c downloads occurring simultaneously.

when running normally:

![image](https://user-images.githubusercontent.com/1249449/87397849-56f9e380-c5f8-11ea-9843-bed50fc7b0ad.png)

After closing the installer loader ("07th-mod Installer Launcher [v1.1.47]"):

![image](https://user-images.githubusercontent.com/1249449/87398174-de475700-c5f8-11ea-9f90-484b156b74fe.png)

- [x] make sure when the installer loader GUI is terminated ("07th-mod Installer Launcher [v1.1.47]") the whole proccess is terminated
- [ ] double check the same doesn't happen with 7-zip extraction
- [ ] double check that on other platforms, when the python script is run by itself without a loader, this can't happen (on windows, this seems to work if you run the installer just from the python script)
- [ ] Add actual button to stop the download/extraction on the web UI
----

Edit: It looks like this issue has to do with the process being run with a (hidden) console. If you run the process with a console, it's not fully terminated until the console is killed. But we hide the console so as not to confuse users. This seems to make windows keep aria2c alive, as it sees the console window is still there.

----

Edit2: after trying out some things, I'm going to try this: https://stackoverflow.com/questions/23434842/python-how-to-kill-child-processes-when-parent-dies/23587108 . It's windows (or linux) specific, but at this stage I just want it to work.

----

Edit3: Registering a JobObject at the rust loader using this handy library: https://github.com/ohadravid/win32job-rs seems to fix the issue, but I'll just make sure everything is in order before I release a fix.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Le problème concerne un problème spécifique à Windows dans la terminaison de processus, où aria2c continue de s'exécuter après la fermeture de l'interface graphique du chargeur d'installation. La solution implique d'utiliser un JobObject via la bibliothèque Rust win32job-rs pour s'assurer que les processus enfants sont tués. Commencez par examiner le code du chargeur Rust qui lance aria2c, puis intégrez l'enregistrement du JobObject. Testez en exécutant l'installateur, en fermant le chargeur et en vérifiant que les processus aria2c se terminent.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python, rust
Domaine
cli, desktop, tooling
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.