darktable-org / darktable-org/rawspeed
LJpegDecompressor implicit conversion issue
Open
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 456
- Forks
- 147
- PR merge metrics
- No merged PRs in 30d
Description
../src/librawspeed/decompressors/LJpegDecompressor.cpp:193:27: runtime error: implicit conversion from type 'int' of value 72278 (32-bit, signed) to type 'std::array<unsigned short, 2>::value_type' (aka 'unsigned short') changed the value to 6742 (16-bit, unsigned)
#0 0x573a8a in void rawspeed::LJpegDecompressor::decodeN<2, false>()::'lambda'(int)::operator()(int) const /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/LJpegDecompressor.cpp:193:27
#1 0x564ea1 in rawspeed::unroll_loop_t<void rawspeed::LJpegDecompressor::decodeN<2, false>()::'lambda'(int), 1ul>::repeat(void rawspeed::LJpegDecompressor::decodeN<2, false>()::'lambda'(int) const&) /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/common/Common.h:221:5
#2 0x564ea1 in rawspeed::unroll_loop_t<void rawspeed::LJpegDecompressor::decodeN<2, false>()::'lambda'(int), 2ul>::repeat(void rawspeed::LJpegDecompressor::decodeN<2, false>()::'lambda'(int) const&) /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/common/Common.h:220
#3 0x564ea1 in void rawspeed::unroll_loop<2ul, void rawspeed::LJpegDecompressor::decodeN<2, false>()::'lambda'(int)>(void rawspeed::LJpegDecompressor::decodeN<2, false>()::'lambda'(int) const&) /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/common/Common.h:235
#4 0x564ea1 in void rawspeed::LJpegDecompressor::decodeN<2, false>() /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/LJpegDecompressor.cpp:192
#5 0x5602df in rawspeed::LJpegDecompressor::decodeScan() /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/LJpegDecompressor.cpp:119:7
#6 0x4d1904 in rawspeed::AbstractLJpegDecompressor::parseSOS(rawspeed::ByteStream) /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/AbstractLJpegDecompressor.cpp:210:3
#7 0x4ce011 in rawspeed::AbstractLJpegDecompressor::decode() /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/AbstractLJpegDecompressor.cpp:101:7
#8 0x55ea52 in rawspeed::LJpegDecompressor::decode(unsigned int, unsigned int, unsigned int, unsigned int, bool) /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/LJpegDecompressor.cpp:80:30
#9 0x53ef7d in void rawspeed::AbstractDngDecompressor::decompressThread<7>() const /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/AbstractDngDecompressor.cpp:97:9
#10 0x54281a in rawspeed::AbstractDngDecompressor::decompressThread() const /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/AbstractDngDecompressor.cpp:173:5
#11 0x542fab in .omp_outlined._debug__ /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/AbstractDngDecompressor.cpp:203:3
#12 0x542fab in .omp_outlined. /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/AbstractDngDecompressor.cpp:203
#13 0x7f654480c8a2 in __kmp_invoke_microtask (/usr/lib/x86_64-linux-gnu/libomp.so.5+0xac8a2)
#14 0x7f654479fdbb in __kmp_fork_call (/usr/lib/x86_64-linux-gnu/libomp.so.5+0x3fdbb)
#15 0x7f654478f61c in __kmpc_fork_call (/usr/lib/x86_64-linux-gnu/libomp.so.5+0x2f61c)
#16 0x542d44 in rawspeed::AbstractDngDecompressor::decompress() const /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decompressors/AbstractDngDecompressor.cpp:201:51
#17 0x4f64a5 in rawspeed::DngDecoder::decodeData(rawspeed::TiffIFD const*, unsigned int) /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decoders/DngDecoder.cpp:333:10
#18 0x4f828c in rawspeed::DngDecoder::decodeRawInternal() /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decoders/DngDecoder.cpp:415:3
#19 0x5f5c3d in rawspeed::RawDecoder::decodeRaw() /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/librawspeed/decoders/RawDecoder.cpp:260:20
#20 0x41bb24 in rawspeed::rstest::process(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rawspeed::CameraMetaData const*, rawspeed::rstest::options const&) /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/utilities/rstest/rstest.cpp:369:12
#21 0x41ed7d in .omp_outlined._debug__ /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/utilities/rstest/rstest.cpp:535:17
#22 0x41ed7d in .omp_outlined. /home/lebedevri/rawspeed/build-Clang-SANITIZE/../src/utilities/rstest/rstest.cpp:529
#23 0x7f654480c8a2 in __kmp_invoke_microtask (/usr/lib/x86_64-linux-gnu/libomp.so.5+0xac8a2)
#24 0x7f65447a6f82 (/usr/lib/x86_64-linux-gnu/libomp.so.5+0x46f82)
#25 0x7f65447a5b44 (/usr/lib/x86_64-linux-gnu/libomp.so.5+0x45b44)
#26 0x7f65447f9160 (/usr/lib/x86_64-linux-gnu/libomp.so.5+0x99160)
#27 0x7f654473ffa2 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x7fa2)
#28 0x7f6543e514ce in clone (/lib/x86_64-linux-gnu/libc.so.6+0xf94ce)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../src/librawspeed/decompressors/LJpegDecompressor.cpp:193:27 in
xargs: /home/lebedevri/rawspeed/build-Clang-SANITIZE/src/utilities/rstest/rstest: terminated by signal 6
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at line 193 of src/librawspeed/decompressors/LJpegDecompressor.cpp and reproduce the report with the supplied KDRaw_Q360_20190310_125715_000001.dng file using the sanitizer build and rstest. Done means the sample no longer triggers the UBSan implicit-conversion report or terminates rstest with signal 6.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-vision
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 55/100