aferrero2707 / PhotoFlow

A fully non-destructive photo retouching program providing a complete layer-based workflow including RAW image development.
http://aferrero2707.github.io/PhotoFlow
GNU General Public License v3.0
315 stars 36 forks source link

Crash while using hot pixels filter #170

Open Fincer opened 6 years ago

Fincer commented 6 years ago

Issue

PhotoFlow (git version) crashes while trying to apply hot pixels filter into the sample image file provided below. The program freezes before crash. Terminal output below. I did not apply any other effects etc. before crashing.

Short terminal output

...
...
set_icc_profile: prof=0x7f0c68e72010
set_icc_profile: profile name : Rec2020-elle-V4.icc
PF::set_icc_profile(): VIPS_META_ICC blob set (size=1064)
RawOutputPar::build(): PF::set_icc_profile( out, out_profile ) called
RawOutputPar::build(): output profile: Rec2020-elle-V4.icc
set_icc_profile: prof=0x7f0c68e72010
set_icc_profile: profile name : Rec2020-elle-V4.icc
PF::set_icc_profile(): VIPS_META_ICC blob set (size=1064)
PF::Image::do_update(): pipeline #2 updated.
*** Error in `photoflow': malloc(): memory corruption: 0x00007f0c2d220060 ***
Aborted (core dumped)

Sample file here: IMG_7437.CR2

Using Arch Linux x86_64

aferrero2707 commented 6 years ago

Sorry for the late answer... I have tried to reproduce the crash, but I couldn't. I have also run the code through valgrind and could not detect any memory errors.

Are you compiling the code from sources? If yes, could you compile with -DCMAKE_BUILD_TYPE=RelWithDebInfo and run photoflow through valgrind --tool=memcheck to get an idea of where the error occurs?

More on valgrind here.

Thanks!

Fincer commented 6 years ago

Yes I've compiled from the GIT source. Couldn't reproduce the issue with Valgrind (valgrind --tool=memcheck photoflow). However, the program still crashes with regular run.

With valgrind, hot pixels could successfully be removed without crash (status changed from caching -> ready). With regular run, the program crashes.

Normal terminal output, with crash. Part of the runtime log:

...
...
icc_transform: get_bpc()=0
icc_transform: transform: 0x7fa2ba8f2e60
icc_transform: in_profile: 0x7fa2c0bc5010
icc_transform: infmt: 4456476
icc_transform: outfmt: 4456476
icc_transform: output profile: 0x7fa2c0fcd010
icc_transform: output profile: sRGB-elle-V4.icc
set_icc_profile: prof=0x7fa2c0fcd010
set_icc_profile: profile name : sRGB-elle-V4.icc
PF::set_icc_profile(): VIPS_META_ICC blob set (size=1072)
PF::Image::do_update(): pipeline #1 updated.
PF::Image::do_update(): updating pipeline #2
LayerManager::init_pipeline(): calling import_settings() for layer "RAW loader"
  settings imported.
LayerManager::init_pipeline(): calling import_settings() for layer "RAW developer"
  settings imported.
RawOutputPar: setting WB coefficients to 1.44043,1,1.88574
profile colorants:
0.765662 0.265046 0.0138667 
0.0776843 0.917304 -0.245776 
0.120854 -0.18235 1.05681 
Getting output profile...
ICCStore::get_profile(5, 2)
set_icc_profile: prof=0x7fa2bb8e9f10
set_icc_profile: profile name : color matrix built-in
PF::set_icc_profile(): VIPS_META_ICC blob set (size=944)
icc_transform: embedded profile: 0x7fa2bb8e9f10
icc_transform: embedded profile name: color matrix built-in
icc_transform: out_profile=0x7fa2c0bc5010 (0x557873e38060)
icc_transform: getting input profile format
icc_transform: getting output profile format
icc_transform: get_bpc()=0
icc_transform: transform: 0x7fa2b89d24b0
icc_transform: in_profile: 0x7fa2bb8e9f10
icc_transform: infmt: 4456476
icc_transform: outfmt: 4456476
icc_transform: output profile: 0x7fa2c0bc5010
icc_transform: output profile: Rec2020-elle-V4.icc
set_icc_profile: prof=0x7fa2c0bc5010
set_icc_profile: profile name : Rec2020-elle-V4.icc
PF::set_icc_profile(): VIPS_META_ICC blob set (size=1064)
RawOutputPar::build(): PF::set_icc_profile( out, out_profile ) called
RawOutputPar::build(): output profile: Rec2020-elle-V4.icc
set_icc_profile: prof=0x7fa2c0bc5010
set_icc_profile: profile name : Rec2020-elle-V4.icc
PF::set_icc_profile(): VIPS_META_ICC blob set (size=1064)
PF::Image::do_update(): pipeline #2 updated.
*** Error in `photoflow': corrupted size vs. prev_size: 0x00007fa260ee2d50 ***
Aborted (core dumped)
Fincer commented 6 years ago

Here is valgrind --tool=memcheck photoflow output log (sorry about missing extension):

Valgrind photoflow log - DropBox