Closed Bug 1317887 Opened 5 years ago Closed 5 years ago

dom/ipc/tests/test_temporaryfile_stream.html crashes on try server when remote codec pref is on.

Categories

(Firefox for Android Graveyard :: Audio/Video, defect, P3)

ARM
Android
defect

Tracking

(firefox53 fixed)

RESOLVED FIXED
Firefox 53
Tracking Status
firefox53 --- fixed

People

(Reporter: jhlin, Assigned: kikuo)

References

Details

Attachments

(1 file)

See https://treeherder.mozilla.org/#/jobs?repo=try&revision=24552811c0ba2575c3aa8c2cf4511e4eba5fd1e4&selectedJob=31101072

It passes when pref is off -- https://treeherder.mozilla.org/#/jobs?repo=try&revision=c61a3d37dd9d5de6926190f0a9996a987720da6a&selectedJob=31101048

Logcat shows the failed test got black pixel at 1st check and GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT at 2nd check. On the other hand, passed test got red pixel at 1st check.
Blocks: 1257777
Blocks: 1311960
No longer blocks: 1257777
See Also: → 1318245
Assignee: nobody → kikuo
Tried to reproduce this bug locally.

I've tested 
1) ./mach android-emulator --version 4.3
  ==> CANNOT start up the emulator successfully ...

2) ./mach android-emulator --version 6.0
  ==> failed, no matter in-process decode or out-of-process decode, log snippet shown below... 

11-24 02:50:55.541  1234  1234 I GeckoApplication: zerdatime 744972 - Fennec application start
11-24 02:50:55.823  1234  1246 D GeckoRemoteCodec: configure org.mozilla.gecko.media.Codec@9404696
11-24 02:50:56.042  1234  1246 W VideoCapabilities: Unrecognized profile/level 0/0 for video/mpeg2
11-24 02:50:56.043  1234  1246 W VideoCapabilities: Unrecognized profile/level 0/2 for video/mpeg2
11-24 02:50:56.043  1234  1246 W VideoCapabilities: Unrecognized profile/level 0/3 for video/mpeg2
11-24 02:50:56.178  1234  1246 I VideoCapabilities: Unsupported profile 4 for video/mp4v-es
11-24 02:50:56.240  1234  1250 I OMXClient: Using client-side OMX mux.
11-24 02:50:56.398  1234  1246 D GeckoAsyncCodecAPIv16: start poller for codec:org.mozilla.gecko.media.JellyBeanAsyncCodec@3e3f217, thread=1253
11-24 02:50:56.406  1234  1246 D GeckoRemoteCodec: configure mediacodec with crypto(false) / Id :
11-24 02:50:56.438  1234  1246 D GeckoAsyncCodecAPIv16: setCallbacks(): sender=Handler (org.mozilla.gecko.media.JellyBeanAsyncCodec$CallbackSender) {9b4
604}
11-24 02:50:56.447  1234  1249 I MediaCodec: [OMX.google.vp8.decoder] setting surface generation to 1263617
11-24 02:50:56.459  1234  1250 W OMXNodeInstance: [1:google.vp8.decoder] component does not support metadata mode; using fallback
11-24 02:50:56.459  1234  1250 E ACodec  : [OMX.google.vp8.decoder] storeMetaDataInBuffers failed w/ err -1010
11-24 02:50:56.462  1234  1250 E OMXNodeInstance: getParameter(1:google.vp8.decoder, ParamVideoAndroidVp8Encoder(0x6f600007)) ERROR: UnsupportedIndex(0x8000101a)
11-24 02:50:56.476  1234  1246 D GeckoRemoteCodec: org.mozilla.gecko.media.JellyBeanAsyncCodec@3e3f217 created
11-24 02:50:56.574  1234  1247 D GeckoRemoteCodec: start org.mozilla.gecko.media.Codec@9404696
11-24 02:50:57.026  1043  1186 D         : HostConnection::get() New Host Connection established 0x9287fa20, tid 1186
11-24 02:50:57.125  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement 947f9000, FirstFrameLoaded() mFirstFrameLoaded=0 mWaitingForKey=0
11-24 02:50:57.126  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement MediaElement 947f9000 UpdateReadyStateInternal() Decoder download suspended b
y cache
11-24 02:50:57.136  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement 947f9000 Ready state changed to HAVE_ENOUGH_DATA
11-24 02:50:57.199  1234  1249 D         : HostConnection::get() New Host Connection established 0xaad308f0, tid 1249
11-24 02:50:57.210  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement 947f9000 ChangeDelayLoadStatus(0) doc=0x946be800
11-24 02:50:57.218  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement MediaElement 947f9000 UpdateReadyStateInternal() Decoder download suspended b
y cache
11-24 02:50:57.218  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement MediaElement 947f9000 UpdateReadyStateInternal() Decoder download suspended b
y cache
11-24 02:50:57.266  1234  1253 D GeckoRemoteCodec: output EOS
11-24 02:50:57.277  1234  1247 D GeckoRemoteCodec: stop org.mozilla.gecko.media.Codec@9404696
11-24 02:50:57.864  1234  1253 D GeckoAsyncCodecAPIv16: handler Handler (org.mozilla.gecko.media.JellyBeanAsyncCodec$BufferPoller) {c2b98b3} done cancel
lation, codec=org.mozilla.gecko.media.JellyBeanAsyncCodec@3e3f217
11-24 02:50:57.865  1234  1253 D GeckoAsyncCodecAPIv16: handler Handler (org.mozilla.gecko.media.JellyBeanAsyncCodec$CallbackSender) {9b4604} done cance
llation, codec=org.mozilla.gecko.media.JellyBeanAsyncCodec@3e3f217
11-24 02:50:57.976  1043  1090 I Gecko   : nsAndroidBridge::Observe, get media-playback event.
11-24 02:50:57.976  1043  1090 I Gecko   : nsAndroidBridge, request audio focus.
11-24 02:50:57.977  1043  1090 D AudioFocusAgent: NotifyStartedPlaying
11-24 02:50:57.982   237   779 I MediaFocusControl:  AudioFocus  requestAudioFocus() from android.media.AudioManager@ddedce9org.mozilla.gecko.media.Audi
oFocusAgent$1@4693d6e req=1flags=0x0
11-24 02:50:57.986  1043  1090 D AudioFocusAgent: AudioFocus request granted
11-24 02:50:58.051  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement MediaElement 947f9000 UpdateReadyStateInternal() Decoder download suspended b
y cache
11-24 02:50:58.052  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement MediaElement 947f9000 VideoTrack with id 2 disabled
11-24 02:50:58.056  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement MediaElement 947f9000 UpdateReadyStateInternal() Next frame not available
11-24 02:50:58.057  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement 947f9000 Ready state changed to HAVE_CURRENT_DATA
11-24 02:50:58.057  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement MediaElement 947f9000 UpdateReadyStateInternal() Next frame not available
11-24 02:50:58.149  1043  1056 D         : HostConnection::get() New Host Connection established 0x9287f6e0, tid 1056
11-24 02:50:58.192  1234  1247 D GeckoRemoteCodec: release org.mozilla.gecko.media.Codec@9404696
11-24 02:50:58.201  1234  1253 D GeckoAsyncCodecAPIv16: handler Handler (org.mozilla.gecko.media.JellyBeanAsyncCodec$BufferPoller) {c2b98b3} done cancel
lation, codec=org.mozilla.gecko.media.JellyBeanAsyncCodec@3e3f217
11-24 02:50:58.202  1234  1253 D GeckoAsyncCodecAPIv16: handler Handler (org.mozilla.gecko.media.JellyBeanAsyncCodec$CallbackSender) {9b4604} done cance
llation, codec=org.mozilla.gecko.media.JellyBeanAsyncCodec@3e3f217
11-24 02:50:58.314  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement 947f9000 Log VIDEO_AS_CONTENT_SOURCE: visibility = 1, API: '0' and 'All'
11-24 02:50:58.355  1043  1090 E eglCodecCommon: glUtilsParamSize: unknow param 0x00008caa
11-24 02:50:58.369  1043  1090 E eglCodecCommon: glUtilsParamSize: unknow param 0x00008caa
11-24 02:50:58.375  1043  1090 E eglCodecCommon: **** ERROR unknown type 0x0 (glSizeof,72)
11-24 02:50:58.376  1043  1090 E eglCodecCommon: glUtilsParamSize: unknow param 0x00008caa
11-24 02:50:58.473  1043  1090 I Gecko   : nsAndroidBridge::Observe, get media-playback event.
11-24 02:50:58.473  1043  1090 I Gecko   : nsAndroidBridge, abandon audio focus.
11-24 02:50:58.473  1043  1090 D AudioFocusAgent: NotifyStoppedPlaying
11-24 02:50:58.473  1043  1090 D AudioFocusAgent: Abandon AudioFocus
11-24 02:50:58.475   237   790 I MediaFocusControl:  AudioFocus  abandonAudioFocus() from android.media.AudioManager@ddedce9org.mozilla.gecko.media.Audi
oFocusAgent$1@4693d6e
11-24 02:50:58.483  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement 947f9000 Log VIDEO_AS_CONTENT_SOURCE: visibility = 1, API: '0' and 'All'
11-24 02:50:58.487  1043  1090 E eglCodecCommon: glUtilsParamSize: unknow param 0x00008caa
11-24 02:50:58.489  1043  1090 E eglCodecCommon: glUtilsParamSize: unknow param 0x00008caa
11-24 02:50:58.492  1043  1090 E eglCodecCommon: **** ERROR unknown type 0x0 (glSizeof,72)
11-24 02:50:58.493  1043  1090 E eglCodecCommon: glUtilsParamSize: unknow param 0x00008caa
11-24 02:50:58.505  1043  1090 I Gecko   : [Main Thread]: D/nsMediaElement 947f9000 Log VIDEO_AS_CONTENT_SOURCE: visibility = 1, API: '0' and 'All'
11-24 02:50:58.507  1043  1090 E eglCodecCommon: glUtilsParamSize: unknow param 0x00008caa
11-24 02:50:58.516  1043  1090 E eglCodecCommon: glUtilsParamSize: unknow param 0x00008caa
11-24 02:50:58.519  1043  1090 E eglCodecCommon: **** ERROR unknown type 0x0 (glSizeof,72)
11-24 02:50:58.519  1043  1090 E eglCodecCommon: glUtilsParamSize: unknow param 0x00008caa
11-24 02:50:58.756  1043  1118 W GLConsumer: [SurfaceTexture-0-1043-1] bindTextureImage: clearing GL error: 0x502
11-24 02:50:59.282  1234  1247 D GeckoAsyncCodecAPIv16: stop poller org.mozilla.gecko.media.JellyBeanAsyncCodec@3e3f217
I've also tested Android-Emulator stock AVD Image (Nexus5, APIv18, use HostGPU), it works FINE on out-of-process decode !!

I'm a bit confused how did that happen and wondering what's the difference between the MOZ AVD and stock AVD images.
Hmm...interesting, the test passed ("media.android-remote-codec.enabled = true") !
https://treeherder.mozilla.org/#/jobs?repo=try&revision=bc2d0f524a289a463c11242136a37c6693cc9fde

The only difference is that I set a timeout(0.5s) for invoking MediaRecoder.stop() to make the duration of first frame greater than 0.
John, any thoughts ?
Flags: needinfo?(jolin)
I'll check if it's related to Bug 1318245 tomorrow.
Flags: needinfo?(jolin)
(In reply to Kilik Kuo [:kikuo] from comment #3)
> Hmm...interesting, the test passed ("media.android-remote-codec.enabled =
> true") !
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=bc2d0f524a289a463c11242136a37c6693cc9fde
> 
> The only difference is that I set a timeout(0.5s) for invoking
> MediaRecoder.stop() to make the duration of first frame greater than 0.
> John, any thoughts ?

 Hmm... With non-zero duration frame, was |video.currentTime| also non-zero when ontimeupdate()[1] is called?

[1] http://searchfox.org/mozilla-central/source/dom/canvas/test/captureStream_common.js#117
(In reply to Kilik Kuo [:kikuo] from comment #6)
> Without the "setTimeout" modification to the test file, I tried again. Still
> passed ! 
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=5f893a6b7490f5c09d2206cd4bac4999102a8b5f&selectedJob=3
> 1839352
> 
> Rollback to rv 323686 (before Bug 1318245) - Pass
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=f07a0788832a5eaef1859006670b990c0c187af1
> 
> Rollback to rv 323687 (With Bug 1318245) - Pass 
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=d59902427307a3f79a531081080c00344fe5c2c8
> 
> That must be solved somewhere ...

 In my own try push today, it seems this test case was moved from mochitest-9 to mochitest-11. Could you please check the log to see if it's also moved in your case?
Ah ... sure enough, the test is not in mochitest-9 now, what a stupid thing I've done.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=b50381caacb7bcce0c0880f202c04429378bc5e2&selectedJob=31937612

I dumped the color of several beginning pixels from ImageContainer, they're all black ! (0,0,0)

My next step is to figure out whether the video recorded from recorder is already damaged. I'll try to directly play a uploaded video on that video element(id='recorded-video') to verify.
Priority: -- → P2
https://treeherder.mozilla.org/#/jobs?repo=try&revision=c4a02011b8676083d3824bf97f2f7576ee0e4971&selectedJob=32139443

hmm... tried to dump canvas pixels color before encoding & the pixels color before decoding.
But recently kept getting this intermittent Bug 1300313.
Can't continue the investigation because the test works fine with stock avd android-emulator on local pc.

I'm gonna put it aside, and work on Bug 1317628 first.
Priority: P2 → P3
Tried running remote decoder locally instead of out-of-process and the test passed! [1]
Will try playing video on emulator to see if that works at all.

[1] https://treeherder.mozilla.org/#/jobs?repo=try&revision=1fd817cd774fccf2d0e2424c37a614e4cb3c7af5&selectedJob=32377362
(In reply to John Lin [:jolin][:jhlin] from comment #11)
> Will try playing video on emulator to see if that works at all.

 Couldn't get it work on my desktop PC. T_T
Josh, it seems to me that test_temporaryfile_stream.html was created in bug 1167730 for e10s cross process data serialization. Since Fennec runs in non-e10s mode it seems this test is not useful here.
Do you have any concern if I disable it with 'Skip-if = !e10s'?
Flags: needinfo?(josh)
That sounds fine.
Flags: needinfo?(josh)
Comment on attachment 8819147 [details]
Bug 1317887 - don't run IPC temporary file stream test in non-e10s mode.

https://reviewboard.mozilla.org/r/98990/#review99242
Attachment #8819147 - Flags: review?(josh) → review+
Pushed by jolin@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/68706cd6e148
don't run IPC temporary file stream test in non-e10s mode. r=jdm
https://hg.mozilla.org/mozilla-central/rev/68706cd6e148
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 53
Product: Firefox for Android → Firefox for Android Graveyard
You need to log in before you can comment on or make changes to this bug.