This issue seems to exist since the CL that introduced import mode to the V4L2VDA (3aa05461cc14e97d30f5bfe0a1428750a20c35ed):
./video_decode_accelerator_unittest --single-process-tests --test_video_data=test-25fps.vp8:320:240:250:250:35:150:11 --test_import --gtest_filter="*ResetAfterFirstConfigInfo*"
[31522:31522:0912/171334.304031:1990961692898:ERROR:icu_util.cc(172)] Invalid file descriptor to ICU data received.
Note: Google Test filter = *ResetAfterFirstConfigInfo*
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
libEGL warning: DRI2: failed to open vgem (search paths /usr/lib/dri)
device-enumerator: scan all dirs
device-enumerator: scanning /sys/bus
device-enumerator: scanning /sys/class
[----------] 1 test from ResetAfterFirstConfigInfo/VideoDecodeAcceleratorParamTest
[ RUN ] ResetAfterFirstConfigInfo/VideoDecodeAcceleratorParamTest.TestSimpleDecode/0
[31522:31530:0912/171334.439756:1990961828550:FATAL:v4l2_video_decode_accelerator.cc(631)] Check failed: kAwaitingPictureBuffers == decoder_state_ (5 vs. 3)
#0 0x000006462cc8 base::debug::StackTrace::StackTrace()
#1 0x00000634fe20 base::debug::StackTrace::StackTrace()
#2 0x00000636ae80 logging::LogMessage::~LogMessage()
#3 0x000006318152 media::V4L2VideoDecodeAccelerator::ImportBufferForPictureTask()
#4 0x00000632c5d2 _ZN4base8internal13FunctorTraitsIMN5media26V4L2VideoDecodeAcceleratorEFviNSt3__16vectorINS_13ScopedGenericIiNS0_19ScopedFDCloseTraitsEEENS4_9allocatorIS8_EEEEiEvE6InvokeISD_PS3_JRKiSB_SI_EEEvT_OT0_DpOT1_
#5 0x00000632c424 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKMN5media26V4L2VideoDecodeAcceleratorEFviNSt3__16vectorINS_13ScopedGenericIiNS0_19ScopedFDCloseTraitsEEENS6_9allocatorISA_EEEEiEJPS5_RKiSD_SK_EEEvOT_DpOT0_
#6 0x00000632c394 _ZN4base8internal7InvokerINS0_9BindStateIMN5media26V4L2VideoDecodeAcceleratorEFviNSt3__16vectorINS_13ScopedGenericIiNS0_19ScopedFDCloseTraitsEEENS5_9allocatorIS9_EEEEiEJNS0_17UnretainedWrapperIS4_EEiNS0_13PassedWrapperISC_EEiEEEFvvEE7RunImplIRKSE_RKNS5_5tupleIJSG_iSI_iEEEJLj0ELj1ELj2ELj3EEEEvOT_OT0_NS5_16integer_sequenceIjJXspT1_EEEE
#7 0x00000632c26c _ZN4base8internal7InvokerINS0_9BindStateIMN5media26V4L2VideoDecodeAcceleratorEFviNSt3__16vectorINS_13ScopedGenericIiNS0_19ScopedFDCloseTraitsEEENS5_9allocatorIS9_EEEEiEJNS0_17UnretainedWrapperIS4_EEiNS0_13PassedWrapperISC_EEiEEEFvvEE3RunEPNS0_13BindStateBaseE
#8 0x0000052dd4c0 _ZNO4base12OnceCallbackIFvvEE3RunEv
#9 0x00000649580e base::debug::TaskAnnotator::RunTask()
#10 0x000006374e76 base::MessageLoop::RunTask()
#11 0x0000063750b0 base::MessageLoop::DeferOrRunPendingTask()
#12 0x0000063753d4 base::MessageLoop::DoWork()
#13 0x00000637ad0a base::MessagePumpDefault::Run()
#14 0x000006374990 base::MessageLoop::Run()
#15 0x0000063ba272 base::RunLoop::Run()
#16 0x000006404736 base::Thread::Run()
#17 0x000006404e24 base::Thread::ThreadMain()
#18 0x000006479fb2 base::(anonymous namespace)::ThreadFunc()
Looks like a race between resetting and buffer import. The following code in particular looks suspicious:
if (reset_pending_) {
FinishReset(); // Changes decoder_state_ to kResetting
}
...
if (image_processor_device_ && !image_processor_) {
...
DCHECK_EQ(kAwaitingPictureBuffers, decoder_state_); // Fails
}