We have seen a couple of crashes in this function where reinitializing the encoder returns VPX_CODEC_MEM_ERROR. Stack trace and config values are as follows:
0f 026ff2dc 71538fbd 006ff2f4 026ff344 026ff2f4 ntdll!KiUserExceptionDispatcher+0xf
10 026ff934 71538bb7 03535790 036180a0 00000000 remoting_core!remoting::VideoEncoderVpx::Configure+0x1e4 [c:\b\c\b\win_pgo\src\remoting\codec\video_encoder_vpx.cc @ 409]
11 026ffa50 7172e9e2 026ffa68 03535780 036180a0 remoting_core!remoting::VideoEncoderVpx::Encode+0x6b [c:\b\c\b\win_pgo\src\remoting\codec\video_encoder_vpx.cc @ 288]
12 026ffa78 7172f0f9 026ffaa8 0361b0d8 03535780 remoting_core!remoting::protocol::VideoFramePump::EncodeFrame+0x3a [c:\b\c\b\win_pgo\src\remoting\protocol\video_frame_pump.cc @ 162]
13 (Inline) -------- -------- -------- -------- remoting_core!base::internal::FunctorTraits<std::unique_ptr<remoting::protocol::VideoFramePump::PacketWithTimestamps,std::default_delete<remoting::protocol::VideoFramePump::PacketWithTimestamps> > (__cdecl*)(remoting::VideoEncoder *,std::unique_ptr<webrtc::DesktopFrame,std::default_delete<webrtc::DesktopFrame> >,std::unique_ptr<remoting::protocol::VideoFramePump::FrameTimestamps,std::default_delete<remoting::protocol::VideoFramePump::FrameTimestamps> >),void>::Invoke+0x1f [c:\b\c\b\win_pgo\src\base\bind_internal.h @ 166]
14 (Inline) -------- -------- -------- -------- remoting_core!base::internal::InvokeHelper<0,std::unique_ptr<remoting::protocol::VideoFramePump::PacketWithTimestamps,std::default_delete<remoting::protocol::VideoFramePump::PacketWithTimestamps> > >::MakeItSo+0x1f [c:\b\c\b\win_pgo\src\base\bind_internal.h @ 294]
15 (Inline) -------- -------- -------- -------- remoting_core!base::internal::Invoker<base::internal::BindState<std::unique_ptr<remoting::protocol::VideoFramePump::PacketWithTimestamps,std::default_delete<remoting::protocol::VideoFramePump::PacketWithTimestamps> > (__cdecl*)(remoting::VideoEncoder *,std::unique_ptr<webrtc::DesktopFrame,std::default_delete<webrtc::DesktopFrame> >,std::unique_ptr<remoting::protocol::VideoFramePump::FrameTimestamps,std::default_delete<remoting::protocol::VideoFramePump::FrameTimestamps> >),remoting::VideoEncoder *,base::internal::PassedWrapper<std::unique_ptr<webrtc::DesktopFrame,std::default_delete<webrtc::DesktopFrame> > >,base::internal::PassedWrapper<std::unique_ptr<remoting::protocol::VideoFramePump::FrameTimestamps,std::default_delete<remoting::protocol::VideoFramePump::FrameTimestamps> > > >,std::unique_ptr<remoting::protocol::VideoFramePump::PacketWithTimestamps,std::default_delete<remoting::protocol::VideoFramePump::PacketWithTimestamps> > __cdecl(void)>::RunImpl+0x37 [c:\b\c\b\win_pgo\src\base\bind_internal.h @ 368]
16 026ffa9c 7172f147 026ffabc 036180a0 0473c170 remoting_core!base::internal::Invoker<base::internal::BindState<std::unique_ptr<remoting::protocol::VideoFramePump::PacketWithTimestamps,std::default_delete<remoting::protocol::VideoFramePump::PacketWithTimestamps> > (__cdecl*)(remoting::VideoEncoder *,std::unique_ptr<webrtc::DesktopFrame,std::default_delete<webrtc::DesktopFrame> >,std::unique_ptr<remoting::protocol::VideoFramePump::FrameTimestamps,std::default_delete<remoting::protocol::VideoFramePump::FrameTimestamps> >),remoting::VideoEncoder *,base::internal::PassedWrapper<std::unique_ptr<webrtc::DesktopFrame,std::default_delete<webrtc::DesktopFrame> > >,base::internal::PassedWrapper<std::unique_ptr<remoting::protocol::VideoFramePump::FrameTimestamps,std::default_delete<remoting::protocol::VideoFramePump::FrameTimestamps> > > >,std::unique_ptr<remoting::protocol::VideoFramePump::PacketWithTimestamps,std::default_delete<remoting::protocol::VideoFramePump::PacketWithTimestamps> > __cdecl(void)>::Run+0x40 [c:\b\c\b\win_pgo\src\base\bind_internal.h @ 350]
17 (Inline) -------- -------- -------- -------- remoting_core!base::OnceCallback<std::unique_ptr<remoting::protocol::VideoFramePump::PacketWithTimestamps,std::default_delete<remoting::protocol::VideoFramePump::PacketWithTimestamps> > __cdecl(void)>::Run+0x16 [c:\b\c\b\win_pgo\src\base\callback.h @ 65]
18 026ffac0 7147cc5e 00000000 035806f8 0473c0f8 remoting_core!base::internal::ReturnAsParamAdapter<std::unique_ptr<remoting::protocol::VideoFramePump::PacketWithTimestamps,std::default_delete<remoting::protocol::VideoFramePump::PacketWithTimestamps> > >+0x1c [c:\b\c\b\win_pgo\src\base\post_task_and_reply_with_result_internal.h @ 20]
19 (Inline) -------- -------- -------- -------- remoting_core!base::internal::FunctorTraits<void (__cdecl*)(base::OnceCallback<bool __cdecl(void)>,bool *),void>::Invoke+0x14 [c:\b\c\b\win_pgo\src\base\bind_internal.h @ 166]
1a (Inline) -------- -------- -------- -------- remoting_core!base::internal::InvokeHelper<0,void>::MakeItSo+0x14 [c:\b\c\b\win_pgo\src\base\bind_internal.h @ 294]
1b (Inline) -------- -------- -------- -------- remoting_core!base::internal::Invoker<base::internal::BindState<void (__cdecl*)(base::OnceCallback<bool __cdecl(void)>,bool *),base::OnceCallback<bool __cdecl(void)>,bool *>,void __cdecl(void)>::RunImpl+0x14 [c:\b\c\b\win_pgo\src\base\bind_internal.h @ 368]
1c 026ffad4 7157d93d 0473c0f8 026ffc68 0357d6f8 remoting_core!base::internal::Invoker<base::internal::BindState<void (__cdecl*)(base::OnceCallback<bool __cdecl(void)>,bool *),base::OnceCallback<bool __cdecl(void)>,bool *>,void __cdecl(void)>::RunOnce+0x1b [c:\b\c\b\win_pgo\src\base\bind_internal.h @ 336]
1d (Inline) -------- -------- -------- -------- remoting_core!base::OnceCallback<void __cdecl(void)>::Run+0x10 [c:\b\c\b\win_pgo\src\base\callback.h @ 65]
1e 026ffaf4 715a1e9b 0357d6f8 00000000 00000000 remoting_core!base::`anonymous namespace'::PostTaskAndReplyRelay::RunTaskAndPostReply+0x1d [c:\b\c\b\win_pgo\src\base\threading\post_task_and_reply_impl.cc @ 45]
1f (Inline) -------- -------- -------- -------- remoting_core!base::OnceCallback<void __cdecl(void)>::Run+0x15 [c:\b\c\b\win_pgo\src\base\callback.h @ 65]
20 026ffb70 71540bfe 71c4251c 026ffc68 026ffdc0 remoting_core!base::debug::TaskAnnotator::RunTask+0xfb [c:\b\c\b\win_pgo\src\base\debug\task_annotator.cc @ 55]
21 (Inline) -------- -------- -------- -------- remoting_core!base::internal::IncomingTaskQueue::RunTask+0x1a [c:\b\c\b\win_pgo\src\base\message_loop\incoming_task_queue.cc @ 124]
22 026ffc4c 71540dd2 026ffc68 00dd17f0 ffffffff remoting_core!base::MessageLoop::RunTask+0x28e [c:\b\c\b\win_pgo\src\base\message_loop\message_loop.cc @ 400]
23 026ffc60 71540f94 00000000 71cf81f8 71cfa79c remoting_core!base::MessageLoop::DeferOrRunPendingTask+0x42 [c:\b\c\b\win_pgo\src\base\message_loop\message_loop.cc @ 411]
24 026ffd00 715822d8 00dd7928 00000000 026ffda8 remoting_core!base::MessageLoop::DoWork+0x194 [c:\b\c\b\win_pgo\src\base\message_loop\message_loop.cc @ 455]
25 026ffd44 7153e988 026ffdc0 00dd7928 00000000 remoting_core!base::MessagePumpDefault::Run+0x128 [c:\b\c\b\win_pgo\src\base\message_loop\message_pump_default.cc @ 38]
26 026ffd88 7145de94 00dd3290 74c91420 00dd7928 remoting_core!base::RunLoop::Run+0x48 [c:\b\c\b\win_pgo\src\base\run_loop.cc @ 136]
27 026ffe78 715520db 00000000 00000000 00dd3290 remoting_core!remoting::AutoThread::ThreadMain+0x118 [c:\b\c\b\win_pgo\src\remoting\base\auto_thread.cc @ 231]
28 026ffec8 74c9343d 00dd3290 026fff14 77199832 remoting_core!base::`anonymous namespace'::ThreadFunc+0xbb [c:\b\c\b\win_pgo\src\base\threading\platform_thread_win.cc @ 93]
29 026ffed4 77199832 00dd3290 798bbf4b 00000000 kernel32!BaseThreadInitThunk+0xe
2a 026fff14 77199805 71552020 00dd3290 00000000 ntdll!__RtlUserThreadStart+0x70
2b 026fff2c 00000000 71552020 00dd3290 00000000 ntdll!_RtlUserThreadStart+0x1b
0:008> .frame 10
10 026ff934 71538bb7 remoting_core!remoting::VideoEncoderVpx::Configure+0x1e4 [c:\b\c\b\win_pgo\src\remoting\codec\video_encoder_vpx.cc @ 409]
0:008> dv
this = 0x0361b0d8
size = 0x03535790
config = struct vpx_codec_enc_cfg
ret = VPX_CODEC_MEM_ERROR (0n2)
0:008> dt config
dtx is unsupported for this scenario. It only recognizes dtx [<type>] [<address>] with -a, -h, and -r. Reverting to dt.
Local var @ 0x26ff7c0 Type vpx_codec_enc_cfg
+0x000 g_usage : 0
+0x004 g_threads : 2
+0x008 g_profile : 2
+0x00c g_w : 0xf00
+0x010 g_h : 0x438
+0x014 g_bit_depth : 8 ( VPX_BITS_8 )
+0x018 g_input_bit_depth : 8
+0x01c g_timebase : vpx_rational
+0x024 g_error_resilient : 0
+0x028 g_pass : 0 ( VPX_RC_ONE_PASS )
+0x02c g_lag_in_frames : 0
+0x030 rc_dropframe_thresh : 0
+0x034 rc_resize_allowed : 0
+0x038 rc_scaled_width : 1
+0x03c rc_scaled_height : 1
+0x040 rc_resize_up_thresh : 0x3c
+0x044 rc_resize_down_thresh : 0x1e
+0x048 rc_end_usage : 0 ( VPX_VBR )
+0x04c rc_twopass_stats_in : vpx_fixed_buf
+0x054 rc_firstpass_mb_stats_in : vpx_fixed_buf
+0x05c rc_target_bitrate : 0x3600
+0x060 rc_min_quantizer : 0x14
+0x064 rc_max_quantizer : 0x1e
+0x068 rc_undershoot_pct : 0x64
+0x06c rc_overshoot_pct : 0x64
+0x070 rc_buf_sz : 0x1770
+0x074 rc_buf_initial_sz : 0xfa0
+0x078 rc_buf_optimal_sz : 0x1388
+0x07c rc_2pass_vbr_bias_pct : 0x32
+0x080 rc_2pass_vbr_minsection_pct : 0
+0x084 rc_2pass_vbr_maxsection_pct : 0x190
+0x088 rc_2pass_vbr_corpus_complexity : 0
+0x08c kf_mode : 1 ( VPX_KF_AUTO )
+0x090 kf_min_dist : 0x2710
+0x094 kf_max_dist : 0x2710
+0x098 ss_number_layers : 1
+0x09c ss_enable_auto_alt_ref : [5] 0n0
+0x0b0 ss_target_bitrate : [5] 0
+0x0c4 ts_number_layers : 1
+0x0c8 ts_target_bitrate : [5] 0
+0x0dc ts_rate_decimator : [5] 0
+0x0f0 ts_periodicity : 0
+0x0f4 ts_layer_id : [16] 0
+0x134 layer_target_bitrate : [12] 0
+0x164 temporal_layering_mode : 0n0
Comment 1 by joedow@chromium.org
, Feb 27 2018