同机开着两个根目录时,关机后 netsimd.exe 可能久久不退,挡住 modavd update

Ouverte
#22 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
android, go
Domaine
cli, devtools

Piste de recherche

Start by reproducing the report on Windows: run modavd start in two separate root directories, stop the instance in one, and check whether that root's netsimd.exe exits within about 15 seconds. The issue lists the steps but says the cause is not yet confirmed, so the first deliverable is evidence, not a patch. Done means the reproduction is recorded and the fix either isolates each root's emulator temp directory or documents why it is not needed, with modavd update no longer blocked by a netsimd.exe that belongs to another root.

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

Description

bug P3 platform:windows

现象

0.36.0 的包升级回归里有一次:modavd stop 关掉实例以后,根目录下的 netsimd.exe 过了 90 秒还在,升级那一项因此判失败,重跑通过。平时关机后十几秒它就自己退了。

对用户的影响:modavd update(以及 AUTO-MAS 换包)发现 sdk\emulator 下还有进程在跑,就什么都不动、报「还有程序在用模拟器或管理器的文件:netsimd.exe(pid …)」。这时实例都关了,用户不知道该关什么。

当时的判断(没坐实)

证据只留了一部分。推测是:同一台电脑上同时跑着几个根目录的模拟器(回归时有测试根目录和生产根目录),它们共用同一个 netsim 发现目录(在 %TEMP% 下),别的根目录的模拟器连上了这个根目录的 netsimd.exe,它就一直不退。

回归脚本那边已经给自己起的模拟器单设了 TMPDIR,之后没再碰到。产品里还没处理:同机开着两个 ModAVD 根目录(或者开发用的 SDK)时就可能碰上。

要做的

  1. 先坐实:两个根目录 A、B,各开一台实例,关掉 A 的实例,看 A 的 netsimd.exe 退不退、B 的模拟器连的是哪个 netsimd.exe。
  2. 坐实了就让每个根目录的模拟器只连自己的 netsimd.exe,比如 modavd start 给模拟器进程单设一个本根目录下的临时目录。改之前确认蓝牙、Wi-Fi 和别的用到临时目录的地方不受影响。
  3. modavd update 碰到只剩本根目录的 netsimd.exe、而本根目录没有实例在跑时,先等它退出一会儿(比如 60 秒)再报错;报错时说清楚是哪个根目录的模拟器还连着它。

验收

  • 两个根目录同时各开一台实例,关掉其中一个根目录的实例后,它的 netsimd.exe 照常十几秒内退出;
  • 这时对它执行 modavd update,不再因为 netsimd.exe 被拦下;
  • 只开一个根目录时,开关机和网络行为不变。
Langage dominant
Go
Étoiles
0
Forks
1
Merge moyen
2 h 42 min
PR mergées (30 j)
13

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de ModAVD/ModAVDManager

Toutes les issues de ModAVD/ModAVDManager

Issues similaires

Plus d'issues Go

Recevez les nouvelles issues par e-mail

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