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

Aperta
#22 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
android, go
Ambito
cli, devtools

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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 被拦下;
  • 只开一个根目录时,开关机和网络行为不变。
Lingua principale
Go
Stelle
0
Fork
1
Merge medio
2h 42m
PR unite (30g)
13

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ModAVD/ModAVDManager

Tutte le issue di ModAVD/ModAVDManager

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.