[mako] out of index crash when handling media_codec output buffers list
Bug #1234007 reported by
Ricardo Salveti
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gst-plugins-bad1.0 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
libhybris (Ubuntu) |
Fix Released
|
Critical
|
Jim Hodapp |
Bug Description
Image: 20131001.3, + updated packages to use gstreamer 1.2 (also happens with gst 1.1.4).
Device: mako
Steps to reproduce:
* Install mediaplayer-
* As phablet: stop unity8
* gst-launch-1.0 -v playbin uri=file:
Will crash when initializing the decoding/playback.
Logs attached.
Changed in gst-plugins-bad1.0 (Ubuntu): | |
status: | New → Invalid |
To post a comment you must log in.
See that mako's OMX element is a bit smarter and decides to release a few buffers before they are consumed later on. This breaks the current buffer list logic inside compat/ media/media_ codec_layer. cpp, causing an index out of range issue.
V/MediaCodecLayer( 4647): size_t media_codec_ get_output_ buffers_ size(MediaCodec Delegate) get_nth_ output_ buffer( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer_ capacity( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer_ capacity( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer_ capacity( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer_ capacity( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer_ capacity( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer_ capacity( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer_ capacity( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer_ capacity( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer_ capacity( MediaCodecDeleg ate, size_t) get_nth_ output_ buffer( MediaCodecDeleg ate, size_t) :Vector< TYPE>:: operator[ ](size_ t) const [with TYPE = android: :sp<android: :ABuffer> ; size_t = unsigned int]: index=9 out of range (9)
V/MediaCodecLayer( 4647): uint8_t* media_codec_
V/MediaCodecLayer( 4647): size_t media_codec_
V/MediaCodecLayer( 4647): uint8_t* media_codec_
V/MediaCodecLayer( 4647): size_t media_codec_
V/MediaCodecLayer( 4647): uint8_t* media_codec_
V/MediaCodecLayer( 4647): size_t media_codec_
V/MediaCodecLayer( 4647): uint8_t* media_codec_
V/MediaCodecLayer( 4647): size_t media_codec_
V/MediaCodecLayer( 4647): uint8_t* media_codec_
V/MediaCodecLayer( 4647): size_t media_codec_
V/MediaCodecLayer( 4647): uint8_t* media_codec_
V/MediaCodecLayer( 4647): size_t media_codec_
V/MediaCodecLayer( 4647): uint8_t* media_codec_
V/MediaCodecLayer( 4647): size_t media_codec_
V/MediaCodecLayer( 4647): uint8_t* media_codec_
V/MediaCodecLayer( 4647): size_t media_codec_
V/MediaCodecLayer( 4647): uint8_t* media_codec_
V/MediaCodecLayer( 4647): size_t media_codec_
V/MediaCodecLayer( 4647): uint8_t* media_codec_
F/MediaCodecLayer( 4647): const TYPE& android: