Valgrind error in sampleMovieLens: Conditional jump or move depends on uninitialised value(s)

I’m running TensorRT 4.0.1.6 on Ubuntu 16.04 with a GTX 1080ti. Running the sampleMovieLens sample under Valgrind 3.11.0, I hit multiple uses of uninitialized values from within libnvinfer.so.4.1.2. Valgrind does have false positives, but they are rare.

I was able to reproduce this with very small networks having a single ShuffleLayer using the builder API.

Partial Valgrind output from running

valgrind ./bin/sample_movielens_debug
End building engine...
==21064== Conditional jump or move depends on uninitialised value(s)
==21064==    at 0x51FE86C: nvinfer1::cudnn::createRegionDesc(nvinfer1::cudnn::Region const&, nvinfer1::cudnn::CommonContext const&) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x51FEC8A: nvinfer1::cudnn::ShuffleLayer::execute(nvinfer1::cudnn::CommonContext const&, nvinfer1::cudnn::ExecutionParameters const&) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x51B3A62: nvinfer1::cudnn::ExecutionContext::enqueue(int, void**, CUstream_st*, CUevent_st**) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x407256: submitWork(Batch&, Args) (sampleMovieLens.cpp:463)
==21064==    by 0x40A8EC: void doInference<float>(nvinfer1::ICudaEngine*, std::atomic<int>*, void*&, void*&, Args&) (sampleMovieLens.cpp:539)
==21064==    by 0x407F69: main (sampleMovieLens.cpp:629)
==21064== 
==21064== Conditional jump or move depends on uninitialised value(s)
==21064==    at 0x51FE9CE: nvinfer1::cudnn::createRegionDesc(nvinfer1::cudnn::Region const&, nvinfer1::cudnn::CommonContext const&) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x51FECA9: nvinfer1::cudnn::ShuffleLayer::execute(nvinfer1::cudnn::CommonContext const&, nvinfer1::cudnn::ExecutionParameters const&) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x51B3A62: nvinfer1::cudnn::ExecutionContext::enqueue(int, void**, CUstream_st*, CUevent_st**) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x407256: submitWork(Batch&, Args) (sampleMovieLens.cpp:463)
==21064==    by 0x40A8EC: void doInference<float>(nvinfer1::ICudaEngine*, std::atomic<int>*, void*&, void*&, Args&) (sampleMovieLens.cpp:539)
==21064==    by 0x407F69: main (sampleMovieLens.cpp:629)
==21064== 
==21064== Conditional jump or move depends on uninitialised value(s)
==21064==    at 0x51FE9DB: nvinfer1::cudnn::createRegionDesc(nvinfer1::cudnn::Region const&, nvinfer1::cudnn::CommonContext const&) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x51FECA9: nvinfer1::cudnn::ShuffleLayer::execute(nvinfer1::cudnn::CommonContext const&, nvinfer1::cudnn::ExecutionParameters const&) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x51B3A62: nvinfer1::cudnn::ExecutionContext::enqueue(int, void**, CUstream_st*, CUevent_st**) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x407256: submitWork(Batch&, Args) (sampleMovieLens.cpp:463)
==21064==    by 0x40A8EC: void doInference<float>(nvinfer1::ICudaEngine*, std::atomic<int>*, void*&, void*&, Args&) (sampleMovieLens.cpp:539)
==21064==    by 0x407F69: main (sampleMovieLens.cpp:629)
==21064== 
==21064== Conditional jump or move depends on uninitialised value(s)
==21064==    at 0x51FE9E8: nvinfer1::cudnn::createRegionDesc(nvinfer1::cudnn::Region const&, nvinfer1::cudnn::CommonContext const&) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x51FECA9: nvinfer1::cudnn::ShuffleLayer::execute(nvinfer1::cudnn::CommonContext const&, nvinfer1::cudnn::ExecutionParameters const&) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x51B3A62: nvinfer1::cudnn::ExecutionContext::enqueue(int, void**, CUstream_st*, CUevent_st**) (in /usr/lib/x86_64-linux-gnu/libnvinfer.so.4.1.2)
==21064==    by 0x407256: submitWork(Batch&, Args) (sampleMovieLens.cpp:463)
==21064==    by 0x40A8EC: void doInference<float>(nvinfer1::ICudaEngine*, std::atomic<int>*, void*&, void*&, Args&) (sampleMovieLens.cpp:539)
==21064==    by 0x407F69: main (sampleMovieLens.cpp:629)
==21064==

Note: on TensorRT 5.0.2, this warning is no longer present.