Rawtherapee: Segfault opening PREDICTOR_FLOATINGPOINT image

Created on 16 Dec 2017  路  8Comments  路  Source: Beep6581/RawTherapee

Branch tiff32float, 5.3-212-g912f9f43

https://filebin.net/l19s1pu36p5l2vjr

Thread 12 "pool" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 10471]
0x000055555601320d in LUT<float>::operator[]<float, void> (this=0x5555569cb060 <rtengine::Color::igammatab_srgb>, index=-nan(0x447e3e)) at /home/morgan/programs/code-rawtherapee/rtengine/LUT.h:468
468             T p1 = data[idx];
(gdb) bt full
#0  0x000055555601320d in LUT<float>::operator[]<float, void> (this=0x5555569cb060 <rtengine::Color::igammatab_srgb>, index=-nan(0x447e3e)) at /home/morgan/programs/code-rawtherapee/rtengine/LUT.h:468
        idx = -2147483648
        diff = -nan(0x447e3e)
        p1 = -12.789505
        p2 = 4.59163468e-41
#1  0x00005555560712b9 in rtengine::Color::igamma_srgb (x=-nan(0x447e3e)) at /home/morgan/programs/code-rawtherapee/rtengine/color.h:1226
No locals.
#2  0x0000555556085b32 in rtengine::PlanarRGBData<float>::computeHistogramAutoWB (this=0x7fffa4004d48, avg_r=@0x7fffc14ca2b0: 0, avg_g=@0x7fffc14ca2b8: 0, avg_b=@0x7fffc14ca2c0: 0, n=@0x7fffc14ca2a4: 0, histogram=..., compression=3)
    at /home/morgan/programs/code-rawtherapee/rtengine/iimage.h:977
        g_ = 65535.0039
        gtemp = 65535
        r_ = -nan(0x447e3e)
        b_ = 65535.0039
        rtemp = 65535
        btemp = 65535
        j = 231
        i = 0
#3  0x000055555623ab9e in rtengine::Thumbnail::loadFromImage (fname=..., w=@0x7fffa40081a8: 372, h=@0x7fffa40081ac: 250, fixwh=1, wbEq=1, inspectorMode=false) at /home/morgan/programs/code-rawtherapee/rtengine/rtthumbnail.cc:226
        image = 0x7fffa4004d40
        avg_r = 0
        avg_g = 0
        avg_b = 0
        n = 0
        imgSrc = {<rtengine::ImageSource> = {<rtengine::InitialImage> = {_vptr.InitialImage = 0x5555568f8868 <vtable for rtengine::StdImageSource+16>}, references = 1, redAWBMul = -1, greenAWBMul = -1, blueAWBMul = -1, embProfile = 0x7fffa400a530, fileName = {
              static npos = 18446744073709551615, string_ = "/tmp/amsterdam_900px_32fp_compressed_predictor-floatingpoint.tif"}, idata = 0x7fffa400ba60, imatrices = {rgb_cam = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, cam_rgb = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, xyz_cam = {{
                  0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, cam_xyz = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}}, dirpyrdenoiseExpComp = inf}, img = 0x7fffa4004e38, wb = {temp = 6490.2992248535156, green = 1.0019899871615525, equal = 1, method = "Custom", static spectMap = 
    <optimized out>, static Cloudy6200_spect = {39.5, 40.57, 41.630000000000003, 43.850000000000001, 46.079999999999998, 45.380000000000003, 44.689999999999998, 47.200000000000003, 49.710000000000001, 63.060000000000002, 76.409999999999997, 80.590000000000003, 
              84.769999999999996, 85.909999999999997, 87.049999999999997, 84.140000000000001, 81.230000000000004, 90.290000000000006, 99.349999999999994, 105.47, 111.58, 112.23, 112.87, 111.73999999999999, 110.62, 111.41, 112.2, 108.98, 105.76000000000001, 
              106.31999999999999, 106.89, 106.34, 105.79000000000001, 104.62, 103.45, 105.09, 106.72, 105.23999999999999, 103.76000000000001, 103.75, 103.75, 101.87, 100, 98.290000000000006, 96.579999999999998, 96.459999999999994, 96.340000000000003, 
              92.849999999999994, 89.370000000000005, 90.25, 91.120000000000005, 91.060000000000002, 90.989999999999995, 90.170000000000002, 89.349999999999994, 87.219999999999999, 85.099999999999994, 85.480000000000004, 85.849999999999994, 84.030000000000001, 
              82.200000000000003, 82.450000000000003, 82.689999999999998, 83.920000000000002, 85.150000000000006, 83.140000000000001, 81.129999999999995, 76.650000000000006, 72.170000000000002, 73.269999999999996, 74.359999999999999, 75.650000000000006, 
              76.950000000000003, 70.340000000000003, 63.740000000000002, 67.980000000000004, 72.219999999999999, 74.879999999999995, 77.540000000000006, 71.590000000000003, 65.650000000000006, 56.82, 47.990000000000002, 58.530000000000001, 69.060000000000002, 
              67.269999999999996, 65.469999999999999, 65.959999999999994, 66.439999999999998, 63.920000000000002, 61.409999999999997, 57.520000000000003, 53.630000000000003, 56.469999999999999, 59.310000000000002, 60.799999999999997, 62.289999999999999}, 
            static Daylight5300_spect = <same as static member of an already seen type>, static Shade7600_spect = <same as static member of an already seen type>, static A2856_spect = <same as static member of an already seen type>, 
            static FluoF1_spect = <same as static member of an already seen type>, static FluoF2_spect = <same as static member of an already seen type>, static FluoF3_spect = <same as static member of an already seen type>, 
            static FluoF4_spect = <same as static member of an already seen type>, static FluoF5_spect = <same as static member of an already seen type>, static FluoF6_spect = <same as static member of an already seen type>, 
            static FluoF7_spect = <same as static member of an already seen type>, static FluoF8_spect = <same as static member of an already seen type>, static FluoF9_spect = <same as static member of an already seen type>, 
            static FluoF10_spect = <same as static member of an already seen type>, static FluoF11_spect = <same as static member of an already seen type>, static FluoF12_spect = <same as static member of an already seen type>, 
            static HMI_spect = <same as static member of an already seen type>, static GTI_spect = <same as static member of an already seen type>, static JudgeIII_spect = <same as static member of an already seen type>, 
            static Solux3500_spect = <same as static member of an already seen type>, static Solux4100_spect = <same as static member of an already seen type>, static Solux4700_spect = <same as static member of an already seen type>, 
            static NG_Solux4700_spect = <same as static member of an already seen type>, static NG_LEDLSI2040_spect = <same as static member of an already seen type>, static NG_CRSSP12WWMR16_spect = <same as static member of an already seen type>, 
            static Flash5500_spect = <same as static member of an already seen type>, static Flash6000_spect = <same as static member of an already seen type>, static Flash6500_spect = <same as static member of an already seen type>, 
            static ColorchechredC3_spect = <same as static member of an already seen type>, static ColorchechOraA2_spect = <same as static member of an already seen type>, static ColorchechYelD3_spect = <same as static member of an already seen type>, 
            static ColorchechGreE2_spect = <same as static member of an already seen type>, static ColorchechGreB3_spect = <same as static member of an already seen type>, static ColorchechCyaF3_spect = <same as static member of an already seen type>, 
            static ColorchechPurD2_spect = <same as static member of an already seen type>, static ColorchechMagE3_spect = <same as static member of an already seen type>, static ColorchechSkiA138_13_14_spect = <same as static member of an already seen type>, 
            static ColorchechGraC4_67_spect = <same as static member of an already seen type>, static ColorchechSkiB166_18_18_spect = <same as static member of an already seen type>, 
            static ColorchechBluC150_m5_m22_spect = <same as static member of an already seen type>, static ColorchechDCBluN881_m7_m14_spect = <same as static member of an already seen type>, 
            static ColorchechSGSkiF763_14_26_spect = <same as static member of an already seen type>, static ColorchechSGSkiK285_11_17_spect = <same as static member of an already seen type>, 
            static ColorchechWhiA496_spect = <same as static member of an already seen type>, static ColorchechGreD1_spect = <same as static member of an already seen type>, static ColorchechSGBlaN3_6_spect = <same as static member of an already seen type>, 
            static JDC468_GraK14_44_spect = <same as static member of an already seen type>, static JDC468_BluH10_spect = <same as static member of an already seen type>, static ColabSkin35_15_17_spect = <same as static member of an already seen type>, 
            static ColabSkin57_22_18_spect = <same as static member of an already seen type>, static ColabSkin40_17_17_spect = <same as static member of an already seen type>, static ColabSkin91_4_14_spect = <same as static member of an already seen type>, 
            static ColabSkin87_8_8_spect = <same as static member of an already seen type>, static ColabSkin89_8_21_spect = <same as static member of an already seen type>, static ColabSkin75_8_4_spect = <same as static member of an already seen type>, 
            static ColabSkin75_10_33_spect = <same as static member of an already seen type>, static ColabSkin65_33_11_spect = <same as static member of an already seen type>, static ColabSkin65_7_24_spect = <same as static member of an already seen type>, 
            static ColabSkin57_19_6_spect = <same as static member of an already seen type>, static ColabSkin57_4_19_spect = <same as static member of an already seen type>, static ColabSkin57_10_28_spect = <same as static member of an already seen type>, 
            static ColabSkin40_7_19_spect = <same as static member of an already seen type>, static ColabSkin40_17_6_spect = <same as static member of an already seen type>, static ColabSkin40_4_11_spect = <same as static member of an already seen type>, 
            static ColabSkin33_6_15_spect = <same as static member of an already seen type>, static ColabSkin33_15_5_spect = <same as static member of an already seen type>, static ColabSkin33_10_15_spect = <same as static member of an already seen type>, 
            static ColabSkin24_5_6_spect = <same as static member of an already seen type>, static ColabSkin26_18_18_spect = <same as static member of an already seen type>, static ColabSkin24_7_5_spect = <same as static member of an already seen type>, 
            static ColabSkin20_4_2_spect = <same as static member of an already seen type>, static ColabSkin98_m2_10_spect = <same as static member of an already seen type>, static ColabSkin90_m1_20_spect = <same as static member of an already seen type>, 
            static ColabSkin95_0_4_spect = <same as static member of an already seen type>, static ColabSkin81_2_14_spect = <same as static member of an already seen type>, static ColabSkin87_3_10_spect = <same as static member of an already seen type>, 
            static ColabSkin77_12_21_spect = <same as static member of an already seen type>, static ColabSkin70_7_32_spect = <same as static member of an already seen type>, static ColabSky60_0_m31_spect = <same as static member of an already seen type>, 
            static ColabSky42_0_m24_spect = <same as static member of an already seen type>}, plistener = 0x0, full = false, max = {0, 0, 0}, rgbSourceModified = false}
        img = 0x7fffa4004e38
        tpp = 0x7fffa4020580
---Type <return> to continue, or q <return> to quit---
        data = 0x7fffa40184a0 ""
#4  0x0000555555f4ef60 in Thumbnail::_generateThumbnailImage (this=0x7fffa4008000) at /home/morgan/programs/code-rawtherapee/rtgui/thumbnail.cc:122
        ext = {static npos = 18446744073709551615, string_ = "tif"}
#5  0x0000555555f4e94c in Thumbnail::Thumbnail (this=0x7fffa4008000, cm=0x5555569c9800 <CacheManager::getInstance()::instance>, fname=..., md5="49ad551902e9ae340d51f3f107a3ac94") at /home/morgan/programs/code-rawtherapee/rtgui/thumbnail.cc:75
No locals.
#6  0x0000555555b43887 in CacheManager::getEntry (this=0x5555569c9800 <CacheManager::getInstance()::instance>, fname=...) at /home/morgan/programs/code-rawtherapee/rtgui/cachemanager.cc:115
        thumbnail = std::unique_ptr<Thumbnail> containing 0x0
        md5 = "49ad551902e9ae340d51f3f107a3ac94"
        cacheName = {static npos = 18446744073709551615, string_ = "/home/morgan/.cache/RawTherapee/data/amsterdam_900px_32fp_compressed_predictor-floatingpoint.tif.49ad551902e9ae340d51f3f107a3ac94.txt"}
#7  0x0000555555ea5ef5 in PreviewLoader::Impl::processNextJob (this=0x55555c827ca0) at /home/morgan/programs/code-rawtherapee/rtgui/previewloader.cc:128
        tmb = 0x0
        j = {dir_id_ = 3, dir_entry_ = {static npos = 18446744073709551615, string_ = "/tmp/amsterdam_900px_32fp_compressed_predictor-floatingpoint.tif"}, listener_ = 0x555559879428}
        last = 33
#8  0x0000555555ea8730 in sigc::bound_mem_functor0<void, PreviewLoader::Impl>::operator() (this=0x7fffa400a508) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1991
No locals.
#9  0x0000555555ea8302 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, PreviewLoader::Impl> >::operator() (this=0x7fffa400a500) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256
No locals.
#10 0x0000555555ea7e11 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, PreviewLoader::Impl>, void>::call_it (rep=0x7fffa400a4d0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:114
        typed_rep = 0x7fffa400a4d0
#11 0x00007ffff454f762 in ?? () from /usr/lib64/libglibmm-2.4.so.1
No symbol table info available.
#12 0x00007ffff53a956e in ?? () from /usr/lib64/libglib-2.0.so.0
No symbol table info available.
#13 0x00007ffff53a8718 in ?? () from /usr/lib64/libglib-2.0.so.0
No symbol table info available.
#14 0x00007ffff121dad3 in ?? () from /lib64/libpthread.so.0
No symbol table info available.
#15 0x00007ffff0f532ff in clone () from /lib64/libc.so.6
No symbol table info available.
bug

Most helpful comment

@Beep6581 Lol, no, that's just a sh*tty processing session 馃ぃ The image is fine, no color cast (i.e. the danger of Color Toning).

All 8 comments

The problem is the mismatch between Exif's endianess and the data endianess. They have to be the same. I'll try to fix that tonight.

@Beep6581 Could you test the new files in Filebin ? I don't find the pixls.us thread anymore, but it would be nice if those files could be tested with other software.

@Hombre57 both LZW and Deflate load fine in GIMP as well as in RT! Though they both suffer from a color cast:
imgur-2017_12_19-11 05 58
imgur-2017_12_19-11 09 05

I'm assuming that you used neutral when saving them, i.e. I'm assuming the color cast does not come from a weird white balance for example.

@Beep6581 Lol, no, that's just a sh*tty processing session 馃ぃ The image is fine, no color cast (i.e. the danger of Color Toning).

@Beep6581 So considering the file size, I guess that we should drop LZW and use Deflate only for floating point predictor too !?

@Hombre57 ha! I was worried it was some black point issue ;)
LZW vs deflate - I think that calls for more testing, using images of various content and ISO... Could you maybe commit this, and leave the compression for a new issue? Or just do as you think best, and we can revise the compression in the future anyway.

Use this patch to set a specific compression method to 32 bits images.

diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc
index ba52c46..6f34e7b 100644
--- a/rtengine/imageio.cc
+++ b/rtengine/imageio.cc
@@ -1369,7 +1369,7 @@
         TIFFSetField (out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
         TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
         TIFFSetField (out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
-        TIFFSetField (out, TIFFTAG_COMPRESSION, uncompressed ? COMPRESSION_NONE : COMPRESSION_DEFLATE);
+        TIFFSetField (out, TIFFTAG_COMPRESSION, uncompressed ? COMPRESSION_NONE : (bps == 32 ? COMPRESSION_LZW : COMPRESSION_DEFLATE));
         TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, bps == 32 ? SAMPLEFORMAT_IEEEFP : SAMPLEFORMAT_UINT);

         if (!uncompressed) {

Fixed in commit 5ea5cfd943d2f77f91f3b7f47e377074e57be629.

Was this page helpful?
0 / 5 - 0 ratings