New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cjxl - temp JPEG files remain #6
Comments
I wonder what is creating these temp files. I don't think jxl itself does that; perhaps libjpeg does it for some reason? Scope on discord pointed to https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/example.txt#L208 which might be an explanation. |
I recognized the same problem with jpe*.tmp files with the cjxl.exe (JPEG XL encoder 0.3.7) under Windows 10 64bit (lastest updates). |
"On some systems you may need to set up a signal handler to ensure that temporary files are deleted if the program is interrupted. See libjpeg.txt." |
But: "NOTE: Unless you develop your own memory manager back end, then temporary files |
Probably |
So, it is easily reproducible? Good! Does it create file even if processing was successful? |
Even a simple
It always creates temp files, regardless of whether the process was successful or failed. |
Spent some time trying to build project on windows, with limited success (got binary that does not support JPEG). Next, built binaries via cross-compilation in docker container. Those, however work fine and does not create temporay files. @eddiezato could you share your experience, how you build / obtain the cjxl / djxl binaries, please. |
I build with mingw64/msys2 myself. #!/bin/bash
export CC=clang CXX=clang++
git clone https://github.com/libjxl/libjxl.git --recursive
cd libjxl
./deps.sh
cmake -B build -G Ninja -S ./ \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF \
-DJPEGXL_ENABLE_DEVTOOLS=ON \
-DJPEGXL_ENABLE_OPENEXR=OFF \
-DJPEGXL_ENABLE_SKCMS=OFF \
-DJPEGXL_ENABLE_BENCHMARK=OFF \
-DJPEGXL_WARNINGS_AS_ERRORS=OFF \
-DJPEGXL_STATIC=ON \
-DCMAKE_CXX_FLAGS='-ffunction-sections -fdata-sections' \
-DCMAKE_EXE_LINKER_FLAGS='-Wl,--gc-sections -Wl,--no-export-dynamic'
ninja -C build
strip -s build/tools/{cjxl.exe,djxl.exe} |
I haven't thought about it. But it could be a problem with the mingw package for libjpeg-turbo. If it turns out that the problem occurs only on mingw builds. |
At last, succeeded with MSYS2 / mingw-w64-x86_64-clang. |
(oh, but perhaps I have no libjpeg-turbo installed) |
Was able to reproduce: https://github.com/eustas/libjxl-msys2/runs/3001986608?check_suite_focus=true#step:4:26 |
Tried building without libjpeg-turbo... same result. |
This also happens if the input jpeg is not valid, not even jpg. 😀 PS > ls -Path $Env:temp\jpe*.tmp
PS > Rename-Item cjxl.exe cjxl.jpg
PS > cjxl cjxl.jpg
JPEG XL encoder v0.3.7 [SSE4]
Failed to read image cjxl.jpg.
PS > ls -Path $Env:temp\jpe*.tmp
Directory: Z:\Temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2021.07.07 8:55 6641152 jpeD8F3.tmp |
Pinpointed the problem. It is: 🤦 🙀 |
(and it have nothing to do with JPEG) |
``` xvfb-run -a ./build/plugins/gdk-pixbuf/pixbufloader_test ./plugins/gdk-pixbuf/loaders_test.cache ./third_party/testdata/jxl/blending/cropped_traffic_light.jxl Uninitialized bytes in __interceptor_strlen at offset 10 inside [0x701000000810, 11) ==3746300==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x7f09809c906e in _XlcAddCT (/lib/x86_64-linux-gnu/libX11.so.6+0x5306e) #1 0x7f09809c92f7 in _XlcInitCTInfo (/lib/x86_64-linux-gnu/libX11.so.6+0x532f7) libjxl#2 0x7f09809cf482 (/lib/x86_64-linux-gnu/libX11.so.6+0x59482) libjxl#3 0x7f09809ceb62 (/lib/x86_64-linux-gnu/libX11.so.6+0x58b62) libjxl#4 0x7f09809cf378 in _XlcCreateLC (/lib/x86_64-linux-gnu/libX11.so.6+0x59378) libjxl#5 0x7f09809f0070 in _XlcUtf8Loader (/lib/x86_64-linux-gnu/libX11.so.6+0x7a070) libjxl#6 0x7f09809d690d in _XOpenLC (/lib/x86_64-linux-gnu/libX11.so.6+0x6090d) libjxl#7 0x7f09809d6a58 in XSupportsLocale (/lib/x86_64-linux-gnu/libX11.so.6+0x60a58) libjxl#8 0x7f098191b5b6 (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x625b6) libjxl#9 0x7f0981920158 (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x67158) libjxl#10 0x7f09818d79ba in gdk_parse_args (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x1e9ba) libjxl#11 0x7f09818d7ba8 in gdk_init_check (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x1eba8) libjxl#12 0x562d08176fb2 in main libjxl/plugins/gdk-pixbuf/pixbufloader_test.cc:26:8 libjxl#13 0x7f0980d617fc in __libc_start_main csu/../csu/libc-start.c:332:16 libjxl#14 0x562d08100219 in _start (libjxl/build/plugins/gdk-pixbuf/pixbufloader_test+0x21219) Uninitialized value was created by a heap allocation #0 0x562d08124f0d in malloc (libjxl/build/plugins/gdk-pixbuf/pixbufloader_test+0x45f0d) #1 0x7f09809c96cd in _XlcCreateDefaultCharSet (/lib/x86_64-linux-gnu/libX11.so.6+0x536cd) SUMMARY: MemorySanitizer: use-of-uninitialized-value (/lib/x86_64-linux-gnu/libX11.so.6+0x5306e) in _XlcAddCT ```
``` xvfb-run -a ./build/plugins/gdk-pixbuf/pixbufloader_test ./plugins/gdk-pixbuf/loaders_test.cache ./third_party/testdata/jxl/blending/cropped_traffic_light.jxl Uninitialized bytes in __interceptor_strlen at offset 10 inside [0x701000000810, 11) ==3746300==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x7f09809c906e in _XlcAddCT (/lib/x86_64-linux-gnu/libX11.so.6+0x5306e) #1 0x7f09809c92f7 in _XlcInitCTInfo (/lib/x86_64-linux-gnu/libX11.so.6+0x532f7) #2 0x7f09809cf482 (/lib/x86_64-linux-gnu/libX11.so.6+0x59482) #3 0x7f09809ceb62 (/lib/x86_64-linux-gnu/libX11.so.6+0x58b62) #4 0x7f09809cf378 in _XlcCreateLC (/lib/x86_64-linux-gnu/libX11.so.6+0x59378) #5 0x7f09809f0070 in _XlcUtf8Loader (/lib/x86_64-linux-gnu/libX11.so.6+0x7a070) #6 0x7f09809d690d in _XOpenLC (/lib/x86_64-linux-gnu/libX11.so.6+0x6090d) #7 0x7f09809d6a58 in XSupportsLocale (/lib/x86_64-linux-gnu/libX11.so.6+0x60a58) #8 0x7f098191b5b6 (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x625b6) #9 0x7f0981920158 (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x67158) #10 0x7f09818d79ba in gdk_parse_args (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x1e9ba) #11 0x7f09818d7ba8 in gdk_init_check (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x1eba8) #12 0x562d08176fb2 in main libjxl/plugins/gdk-pixbuf/pixbufloader_test.cc:26:8 #13 0x7f0980d617fc in __libc_start_main csu/../csu/libc-start.c:332:16 #14 0x562d08100219 in _start (libjxl/build/plugins/gdk-pixbuf/pixbufloader_test+0x21219) Uninitialized value was created by a heap allocation #0 0x562d08124f0d in malloc (libjxl/build/plugins/gdk-pixbuf/pixbufloader_test+0x45f0d) #1 0x7f09809c96cd in _XlcCreateDefaultCharSet (/lib/x86_64-linux-gnu/libX11.so.6+0x536cd) SUMMARY: MemorySanitizer: use-of-uninitialized-value (/lib/x86_64-linux-gnu/libX11.so.6+0x5306e) in _XlcAddCT ```
``` xvfb-run -a ./build/plugins/gdk-pixbuf/pixbufloader_test ./plugins/gdk-pixbuf/loaders_test.cache ./third_party/testdata/jxl/blending/cropped_traffic_light.jxl Uninitialized bytes in __interceptor_strlen at offset 10 inside [0x701000000810, 11) ==3746300==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x7f09809c906e in _XlcAddCT (/lib/x86_64-linux-gnu/libX11.so.6+0x5306e) #1 0x7f09809c92f7 in _XlcInitCTInfo (/lib/x86_64-linux-gnu/libX11.so.6+0x532f7) #2 0x7f09809cf482 (/lib/x86_64-linux-gnu/libX11.so.6+0x59482) libjxl#3 0x7f09809ceb62 (/lib/x86_64-linux-gnu/libX11.so.6+0x58b62) libjxl#4 0x7f09809cf378 in _XlcCreateLC (/lib/x86_64-linux-gnu/libX11.so.6+0x59378) libjxl#5 0x7f09809f0070 in _XlcUtf8Loader (/lib/x86_64-linux-gnu/libX11.so.6+0x7a070) libjxl#6 0x7f09809d690d in _XOpenLC (/lib/x86_64-linux-gnu/libX11.so.6+0x6090d) libjxl#7 0x7f09809d6a58 in XSupportsLocale (/lib/x86_64-linux-gnu/libX11.so.6+0x60a58) libjxl#8 0x7f098191b5b6 (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x625b6) libjxl#9 0x7f0981920158 (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x67158) libjxl#10 0x7f09818d79ba in gdk_parse_args (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x1e9ba) libjxl#11 0x7f09818d7ba8 in gdk_init_check (/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0+0x1eba8) libjxl#12 0x562d08176fb2 in main libjxl/plugins/gdk-pixbuf/pixbufloader_test.cc:26:8 libjxl#13 0x7f0980d617fc in __libc_start_main csu/../csu/libc-start.c:332:16 libjxl#14 0x562d08100219 in _start (libjxl/build/plugins/gdk-pixbuf/pixbufloader_test+0x21219) Uninitialized value was created by a heap allocation #0 0x562d08124f0d in malloc (libjxl/build/plugins/gdk-pixbuf/pixbufloader_test+0x45f0d) #1 0x7f09809c96cd in _XlcCreateDefaultCharSet (/lib/x86_64-linux-gnu/libX11.so.6+0x536cd) SUMMARY: MemorySanitizer: use-of-uninitialized-value (/lib/x86_64-linux-gnu/libX11.so.6+0x5306e) in _XlcAddCT ```
If the input files are JPEGs,
cjxl
createsjpe????.tmp
files in the system%temp%
folder and doesn't delete them after the encoding is finished.Windows 10 20H2 x64, cjxl v0.3.7-12-g04267a8
The text was updated successfully, but these errors were encountered: