I have prepared a new version with more checks of the tile reference counting, this should give a more detailed location of the reference counting error… the MacOS package should be ready in less than one hour.
I am testing the code on MacOS as well, and so far I cannot trigger any crash when zooming, panning or moving sliders…
@afre the log you pasted corresponds to a clean program shutdown, not a crash… are you sure it is the good one?
Yes, that is what I read too… Maybe I did close it unintentionally. Anyway, my laptop stalled / crashed soon after, showing its age.
What I did was test RL, save the PFI, close PF, open PFI, zoom and scroll, open raw, close RL tab, test highlights/shadows, zoom and scroll THEN crash. (Perhaps, the cache didn’t clear between app or tab closures? Also, closing tab didn’t crash PF, which is new and good for me!)
Second time testing highlights/shadows with logging, I may have unintentionally closed the console but I am not sure if I did or it crashed by itself.
Just tested the new vesion for around 30 minutes…
No crash whatsoever on Windows 10 (CPU I7, 8 gb Ram)
RAW file NEF (Nikon D700).
My deepest congratulations because your software is packed with interesting features!
The zoom (in -out; 1:1 etc ) and pan (toolbars) works fine.
I have tried quite a lot the basic adjustements and their tools look quite responsive on my computer.
2 little bugs:
the icon which looks like a thunder lacks a tooltip (its is placed under the curves tool and the uniform fill, to be more precise)
the soft proofing setup lacks a way to close its window. When you click on the X button, on the right, nothing occurs (the window remains open). To close it you must press ESC on your keyboard
I’ll take a look tomorrow, its getting a bit late now.
Are you logging the value of tile->ref_count when the assertion fails in pf_tile_unref() in the new version? It might be interesting to know if it is 0 or <0. From a brief scan of the code in tilecache_pf.c, it looks like pf_tile_ref() and pf_tile_unref() are called when the tile pool mutex is locked, but there are other places that zero the ref_count where this mutex is not locked.
I will do it, but this won’t be the same use case as before, since I won’t be executing an appimage, right? Or it doesn’t matter?
Anyway, today it crashed when I
1 - Opened this raw (IMG_1093.CR2) from this thread;
2 - Added a Basic layer;
3 - Increased exposure by 8 EV;
4 - Exported as tiff 32-bit rec2020.
It crashed while exporting. It left behind the tif file, but a malformed one.
I can confirm I only have 4GB RAM and cheaply replaced parts.
I can also confirm that my earlier usage isn’t reproducible: 1 because I haven’t tried again and 2 because the log didn’t record the moments before the crash or instability.
Overall, I like the new direction, since PF won’t be stalling with every minute change in the settings, which has been extremely off-putting.
I removed the offending compiler flag… could you pull the latest version and recompile?
The AppImage and the user-compiled code should behave in the same way, at least if the issue is in the thread logic and not due to some memory corruption…
Ok, I have temporarily removed all treatment of warnings as errors, so that the compiler will be less strict. Meanwhile I will try to fix the warnings…
Hold on… I am building the code on Ubuntu 18.04 myself, will get back to you once I have fixed those issues… it makes no sense to waste your time sorting out compilation problems! It will hopefully not take too long…
I have added some more logging messages. I need to understand if the ref_count=0 is simply due to an extra unref, or if it is due to a wrong tile disposal…
Thanks for checking and for the encouraging words! I think that right now there is probably even too much, so I am trying to simplify the tools… but first I need to get what exists to run rock solid.
(same method as before, open .NEF file, add shadows/highlights, zoom to 1:1 and scroll around with the track-pad until it crashes. I’m changing direction a lot so it doesn’t have time to complete the window refresh)
@paulmiller@gadolf the crashes are all similar, which is quite good. Next thing I would like to ask you to check is if the reference counting mismatch is due to thread synchronization problems, or just some naive programming mistake…
You can turn off multi-threading by setting the following environment variable: