New issue
Advanced search Search tips

Issue 706243 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug



Sign in to add a comment

[Remoting Host] Host crashes when streaming WebRTC VP8

Project Member Reported by yuweih@chromium.org, Mar 29 2017

Issue description

Host may crash after streaming WebRTC VP8 video for about 15min, due to this assertion failure:
https://cs.chromium.org/chromium/src/third_party/libvpx/source/libvpx/vp8/common/treecoder.c?l=92&rcl=2fac50fa0ee099c632d97a941a9871e7cecbe720

Backtrace:
#0  0x00007f4a5e46dc37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007f4a5e471028 in __GI_abort () at abort.c:89
#2  0x00007f4a5e466bf6 in __assert_fail_base (fmt=0x7f4a5e5babf8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x14e7ede "tot < (1 << 24)", file=file@entry=0x14e7eee "../../third_party/libvpx/source/libvpx/vp8/common/treecoder.c", line=line@entry=92, function=function@entry=0x14e7f2c "void vp8_tree_probs_from_distribution(int, vp8_token *, const vp8_tree_index *, vp8_prob *, unsigned int (*)[2], const unsigned int *, unsigned int, int)") at assert.c:92
#3  0x00007f4a5e466ca2 in __GI___assert_fail (assertion=0x14e7ede "tot < (1 << 24)", file=0x14e7eee "../../third_party/libvpx/source/libvpx/vp8/common/treecoder.c", line=92, function=0x14e7f2c "void vp8_tree_probs_from_distribution(int, vp8_token *, const vp8_tree_index *, vp8_prob *, unsigned int (*)[2], const unsigned int *, unsigned int, int)") at assert.c:101
#4  0x000000000090d439 in vp8_tree_probs_from_distribution (n=5, tok=0x1563510 <vp8_ymode_encodings>, tree=0x1563b32 <vp8_ymode_tree> "", probs=0x7f4a5039abe4 "\200", branch_ct=0x7f4a5039aba0, num_events=0x889b636c664, Pfac=256, rd=1) at ../../third_party/libvpx/source/libvpx/vp8/common/treecoder.c:92
#5  0x000000000089b407 in update_mode (w=0x889b636fa10, n=4, tok=0x1563510 <vp8_ymode_encodings>, tree=0x1563b32 <vp8_ymode_tree> "", Pnew=0x7f4a5039abe4 "\200", Pcur=0x889b636f57b "\377\200\061\017\305vŴ\242\031", '\200' <repeats 33 times>, "\304\303\364ю\267\360\315ᦀ2\231\305\300\224\240\243\222ߨ\377\tb\204\230\237\240\242t\371y\377\001\215\347\350Υ\323j\276\177\377\021e\265ݾ\241\231sޜ\367\002$^\234n\230\253r\364\314\377\001\261\363ܩ\261\347\245\366\227\200#\233\356\334ݷ\357\240\377\240\200\006[{\302~\240\305p\377\375\377\001\266\363Ԡ\254ݗ\377\271\377\025\204¯\204\245٠\365\261\377\001.\177\247\177\237\343\226\370\321\377\001\331\374\325\301\272֞\377\342\200\060\274\362\363\235\253\277\200\377׀\003", <incomplete sequence \324>..., bct=0x7f4a5039aba0, num_events=0x889b636c664) at ../../third_party/libvpx/source/libvpx/vp8/encoder/bitstream.c:63
#6  0x000000000089aece in update_mbintra_mode_probs (cpi=0x889b6353040) at ../../third_party/libvpx/source/libvpx/vp8/encoder/bitstream.c:94
#7  0x000000000089a0eb in pack_inter_mode_mvs (cpi=0x889b6353040) at ../../third_party/libvpx/source/libvpx/vp8/encoder/bitstream.c:452
#8  0x000000000089990f in vp8_pack_bitstream (cpi=0x889b6353040, dest=0x889b6571020 "\365", <incomplete sequence \323>, dest_end=0x889b6dd2020 "", size=0x7f4a5039b118) at ../../third_party/libvpx/source/libvpx/vp8/encoder/bitstream.c:1326
#9  0x00000000007dbc25 in encode_frame_to_data_rate (cpi=0x889b6353040, size=0x7f4a5039b118, dest=0x889b6571020 "\365", <incomplete sequence \323>, dest_end=0x889b6dd2020 "", frame_flags=0x7f4a5039b1c0) at ../../third_party/libvpx/source/libvpx/vp8/encoder/onyx_if.c:4451
#10 0x00000000007d95f1 in vp8_get_compressed_data (cpi=0x889b6353040, frame_flags=0x7f4a5039b1c0, size=0x7f4a5039b118, dest=0x889b6571020 "\365", <incomplete sequence \323>, dest_end=0x889b6dd2020 "", time_stamp=0x7f4a5039b128, time_end=0x7f4a5039b120, flush=0) at ../../third_party/libvpx/source/libvpx/vp8/encoder/onyx_if.c:5098
#11 0x000000000079fe8c in vp8e_encode (ctx=0x889b62a6030, img=0x889b48a7860, pts=0, duration=33000, flags=0, deadline=1) at ../../third_party/libvpx/source/libvpx/vp8/vp8_cx_iface.c:879
#12 0x00000000007b0171 in vpx_codec_encode (ctx=0x889b49083a0, img=0x889b48a7860, pts=0, duration=33000, flags=0, deadline=1) at ../../third_party/libvpx/source/libvpx/vpx/src/vpx_encoder.c:209
#13 0x0000000000761911 in remoting::WebrtcVideoEncoderVpx::Encode (this=0x889b52eb220, frame=0x889bf728430, params=...) at ../../remoting/codec/webrtc_video_encoder_vpx.cc:323
#14 0x0000000000ab13b2 in remoting::protocol::WebrtcVideoStream::EncodeFrame (encoder=0x889b52eb220, frame=std::unique_ptr<webrtc::DesktopFrame> containing 0x889bf728430, params=..., timestamps=std::unique_ptr<remoting::protocol::WebrtcVideoStream::FrameTimestamps> containing 0x0) at ../../remoting/protocol/webrtc_video_stream.cc:204
...

Full trace: gpaste/4755781803048960

VP9 streaming has similar issue but caused by different assertion failure. Not sure whether this is a bug in WebRTC.
 
Do I understand it correctly that you see this in Debug builds only, and release-mode builds work correctly?

Comment 2 by yuweih@chromium.org, Mar 29 2017

I saw it in debug build. Haven't tried in release build...
Owner: yuweih@chromium.org
Status: Assigned (was: Untriaged)
Owner: sergeyu@chromium.org

Sign in to add a comment