Open
Bug 1235746
Opened 9 years ago
Updated 2 years ago
|mach android-emulator| shuts down the emulator after a few minutes on Windows
Categories
(Testing :: General, defect)
Tracking
(firefox46 affected)
NEW
Tracking | Status | |
---|---|---|
firefox46 | --- | affected |
People
(Reporter: Dexter, Unassigned)
Details
With bug 1235559, Windows devs are able to download and run Android emulators to debug/test Firefox for Android (which can be built in a linux VM).
Everything works just fine until, sadly, the emulator (4.3 image) gets shut down:
$ ./mach android-emulator --verbose --wait
DEBUG: Unable to find executable at
DEBUG: adb.exe found at C:\Users\Alessio\AppData\Local\Android\android-sdk\platform-tools\adb.exe
DEBUG: Emulator created with type 4.3
DEBUG: Unable to find executable at
DEBUG: emulator.exe found at C:\Users\Alessio\AppData\Local\Android\android-sdk\tools\emulator.exe
DEBUG: AVD found at c:/Users/Alessio\.mozbuild\android-device\avd\mozemulator-4.3.avd
0:01.81 Starting Android emulator running Android 4.3...
DEBUG: Starting the emulator with this command: C:\Users\Alessio\AppData\Local\Android\android-sdk\tools\emulator.exe -avd mozemulator-4.3 -port 5554 -show-kernel -debug init,console,gles,memcheck,adbserver,adbclient,adb,avd_config,socket
DEBUG: Emulator output will be written to 'c:/Users/Alessio\.mozbuild\android-device\emulator.log'
DEBUG: Emulator started with pid 9936
DEBUG: Waiting for device status...
DEBUG: Device status verified.
DEBUG: Checking that Android has booted...
DEBUG: Android boot status verified.
DEBUG: >>> avd status
DEBUG: <<<
virtual device is running
OK
DEBUG: >>> redir list
DEBUG: <<<
no active redirections
OK
DEBUG: >>> network status
DEBUG: <<<
Current network status:
download speed: 0 bits/s (0.0 KB/s)
upload speed: 0 bits/s (0.0 KB/s)
minimum latency: 0 ms
maximum latency: 0 ms
OK
0:43.35 Android emulator is running.
0:43.35 No Firefox for Android build detected.
Switch to a Firefox for Android build context or use 'mach bootstrap'
to setup an Android build environment.
0:43.35 Waiting for Android emulator to close...
Parent process 9936 exited with children alive:
PIDS: 7176
Attempting to kill them...
4:56.37 Android emulator completed with return code 0.
Manually running the same command ./mach android-emulator generates works just fine.
Comment 1•9 years ago
|
||
:ahal -- Can you offer some insight? I think we are hitting http://hg.mozilla.org/mozilla-central/annotate/9ddf0da90fb3/testing/mozbase/mozprocess/mozprocess/processhandler.py#l393. |mach android-emulator --wait| is using mozprocess to launch and wait for "emulator.exe". I guess emulator.exe spawns a child and then exits, and mozprocess then kills the child after 3+ minutes. Is there a way to keep waiting (and not kill anything) until the child exits?
Flags: needinfo?(ahalberstadt)
Reporter | ||
Comment 2•9 years ago
|
||
(In reply to Geoff Brown [:gbrown] from comment #1)
> |mach android-emulator --wait| is using mozprocess to launch and wait for "emulator.exe". I guess
> emulator.exe spawns a child and then exits, and mozprocess then kills the
> child after 3+ minutes.
That's exactly what I'm seeing locally: "emulator.exe" spawns "emulator-arm.exe" and then exits.
Comment 3•9 years ago
|
||
I know very little about mozprocess on windows. Unfortunately my name is on the blame because I'm the one who copied mozbase from github to m-c, but I didn't write that code. Here's the real blame:
https://github.com/mozilla/mozbase-deprecated/blame/old-master/mozprocess/mozprocess/processhandler.py#L347
The only help I can offer beyond that is maybe ignore_children is getting set to True somehow? Or there was a fallback to ignoring children? See this comment:
https://dxr.mozilla.org/mozilla-central/source/testing/mozbase/mozprocess/mozprocess/processhandler.py#54
Flags: needinfo?(ahalberstadt)
Reporter | ||
Comment 4•9 years ago
|
||
(In reply to Andrew Halberstadt [:ahal] from comment #3)
> The only help I can offer beyond that is maybe ignore_children is getting
> set to True somehow? Or there was a fallback to ignoring children? See this
> comment:
> https://dxr.mozilla.org/mozilla-central/source/testing/mozbase/mozprocess/
> mozprocess/processhandler.py#54
Thanks for following up! Unfortunately that doesn't seem to be the case, ignore_children is False on my system when the whole thing shuts down.
Reporter | ||
Comment 5•9 years ago
|
||
As highlighted in comment 1, when the parent process quits (on Windows) we expect the children to quit as well [1]. If that doesn't happen we kill all the children spawned by the parent [2].
As far as I can tell, this is the correct behaviour with |ignore_children| [3] being False. It tracks the parent process and all its children, which are killed when the parent quits.
[1] - https://dxr.mozilla.org/mozilla-central/rev/21bf1af375c1fa8565ae3bb2e89bd1a0809363d4/testing/mozbase/mozprocess/mozprocess/processhandler.py#441
[2] - https://dxr.mozilla.org/mozilla-central/rev/21bf1af375c1fa8565ae3bb2e89bd1a0809363d4/testing/mozbase/mozprocess/mozprocess/processhandler.py#383
[3] - https://dxr.mozilla.org/mozilla-central/source/testing/mozbase/mozprocess/mozprocess/processhandler.py#54
Comment 6•9 years ago
|
||
That seems like possibly-reasonable behavior for mozprocess; I wouldn't want to change that for fear of inconveniencing some other mozprocess client.
Is --wait really required on Windows? I see that option as a nice-to-have in general. I'm tempted to say "if Windows and --wait: fail("Sorry, --wait is not supported on Windows.")
Reporter | ||
Comment 7•9 years ago
|
||
(In reply to Geoff Brown [:gbrown] from comment #6)
> Is --wait really required on Windows? I see that option as a nice-to-have in
> general. I'm tempted to say "if Windows and --wait: fail("Sorry, --wait is
> not supported on Windows.")
The problem is that the emulator shuts down also without "--wait", making it basically impossible to use for anything on Windows. I commonly use the emulator to track down issues with my XPCSHELL-tests: regardless of the presence of "--wait", the emulator gets killed while the xpcshell framework is still copying data over.
I had some success by adding |ignore_children=True| to [1] (only on Windows). I'm not sure if there's any implication, but works for me.
That said, I would second your temptation of clearly saying "--wait" isn't supported on Windows.
[1] - https://dxr.mozilla.org/mozilla-central/rev/21bf1af375c1fa8565ae3bb2e89bd1a0809363d4/testing/mozbase/mozrunner/mozrunner/devices/android_device.py#386
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•