#178 closed defect (fixed)

valgrind error related to JVET-M0823

Reported by: fbossen Owned by:
Priority: minor Milestone: VTM-4.0
Component: VTM Version:
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

With VTM 4.0rc1 (macOS clang 10.0)

EncoderApp -c cfg/per-sequence/SlideShow.cfg -c cfg/encoder_lowdelay_P_vtm.cfg -dph 1 -c cfg/per-class/classF.cfg -q 37 -f 4
POC    0 TId: 0 ( I-SLICE, QP 36 )     131248 bits [Y 38.0316 dB    U 43.7646 dB    V 44.8671 dB] [ET  3314 ] [L0 ] [L1 ] [MD5:a3ef6b513dd6e1c926e3389a19c6270b,bba4df2b65e96de9b99d63cede66d581,04fe58d7c9a3e46f7e446ae880e14a5d]
POC    1 TId: 0 ( P-SLICE, QP 45 )       1456 bits [Y 55.3617 dB    U 62.4768 dB    V 60.4567 dB] [ET    98 ] [L0 0 ] [L1 ] [MD5:f837437d60c4daa3dfd0d2c4382fb544,39b53298bff8fde01f4c721514e5254f,2ef44b54a5f6d24dedcda5ee204ae1c6]
POC    2 TId: 0 ( P-SLICE, QP 44 )        576 bits [Y 61.4541 dB    U 77.2996 dB    V 75.1839 dB] [ET    49 ] [L0 1 0 ] [L1 ] [MD5:f399ad45b19e401a1cfce99febb8ff02,39b53298bff8fde01f4c721514e5254f,0efdff1494d936bc3595cae705fd6061]
==36737== Conditional jump or move depends on uninitialised value(s)
==36737==    at 0x10008A4E7: InterPrediction::xPredInterUni(PredictionUnit const&, RefPicList const&, UnitBuf<short>&, bool const&, bool const&, bool, bool) (InterPrediction.cpp:443)
==36737==    by 0x10008BAEF: InterPrediction::xPredInterBi(PredictionUnit&, UnitBuf<short>&) (InterPrediction.cpp:0)
==36737==    by 0x100089141: InterPrediction::xSubPuMC(PredictionUnit&, UnitBuf<short>&, RefPicList const&) (InterPrediction.cpp:369)
==36737==    by 0x100188154: EncCu::xCheckRDCostAffineMerge2Nx2N(CodingStructure*&, CodingStructure*&, Partitioner&, EncTestMode const&) (EncCu.cpp:3098)
==36737==    by 0x100183E66: EncCu::xCompressCU(CodingStructure*&, CodingStructure*&, Partitioner&, LutMotionCand*&, LutMotionCand*&) (EncCu.cpp:830)
==36737==    by 0x100182D1A: EncCu::compressCtu(CodingStructure&, UnitArea const&, unsigned int, int const*, int const*) (EncCu.cpp:441)
==36737==    by 0x1001DB254: EncSlice::encodeCtus(Picture*, bool, bool, unsigned int, unsigned int, EncLib*) (EncSlice.cpp:1665)
==36737==    by 0x1001D9F4C: EncSlice::compressSlice(Picture*, bool, bool) (EncSlice.cpp:1386)
==36737==    by 0x10019FE65: EncGOP::compressGOP(int, int, std::__1::list<Picture*, std::__1::allocator<Picture*> >&, std::__1::list<UnitBuf<short>*, std::__1::allocator<UnitBuf<short>*> >&, bool, bool, InputColourSpaceConversion, bool, bool) (EncGOP.cpp:2327)
==36737==    by 0x1001B3C10: EncLib::encode(bool, PelStorage*, PelStorage*, InputColourSpaceConversion, std::__1::list<UnitBuf<short>*, std::__1::allocator<UnitBuf<short>*> >&, int&) (EncLib.cpp:599)
==36737==    by 0x100003B18: EncApp::encode() (EncApp.cpp:717)
==36737==    by 0x10005493F: main (encmain.cpp:153)
==36737== 
==36737== Conditional jump or move depends on uninitialised value(s)
==36737==    at 0x10008A4E7: InterPrediction::xPredInterUni(PredictionUnit const&, RefPicList const&, UnitBuf<short>&, bool const&, bool const&, bool, bool) (InterPrediction.cpp:443)
==36737==    by 0x10008BAEF: InterPrediction::xPredInterBi(PredictionUnit&, UnitBuf<short>&) (InterPrediction.cpp:0)
==36737==    by 0x100089141: InterPrediction::xSubPuMC(PredictionUnit&, UnitBuf<short>&, RefPicList const&) (InterPrediction.cpp:369)
==36737==    by 0x10008F09A: InterPrediction::motionCompensation(PredictionUnit&, RefPicList const&, bool, bool) (InterPrediction.cpp:1420)
==36737==    by 0x100188836: EncCu::xCheckRDCostAffineMerge2Nx2N(CodingStructure*&, CodingStructure*&, Partitioner&, EncTestMode const&) (EncCu.cpp:3207)
==36737==    by 0x100183E66: EncCu::xCompressCU(CodingStructure*&, CodingStructure*&, Partitioner&, LutMotionCand*&, LutMotionCand*&) (EncCu.cpp:830)
==36737==    by 0x100192FDA: EncCu::xCheckModeSplit(CodingStructure*&, CodingStructure*&, Partitioner&, EncTestMode const&, LutMotionCand*&, LutMotionCand*&, UnitArea) (EncCu.cpp:1336)
==36737==    by 0x100183E49: EncCu::xCompressCU(CodingStructure*&, CodingStructure*&, Partitioner&, LutMotionCand*&, LutMotionCand*&) (EncCu.cpp:868)
==36737==    by 0x100192FDA: EncCu::xCheckModeSplit(CodingStructure*&, CodingStructure*&, Partitioner&, EncTestMode const&, LutMotionCand*&, LutMotionCand*&, UnitArea) (EncCu.cpp:1336)
==36737==    by 0x100183E49: EncCu::xCompressCU(CodingStructure*&, CodingStructure*&, Partitioner&, LutMotionCand*&, LutMotionCand*&) (EncCu.cpp:868)
==36737==    by 0x100192FDA: EncCu::xCheckModeSplit(CodingStructure*&, CodingStructure*&, Partitioner&, EncTestMode const&, LutMotionCand*&, LutMotionCand*&, UnitArea) (EncCu.cpp:1336)
==36737==    by 0x100183E49: EncCu::xCompressCU(CodingStructure*&, CodingStructure*&, Partitioner&, LutMotionCand*&, LutMotionCand*&) (EncCu.cpp:868)
==36737== 
POC    3 TId: 0 ( P-SLICE, QP 45 )       3592 bits [Y 44.4361 dB    U 47.6582 dB    V 51.5576 dB] [ET   313 ] [L0 2 1 0 ] [L1 ] [MD5:7b6159e316f8fa351686af52184e0c71,a213ba0d1ea6075868bee39e9e859982,39120b764028cff41cf80c7defffb6f9]

The offending line is

int numOfPass = (pu.mmvdMergeFlag && pu.mmvdEncOptMode) ? 1 : (std::min((int)pcYuvPred.bufs.size(), m_maxCompIDToPred + 1));

A low-level motion compensation function should not refer to some encoder optimization variable. It is thus suggested to simply remove the JVET-M0823 related changes in this function, as it should not impact the bitstream.

Change history (1)

comment:1 Changed 21 months ago by fbossen

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.