Closed Bug 1083609 Opened 10 years ago Closed 6 years ago

Crash playing video

Categories

(Firefox OS Graveyard :: General, defect)

x86_64
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: cjones, Unassigned)

References

Details

It's here

Program received signal SIGSEGV, Segmentation fault.
mozilla::gl::GLContext::MakeCurrent (this=0xe, aForce=false)
    at /home/cjones/mozilla/b2g/gecko/gfx/gl/GLContext.h:3244
3244	        return mSymbols.fUseProgram == nullptr;
(gdb) bt
#0  mozilla::gl::GLContext::MakeCurrent (this=0xe, aForce=false)
    at /home/cjones/mozilla/b2g/gecko/gfx/gl/GLContext.h:3244
#1  0xb480daec in mozilla::layers::GrallocTextureSourceOGL::SetTextureBackendSpecificData (this=0xae302100, aBackendData=0xadb18bc0)
    at /home/cjones/mozilla/b2g/gecko/gfx/layers/opengl/GrallocTextureHost.cpp:242
#2  0xb4807754 in mozilla::layers::GrallocTextureHostOGL::SetCompositableBackendSpecificData (this=0xaf94dfa0, aBackendData=0xaf1a6b40)
    at /home/cjones/mozilla/b2g/gecko/gfx/layers/opengl/GrallocTextureHost.cpp:538
#3  0xb47dee24 in mozilla::layers::ImageHost::Composite (this=0xae145a60, 
    aEffectChain=<value optimized out>, aOpacity=<value optimized out>, 
    aTransform=<value optimized out>, aFilter=..., aClipRect=..., 
    aVisibleRegion=0x0)
    at /home/cjones/mozilla/b2g/gecko/gfx/layers/composite/ImageHost.cpp:100
#4  0xb47e16dc in mozilla::layers::ImageLayerComposite::RenderLayer (
    this=0xaeecd400, aClipRect=<value optimized out>)
    at /home/cjones/mozilla/b2g/gecko/gfx/layers/composite/ImageLayerComposite.cpp:112
#5  0xb47e7618 in mozilla::layers::RenderLayers<mozilla::layers::ContainerLayerComposite> (aContainer=<value optimized out>, aManager=0xaf9e1ac0, 
    aClipRect=...)
    at /home/cjones/mozilla/b2g/gecko/gfx/layers/composite/ContainerLayerComposite.cpp:325

The problem is that we're using a BasicCompositor, but apparently have allocated gralloc memory for the video frames.  We probably need to extend bug 1082895, but I'm not sure how deeply gralloc is baked into FFOS video playback these days.
DisableGralloc() is used in TextureClient::CreateForDrawing(). TextureClient::CreateForDrawing() is a function for general layers(CompositableClients). In gonk, camera and hw video codec uses ANativeWindow(GonkNativeWindow). It is gonk specific and works only by using gralloc buffers.
Therefore, GonkNativeWindow directly allocate GrallocTextureClientOGL as TextureClient. like the following.
 http://dxr.mozilla.org/mozilla-central/source/widget/gonk/nativewindow/GonkNativeWindowICS.cpp#323

About overview of the current architecture, the following diagrams might help. 
 https://github.com/sotaroikeda/firefox-diagrams/blob/master/dom/dom_camera_FirefoxOS_2_1.pdf?raw=true
 https://github.com/sotaroikeda/firefox-diagrams/blob/master/gfx/gfx_ImageBridge_FirefoxOS_2_1.pdf

Other diagrams are in the following.
 https://github.com/sotaroikeda/firefox-diagrams/wiki/Firefox-Diagrams
video playback could be possible without using gralloc if we do not instantiate GonkNativeWindow for OMXCodec. But this code path is not used recently and it requests one extra video data copy.
Thanks, good to know! :)
Firefox OS is not being worked on
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.