Skip to main content
Topic: 1.4b11 bug - can't rename folders contained in ML (Read 924 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

1.4b11 bug - can't rename folders contained in ML

I encountered very annoying bug in 1.4b11. It is related to folder/directory operations performed from Windows Explorer on subdirectories of foobar's Media Library. I tested it and problem for sure does not occur in latest stable version, 1.3.17.

So what is wrong:
I can't rename directories in Explorer, if they contain any subdirectory.
Let's assume I have a folder in ML - M:\Music. It has 2x subdirectories: M:\Music\Artist1 and M:\Music\Artist2. Artist1 has 2x further subdirectories - Album1 and Album2. Artist2 contains only floating music files. The problem is that while I can rename "Artist2" directory to let's say "Artist2-xyz", I can't rename "Artist1" at all. But I can rename "Album1" subdirectory to let's say "Album1 - bad music", similarly to "Album2" subdirectory. However, if I create "Disc 1" and "Disc 2" subdirectories in "Album1" (or Album2 - doesn't matter), then I would be unable to further change its name to "Album1 - bad album" or any other.
When I check hooks using Unlocker 1.9.2 it shows that foobar 1.4 b11 locks any directory that contains subdirectories. Foobar 1.3.17 locked only top directories added to ML (which was understandable).

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #1
No handles are open to the directories here. Do you have the issue immediately after starting foobar2000 or perhaps after using some component? If the issue isn't present instantly you could use Process Monitor to see when it happens to possibly find a component causing it.

Is the M: drive some special network share? I have only tested with local NTFS volumes.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #2
M:\ drive is local HDD (3TB WD Green with 2TB partition for music, probably with GUID partition table, don't remember now).
Problem was noticed for sure after several hours of using foobar. It v 1.3.17 there was no problem even right after starting the app.
And now some confusion (mainly for me) - I updated back to 1.4 b11 and for example right now I can rename whatever I want - there is no problem with hooks, Unlocker doesn't show anything strange. I can't explain that. Components... well, there is a lot of them here...
I will keep my eyes open and report back if this occur again and/or if I find the reason.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #3
Hmmm... I test renamed some folder few times in a row and reverted to normal name. Now folder is locked. What should I do exatly in Process Monitor to diagnose this?

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #4
OK< I got 2x memory dumps, full and mini, 530 and 38MB. Should I upload it somewhere?

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #5
I tried to repeat the same operations that I did on locked folder on some other (both are rips of 2 discs CDs) but second one does not give any bad results... While first is entirely locked - there is 241 handles/locks for a folder, with 2x subdirectories and 37 flac files inside and 2x log files + 2x cue files (with wrong reference file inside each) in total.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #6
I deleted handles with Unlocker and repeated operations that initially created that lock on folder (renaming dir, copying files, deleting files, renaming again dir). Now everything is fine...

So just tell me what I can do with these nearly 600MB of memory dumps done, when handles/locks were active. I also made printscreens with list of all handles that Unlocker detected.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #7
OK, I compressed it to 90MB and uploaded to Dropbox, can send a link via PM.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #8
You can PM me a link. But just to clarify, you performed the file operations in Explorer and that triggered it? Or you used foo_fileops?

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #9
Definitely in Windows Explorer. I don't use foo_fileops - I delete, move, copy and rename all my files only via Windows Explorer. If I work in foobar and decide that something needs to be renamed, then I always use option to "Open containing folder" and rename files from opened Explorer window.Core (2018-03-23 12:46:04 UTC)

My components:
Code: [Select]
    foobar2000 core 1.4 beta 11
foo_abx.dll (2017-08-23 09:35:38 UTC)
    ABX Comparator 2.0.4
foo_ac3.dll (2018-01-26 03:07:58 UTC)
    AC3 decoder 0.9.10
foo_adpcm.dll (2018-01-17 07:27:55 UTC)
    kode54's ADPCM decoders 1.13
foo_albumlist.dll (2018-03-23 12:45:22 UTC)
    Album List 4.6
foo_asap.dll (2014-06-23 12:43:41 UTC)
    ASAP 3.2.0
foo_beatit.dll (2014-07-10 16:08:18 UTC)
    Beat It 0.3
foo_bestversion.dll (2014-02-07 20:54:54 UTC)
    Best Version Picker 1.0.1
foo_bitcompare.dll (2017-04-11 11:11:04 UTC)
    Binary Comparator 2.1.1
foo_cdda.dll (2018-03-23 12:45:16 UTC)
    CD Audio Decoder 3.0
foo_converter.dll (2018-03-23 12:45:26 UTC)
    Converter 1.5.3
foo_convolve.dll (2013-03-27 21:18:27 UTC)
    Convolver 0.3
foo_cuefilter.dll (2009-04-28 14:09:44 UTC)
    CUE Playlist Filter 0.1.7.0
foo_devconsole.dll (2014-02-09 23:19:27 UTC)
    DevConsole 1.0.4async
foo_disccache.dll (2015-08-23 03:52:50 UTC)
    Disc cache warmer 0.2
foo_discogs.dll (2017-02-22 06:23:20 UTC)
    Discogs Tagger 2.13
foo_dsp_effect.dll (2018-03-18 08:11:44 UTC)
    Effect DSP 0.30.3
foo_dsp_meiercf.dll (2018-01-06 22:27:18 UTC)
    Meier Crossfeed 1.1.1
foo_dsp_mm.dll (2008-06-06 05:29:12 UTC)
    Matrix Mixer 0.3
foo_dsp_multiresampler.dll (2017-06-02 01:41:49 UTC)
    MultiResampler 1.1.2
foo_dsp_prvb.dll (2017-02-04 02:01:05 UTC)
    Programmable reverb DSP 1.3
foo_dsp_std.dll (2018-03-23 12:45:14 UTC)
    Standard DSP Array 1.3.1
foo_dsp_vlevel20080302.0.dll (2008-03-02 22:42:06 UTC)
    VLevel 20080302.0
foo_dsp_xgeq.dll (2012-02-05 12:11:22 UTC)
    Graphic Equalizer 0.3.7
foo_dynamicdsp.dll (2018-04-21 21:46:56 UTC)
    Dynamic DSP 2.1
foo_file_datetime.dll (2016-01-16 03:01:45 UTC)
    File Date Time 1.02
foo_fileops.dll (2018-03-23 12:45:16 UTC)
    File Operations 2.2.2
foo_freedb2.dll (2018-03-23 12:45:36 UTC)
    Online Tagger 0.7
foo_gep.dll (2018-01-17 07:34:23 UTC)
    Game Emu Player 1.213
foo_hdcd.dll (2017-02-04 02:14:16 UTC)
    HDCD decoder 1.19
foo_input_adplug.dll (2018-01-20 03:08:47 UTC)
    AdPlug 1.50
foo_input_caf.dll (2017-05-05 01:00:35 UTC)
    CAF Decoder 0.2.1
foo_input_celt.dll (2011-05-16 12:21:00 UTC)
    CELT Decoder 0.1.2
foo_input_dts.dll (2018-01-17 07:45:15 UTC)
    DTS decoder 0.5.4
foo_input_dtshd.dll (2011-03-19 22:41:12 UTC)
    DTS-HD Decoder 0.1.3
foo_input_dvda.dll (2012-03-16 16:30:28 UTC)
    DVD-Audio Decoder and Watermark Detector 0.4.11
foo_input_exe.dll (2018-01-18 13:43:52 UTC)
    Command-Line Decoder Wrapper 0.5.3
foo_input_ffmpeg.dll (2018-03-21 10:58:32 UTC)
    FFmpeg Decoder Wrapper 0.5.4
foo_input_monkey.dll (2017-11-27 14:18:46 UTC)
    Monkey's Audio Decoder 2.1.9
foo_input_ofr.dll (2011-03-15 22:43:46 UTC)
    OptimFROG Lossless/DualStream Decoder 1.31
foo_input_reverse.dll (2009-01-05 19:47:00 UTC)
    Reverse Playback 0.1.4 (SSE)
foo_input_sacd.dll (2017-11-07 11:30:26 UTC)
    Super Audio CD Decoder 1.0.11
foo_input_shorten.dll (2014-01-03 19:46:18 UTC)
    Shorten decoder 0.4.2.3
foo_input_std.dll (2018-03-23 12:45:50 UTC)
    FFmpeg Decoders 3.2.4
    Standard Input Array 1.0
foo_input_tak.dll (2018-01-30 08:27:34 UTC)
    TAK Decoder 0.4.8
foo_input_tta.dll (2018-01-30 08:48:19 UTC)
    TTA Audio Decoder 3.5
foo_input_vgmstream.dll (2018-04-21 17:08:24 UTC)
    vgmstream plugin r1050-1276-g47d2b53c
foo_input_zxtune.dll (2017-07-20 08:39:31 UTC)
    ZXTune Player 0.0.7
foo_jesus.dll (2010-09-23 01:34:06 UTC)
    Autosave & Autobackup 10
foo_keep_queue.dll (2010-11-12 03:28:46 UTC)
    Keep Queue 0.3.5
foo_lnk.dll (2010-01-07 18:57:56 UTC)
    Shell Link Resolver 1.3.1
foo_lock.dll (2017-02-04 04:49:15 UTC)
    Pause on Lock 0.6
foo_midi.dll (2018-04-24 21:51:55 UTC)
    MIDI Player 2.0.23
foo_musical_spectrum.dll (2012-11-21 07:00:00 UTC)
    Musical Spectrum 0.9.1
foo_nds.dll (2018-01-06 22:02:56 UTC)
    No Display Standby 1.1.2
foo_openmpt54.dll (2018-04-09 23:57:02 UTC)
    OpenMPT component (kode54 fork) 0.3.8
foo_out_asio.dll (2012-06-06 13:19:14 UTC)
    ASIO support 2.1.2
foo_out_upnp.dll (2018-01-09 12:31:44 UTC)
    UPnP MediaRenderer Output 1.0 beta 17
foo_playcount.dll (2011-07-13 10:47:18 UTC)
    Playback Statistics 3.0.2
foo_psf.dll (2018-01-30 10:09:17 UTC)
    Highly Experimental 2.2.3
foo_queuecontents.dll (2011-12-31 13:30:56 UTC)
    Queue Contents Editor 0.5
foo_r128norm.dll (2017-02-04 05:02:13 UTC)
    EBU R128 Normalizer 1.12
foo_random_pools.dll (2015-04-04 20:32:52 UTC)
    Random Pools 0.1.5
foo_rgscan.dll (2018-03-23 12:45:26 UTC)
    ReplayGain Scanner 2.3
foo_run.dll (2018-03-21 20:07:41 UTC)
    Run services 0.3.8
foo_scrobble.dll (2017-11-21 17:47:40 UTC)
    Scrobble 1.1.0
foo_seek_box.dll (2010-04-21 14:03:30 UTC)
    Seek box 0.0.3
foo_skip.dll (2018-01-06 22:59:20 UTC)
    Skip Track 1.9.10
foo_snesapu.dll (2018-01-30 10:29:50 UTC)
    SNESAPU input 0.83
foo_stnaa.dll (2016-05-28 04:58:04 UTC)
    Search tracks with no album art 1.00_beta3
foo_stop_on_current.dll (2018-01-06 22:14:22 UTC)
    Stop on Current 0.6.1
foo_stop_on_error.dll (2018-01-06 21:15:32 UTC)
    Stop on Error 0.4.1
foo_textdisplay.dll (2011-05-29 15:03:58 UTC)
    Text Display UI Element 1.1 beta 1
foo_timebomb.dll (2009-12-20 21:40:00 UTC)
    Timebomb 0.0.2
foo_ui_std.dll (2018-03-23 12:45:28 UTC)
    Default User Interface 0.9.5
foo_verifier.dll (2017-11-28 12:13:46 UTC)
    File Integrity Verifier 1.2.1
foo_video.dll (2018-04-15 04:19:51 UTC)
    Chimera 0.5.0.0
foo_vst.dll (2011-03-05 07:19:04 UTC)
    VST 2.4 adapter 0.9.0.3
foo_wave_seekbar.dll (2014-02-08 21:37:10 UTC)
    Waveform seekbar 0.2.45

Windows 7 64bit PL MSDNAA, rather updated regularily (but I deselect crap). Sound Output: DS (Primary), via ESI Juli@ PCI. I use NTFS everywhere on my fixed, local hard drives. I don't use network shares. Anything else required to know?

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #10
That should be plenty of information for starters.

I noticed in your component listing some components that could deal with file system directly. A bug that leaves handles open in any component could cause your problem. Based on names these might be worth investigating:
foo_bestversion.dll
foo_cuefilter.dll
foo_disccache.dll
foo_file_datetime.dll

PS: I noticed you also have foo_input_celt installed. I thought that component would have been retired as CELT is now part of Opus.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #11
Thanks for this initial analysis. My comments:
foo_bestversion.dll
foo_cuefilter.dll
foo_disccache.dll
- all 3x long time used, no problems so far.

foo_file_datetime.dll - indeed this is quite new addition here, can't be sure if this one is not the reason for this...

Regarding foo_input_celt - in the past I tend to install every possible input plugin that new about "just to be prepared". This is remaining of this era... Hopefully the last one. So if get correctly - any CELT encoded file, even with some specific extension from should be playable now in foobar thanks to built-in Opus support?

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #12
No. The format is different. And back then, the format changed with practically every release of the library. Which is great, because lots of games use some version of the CELT codec, and the VGMStream developers have no idea which versions are needed to support the files those games contain.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #13
OK, this is interesting.

Please correct me if my interpretation of the dump data is incorrect, but it seems that you have a very large amount of music folders indexed by the Media Library. This does not directly explain the behavior - under no condition it should lock folders with individual albums or leave them locked.
However, each configured Media Library folder has its own folder watcher instance. That means lots of folder watchers running. The folders are monitored recursively anyway, why not just add one root folder (such as the whole drive) instead of so many folders deep down the hierarchy?
It seems there are cases where a subfolder of another Media Library folder is also watched. This is unnecessary as indexing and watching is recursive already.

Does the locking bug go away if you reduce the amount of watched folders?

( No matter how strange your usage pattern is, the locking of sub-folders is still a bug, we do lock folders but only root folders we've been told to watch, not sub-folders containing individual albums, and we should not ever leak the handles )

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #14
That was hard moment for me, I had to seriously dig in my memory but finally I got it. You know, some portions of config are so legacy, that I only know that it works as I need, but don't remember what particular aspect of usage it was impacting.

Those ML included folders, which are subdirectories of already added ones, are hidden in NTFS file system. Initially that was something which was giving me some benefits, when I used ML in different way and wasn't relying on autoplaylists so much**. But currently the reason is different. Generally all ML watched folders are re-scanned at foobar startup. But certain subdirectories doesn't change at all since very long time. So to reduce re-scanning time, some of them are added as separate entry with "rescan on startup" unchecked. Possibly keeping that hidden attribute is also needed for this scenario to work properly (so they are excluded from being watched as part of those upper level directories).

Anyway, I think it is important to say, that situation described in this post:
https://hydrogenaud.io/index.php/topic,115881.msg956335.html#msg956335
(and which is supposedly contained in the dump that I created) occured in folder "M:\CD-DA\" for subfolder "Tomaso Giovanni Albinoni – The Complete Concertos Op. 9, Adagio for Organ & Strings (2 CD) (456 333-2)  (1997)" , which has 2 subdirs - "Disc 1" and "Disc 2". It is important, because "M:\CD-DA\" doesn't have any subdirectory added to ML watched list as separate entry, so there shouldn't be issues with overlapping of recursive operations. Anyway, I was unable to make this happen again on other folder in that subdirectory.

I will try it again and see with Process Explorer (not Monitor) if it will give me some hint about reasons for such situation.


**When I look at it after writing it down, I think the reason for hiding those files was the same - to avoid re-scan. Hidden directories were on regular playlist (manually added via d&d), while their parent directory, which could change its content on a daily basis was on autoplaylist. I remember I was doing something like this. I suppose current ML setup was done to have all files in ML and automatically added to an autoplaylist (single or several) and still avoid large re-scan on startup. I suppose I was doing it because I just wasn't aware, that I can disable rescan on startup. When I got that, I invented scenario which is configured now.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #15
No. The format is different. And back then, the format changed with practically every release of the library. Which is great, because lots of games use some version of the CELT codec, and the VGMStream developers have no idea which versions are needed to support the files those games contain.
Yeah, it must be great, you have specific sense of humor :) . And thanks for the tech notice :)

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #16
...

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #17
A follow up-

Still cannot repro this issue.

I created a similar test case, with lots of folders watched, started renaming stuff around, and no subfolders of the watched folders were ever locked - only the folders directly specified as watched.

I cannot find anything that opens handles to folders in foobar2000 - except for the very code deals with folder watching, and it only ever opens the root watched folder, not the subfolders. Also it hasn't been altered for the last decade or so.

I would still recommend disabling the third party components one by one to see if you can find the culprit.
I've done some quick online searches by names of your components and looked at their source code. Some of them - foo_bestversion in particular - look very clean and tidy to me. But some others that I will not name here look like a total mess.

Even if some component worked fine in foobar2000 version 1.3.17, some harmless internal change on my side - such as migration from VS2010 to VS2017 - could have tripped a race condition bug in it or alike.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #18
Is this a case of the foo_input_dvda locking files? That was a bug reported in its thread. Apparently, if it hits an .iso that it can't open, it holds it open until process termination.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #19
Locked directories (the ones that I found to be locked at some moment) never contained any DVD-A related content.

Re: 1.4b11 bug - can't rename folders contained in ML

Reply #20
It was a broad leap to that conclusion anyway. It may be some other component instead? Hmm...

 
SimplePortal 1.0.0 RC1 © 2008-2019