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

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

Abierto
#112 0 comentarios 0 reacciones 1 asignado Reclamado por @drojf Ver en GitHub
bug
Lenguaje dominante
JavaScript
Estrellas
214
Forks
12
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

El issue trata sobre un problema específico de Windows en la terminación de procesos, donde aria2c continúa ejecutándose después de que se cierra la GUI del cargador del instalador. La solución implica usar un JobObject a través de la biblioteca Rust win32job-rs para asegurar que los procesos hijos sean eliminados. Comience examinando el código del cargador en Rust que genera aria2c, luego integre el registro del JobObject. Pruebe ejecutando el instalador, cerrando el cargador y verificando que los procesos de aria2c terminen.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python, rust
Área
cli, desktop, tooling
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.