BestImageViewer / geeqie

claiming to be the best image viewer / photo collection browser
http://www.geeqie.org/
GNU General Public License v2.0
475 stars 78 forks source link

geeqie searches for nonexisting files - 201 times each #111

Closed mowgli closed 8 years ago

mowgli commented 14 years ago

This has probably something to do with some thumbnails-cache.

If geeqie can't find a specific file it tries to find it under 201 different names:

This happens at least after moving files, and even if the user wasn't working in that specific directory at all. And locks up geeqie for several seconds up to minutes, depending on the amount of files.

A sanitized (user and filename changed) strace-output covering only one file:

stat64("/home/user/images/image01.jpg", 0xbf9c6444) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.JPG", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.JPg", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.JpG", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Jpg", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.jPG", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.jPg", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.jpG", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.jpg", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ARW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ARw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ArW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Arw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.aRW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.aRw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.arW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.arw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.SRF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.SRf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.SrF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Srf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.sRF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.sRf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.srF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.srf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.SR2", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Sr2", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.sR2", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.sr2", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.CRW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.CRw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.CrW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Crw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.cRW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.cRw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.crW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.crw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.CR2", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Cr2", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.cR2", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.cr2", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.KDC", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.KDc", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.KdC", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Kdc", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.kDC", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.kDc", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.kdC", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.kdc", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.DCR", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.DCr", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.DcR", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Dcr", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.dCR", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.dCr", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.dcR", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.dcr", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.K25", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.k25", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.RAF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.RAf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.RaF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Raf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.rAF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.rAf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.raF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.raf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.MEF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.MEf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.MeF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Mef", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.mEF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.mEf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.meF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.mef", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.MOS", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.MOs", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.MoS", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Mos", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.mOS", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.mOs", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.moS", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.mos", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.MRW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.MRw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.MrW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Mrw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.mRW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.mRw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.mrW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.mrw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.NEF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.NEf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.NeF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Nef", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.nEF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.nEf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.neF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.nef", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ORF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ORf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.OrF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Orf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.oRF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.oRf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.orF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.orf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.PEF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.PEf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.PeF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Pef", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.pEF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.pEf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.peF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.pef", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.PTX", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.PTx", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.PtX", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Ptx", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.pTX", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.pTx", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ptX", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ptx", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.DNG", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.DNg", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.DnG", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Dng", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.dNG", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.dNg", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.dnG", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.dng", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.X3F", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.X3f", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.x3F", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.x3f", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.RAW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.RAw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.RaW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Raw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.rAW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.rAw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.raW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.raw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.R3D", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.R3d", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.r3D", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.r3d", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.3FR", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.3Fr", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.3fR", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.3fr", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ERF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ERf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ErF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Erf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.eRF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.eRf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.erF", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.erf", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UFRAW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UFRAw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UFRaW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UFRaw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UFrAW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UFrAw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UFraW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UFraw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UfRAW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UfRAw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UfRaW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UfRaw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UfrAW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UfrAw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.UfraW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Ufraw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.uFRAW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.uFRAw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.uFRaW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.uFRaw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.uFrAW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.uFrAw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.uFraW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.uFraw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ufRAW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ufRAw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ufRaW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ufRaw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ufrAW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ufrAw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ufraW", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.ufraw", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.XMP", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.XMp", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.XmP", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.Xmp", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.xMP", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.xMp", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.xmP", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.xmp", 0xbf9c6354) = -1 ENOENT (No such file or directory) stat64("/home/user/images/image01.jpg", 0xbf9c6424) = -1 ENOENT (No such file or directory)

Reported by: seegras

mowgli commented 14 years ago

LOL, this is a serious issue.

Original comment by: zas_

mowgli commented 14 years ago

Original comment by: zas_

mowgli commented 14 years ago

This is what it does. After moving some image, it probably sets a flag to re-check the collections. And then it does something it really should not do: load available collections and try to find any files in that collection, with any extension in any mixed case.

3 0x080a0bd5 in check_case_insensitive_ext (

path=0x8c329e0 "/home/user/images/image01.orf") at filedata.c:489

4 0x080a0d24 in file_data_check_sidecars (fd=0x8c32970, basename_hash=0x0)

at filedata.c:541

5 0x080a0aa7 in file_data_new (

path_utf8=0xbfffdb21 "/home/user/images/image01.jpg", st=0xbfffda88, check_sidecars=1, basename_hash=0x0) at filedata.c:445

6 0x080a0eeb in file_data_new_simple (

path_utf8=0xbfffdb21 "/home/user/images/image01.jpg") at filedata.c:605

7 0x08080759 in collection_load_private (cd=0x86152b0,

path=0x8356c80 "/home/user/.local/share/geeqie/collections/All.gqv", flags=COLLECTION_LOAD_NONE) at collect-io.c:163

8 0x080819af in collect_manager_process_entry (entry=0x85d33c0)

at collect-io.c:792

9 0x080819f0 in collect_manager_process_entry_list () at collect-io.c:810

10 0x08081a3d in collect_manager_process_cb (data=0x0) at collect-io.c:824

This is probably solvable by some single "if". However, I've got no comprehensive view of the code and do not know where else this functions may be needed.

Original comment by: seegras

mowgli commented 14 years ago

This is a workaround in collect-io.c to turn them off:

static gboolean collect_manager_timer_cb(gpointer data) { DEBUG_1("collection manager timer expired"); / g_idle_add_full(G_PRIORITY_LOW, collect_manager_process_cb, NULL, NULL); / collection_manager_timer_id = 0; return FALSE; }

Original comment by: seegras

mowgli commented 8 years ago

I think this should be gone. Please correct me seegras....