DO11: Flac files

Please try disabling the Audio Tags plugin under Preferences / Viewer / Viewer Plugins.

If that stops the problem, please zip and send one of the FLAC files (after checking that that file on its own is enough to trigger the problem when the plugin re-enabled) for me to look at. If there isn't a small one then it may be too large for the forum, but you could email it to leo@gpsoft.com.au if possible/convenient.

If disabling the plugin doesn't make a difference, the problem is probably in a component on your system that isn't part of Opus itself. Crash, exit or high CPU when viewing certain directories has further suggestions if that appears to be the case.


When I disable the audio plugin I get a different error. I do not know if this is significant but I enclose a screen shot.

Looks like the same code (being called in two different places) is crashing, since the address is the same in each case.

It's probably a 3rd party component (either a Opus viewer plugin or a Windows shell extension) in this case, but the guide I linked above has steps for narrowing down if that's really the case (and, if it is, which compnent is causing it).

If you want to send a flac file to me to check out here anyway, feel free.

Same here, but I do not use flac (the file was stored on in a subfolder of an ext. drive from a friend - DO crashes when I opened the folder). Maybe it helps that I have installed "K-Lite-Codec-Pack".

Please try the steps in the FAQ and/or send me a test file. It could well be K-Lite, but it could be something else as well.

I have discovered the problem causing Opus 11 to crash when viewing thumbnails of flac files.

The problem appears to be the Icaros Property Handler, which is installed by the Klite Codec Pack and Win 8 x64 1.3.2 among other programs.

I used to use the Klite Codec pack some time ago but I removed it. The result is that the dll for the icaros property handler us no longer on my system, although Shellex tells me it is. Disabling the extension did the trick.

Thank you for your help in resolving this problem.

May I suggest The Combined Community Codec Pack, over K-Lite?

I'd avoid any kind of codec pack - they tend to mess systems up. LAVFilters should be enough.

You're right, I can remember on XP and earlier codec packs often caused crashes. But K-Lite runs stable over 10 years for me and in additon, LAVFilters is at an early state, so why changing a running sys?!

Agree on "don't fix it if ain't broke"! Don't get LAV's version number fool you (or the "Blu-Ray early stage" on the first post), it's more stable and working than you could get. :wink:

True. Codec packs where quite necessary some 10 years ago, but since programs like VLC oder KMPlayer have their own integrated codec packs, they became, in my opinion, a bit obsolete.

Therefore you have other problems: VLC is not best choice on a HTPC, so I use XMBC. But XBMC doesn't play all DVD-iso's (bug), so I need VLC or WMC. But with WMC you need a codec to play e.g. mkv, while WMP since Win8 doesn't support DVD-playback anymore. So on non-media-PC I still use WMP and K-Lite, easy to install/configure and simply works.

Please use the CoffeeShop area if you want to discuss which media players, codecs, etc. are best. This is off-topic for Help & Support in a thread where the problem has already been found & solved.

I'm trying to track down this issue with Opus and Icaros. I'm also working with the Icaros developer. Process Monitor doesn't show anything unusual between reading the flac file and creating the dmp file. I can't trace the crash to any flac file--I've created new directories and copied in flac files hoping certain files would causes the crash, but couldn't pin it down. Sometimes the crash occurs immediately, sometimes in takes a few minutes. I enclosed the dump file and process monitor and process explorer files.
icaros.zip (98.9 KB)

I've sorted this out (I believe) by turning off flac thumbnailing (not sure why you'd want this), and deactivating and re-activating Icaros. Previously I had just removed it from the filetypes.

Icaros's FLAC thumbnailing option is probably for cover-art.

I had a look at the crash dump and two things stand out to me:

[ul][li]The crash looks like a Variant or PropVariant containing invalid data is being returned by something, and then copied, causing an invalid memory access.

I can't see much else of use from the dump, unfortunately, but if it was me I'd be looking for code which passes uninitialised Variants/PropVariants to APIs which assume they have been initialised, or code which does the opposite and assumes it is being passed initialised Variants/PropVariants from APIs which don't guarantee that (which can happen with strict "out" parameters, from memory). It could also be a problem of the data a Variant/PropVariant points to being freed and then the Variant/PropVariant being passed to something which tries to store/copy the now-freed data.

[/li]
[li]Icaros is a shell extension written in .Net. This is dangerous and against Microsoft's rules (even with .Net 4.0).

It causes the .Net runtime to be loaded into every process that shows a File Open dialog, and that can cause crashes and other conflicts if other things within a process need a different version of the .Net runtime or if they simply conflict with .Net itself. (e.g. The process itself, or another shell extension written in .Net against the rules, may require a different version of .Net be loaded.) Even ignoring the potential crashes and conflicts, it's inefficient to load the big .Net runtime into lots of processes that don't need it.

While .Net 4.0 allows some limited side-by-side usage of different runtime versions, it doesn't actually solve this issue and Microsoft still say shell extensions should not be written in .Net.

Icaros can still keep most of its code in .Net, but it needs to move that code into a separate standalone .Net process and have a "shim" shell extension written in C++ (or similar) which talks to the .Net process. That's the only Microsoft-supported/recommended way to "write shell extensions in .Net", and apparently how they write some of their own ones. (It's not strictly "writing a shell extension in .Net" because the shell extension itself is C++.)[/li][/ul]


I'd recommend narrowing down the .FLAC files required to reproduce the crash to the smallest set and then sending them to the Icaros developer(s) to see if they can reproduce the problem with them. The issue may only be triggered by specific files.

Also, see if you can get Explorer to crash by opening the Properties dialog for the same FLAC files, one after the other. The IcarosPropertyHandler.dll extension is normally only loaded and called on the FLAC files when the Properties dialog is opened for them (that's what I see with a default Opus configuration), so you may need to do that to reproduce the crash. I'm guessing you have Opus configured in a way which is causing the properties to be read via another route, which may be why you see the crash with the FLAC files but it takes more effort for someone else to see the same.

But they should also really think about moving their .Net code into a separate process and replacing the shell extension with a C++ shim which talks to that process, as what they are doing is against the rules. It may or may not be involved in the crash you are seeing, but it's likely to cause other problems either way.

[ul][li]Is it supported to write Windows Shell Extension using .NET 4 today?[/li]
[li]Create a Shell Extension Handler thumbnail extractor with .net?[/li][/ul]

Note that Microsoft have published guides on writing .Net shell extensions in the past, but then had to update them with big red text saying "Do not do this!" when people who knew about the problems shouted at someone behind the scenes. :slight_smile: e.g. Create Namespace Extensions for Windows Explorer with the .NET Framework

Thanks for looking Leo. I forwarded your your info to the developer along with a flac file that always immediately causes the crash.

I had the same problem (Program error encountered by opening a folder with flac files). In my situation dBpoweramp was the problem. Disable and enable again the option "Enable Pop-up Information tips" in the "dBpoweramp configuration" screen. This solved the problem for me.

[Admin note: Please do not resurrect this old thread unless you have new information about the crash with the Icaros shell extension that the thread is about. If you want to discuss the merits of different codec packs, feel free, but please use the CoffeeShop area to keep it separate from Opus support threads.]

Actually the developer of Icaros agreed with Leo's assessment and has rewriiten the offiending code in the latest version. I've confirmed the problem is solved.

Beta 2.3.0
Property Handler completely rewritten in C++

  • Added support for MP3, Speex, TrueAudio, OptimFROG, and Wav properties
  • No .NET dependency or any other dependencies for any of the shell extensions
  • Fixed .NET error in the event log while indexing properties (Message ID: 0x2509)
  • Fixed crash in Metro File Picker
  • Fixed property indexing on Windows 8+
  • Fixed handling of AVI properties on Windows 8+
  • Fixed handling of MKV properties on Windows 10
  • Improved registration of property handler
  • Can now read and manage multiple tags in files
  • Improved many of the property parsers
  • Now fully conforms to MS guidelines

Installing latest K-Lite with Icaros 2.3.0 b5 stopped DOpus from crashing on me when I click on a FLAC!

If I have both the Viewer and Meta pane open, is there a FLAC-capable player display in the Viewer pane? It's great having the tags show in the Meta pane!