https://bugs.winehq.org/show_bug.cgi?id=48677
Bug ID: 48677 Summary: Exact Audio Copy (EAC) 1.4 plugins don't function Product: Wine Version: 5.0 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: bastian.dev@gmail.com Distribution: ---
Starting from the new version (1.4) of Exact Audio Copy (EAC) plugins are not working anymore. They used to work with EAC 1.3
https://bugs.winehq.org/show_bug.cgi?id=48677
bastian.dev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |bastian.dev@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=48677
--- Comment #1 from bastian.dev@gmail.com --- I had to install dotnet40. Now it works.
https://bugs.winehq.org/show_bug.cgi?id=48677
bastian.dev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |NOTOURBUG Status|UNCONFIRMED |RESOLVED
--- Comment #2 from bastian.dev@gmail.com --- I had to install dotnet40. Now it works.
https://bugs.winehq.org/show_bug.cgi?id=48677
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Keywords| |download Resolution|NOTOURBUG |--- Ever confirmed|0 |1 Summary|Exact Audio Copy (EAC) 1.4 |Exact Audio Copy (EAC) 1.4 |plugins don't function |plugins don't function with | |Wine-Mono URL| |https://web.archive.org/web | |/20200209111518/http://www. | |exactaudiocopy.de/eac-1.4.e | |xe Component|-unknown |mscoree CC| |focht@gmx.net
--- Comment #3 from Anastasius Focht focht@gmx.net --- Hello folks,
"not our bug"? If the installation of .NET Framework 2.x/4.x solves the problem there is certainly a bug: Wine-Mono.
I've tried the installer with a Wine build that doesn't have Wine-Mono. It complained that certain features need .NET Framework 2.0
Anyway, OP didn't provide steps to reproduce. "plugins don't function" is not very helpful as the app starts fine. One obviously has to do something more.
Regards
https://bugs.winehq.org/show_bug.cgi?id=48677
--- Comment #4 from bastian.dev@gmail.com --- Sorry Anastasius Focht for not specifiying the plugin issues more precisely. You can check whether the plugins work or not by goint to the Menu EAC->EAC Options->Audio Plugins. There should be AcoustID Plugin and CUETools DB Plugin. Under Menu EAC->Metadata Options there should be more than the "Build-in freedb engine": "CueTools...", "MusicBrainz..." and "GD3...".
To make them work I had to install dotnet20 and dotnet40 via winetricks.
https://bugs.winehq.org/show_bug.cgi?id=48677
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |NEW
--- Comment #5 from Anastasius Focht focht@gmx.net --- Hello folks,
using Mono trace facility it reveals:
(NOTE: 'ChromaPlugin.dll' hosts AcoustID plugin)
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files (x86)/Exact Audio Copy
$ WINEDEBUG=+seh,+loaddll WINE_MONO_TRACE=all wine ./EAC.exe >>log.txt 2>&1 ... 007a:trace:loaddll:load_native_dll Loaded L"C:\Program Files (x86)\Exact Audio Copy\PluginHandler.dll" at 0xf830000: native 007a:trace:loaddll:load_native_dll Loaded L"C:\windows\mono\mono-2.0\lib\mono\gac\System\4.0.0.0__b77a5c561934e089\System.dll" at 0xf840000: native [0000007A: 0.01398 0] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)([MetadataPlugIn.PluginHandler:0DC00388], 00000000, 0134EFD4, 0F782DF0, ) [0000007A: 0.01401 1] ENTER: MetadataPlugIn.PluginHandler:.ctor ()(this:0DC00388[MetadataPlugIn.PluginHandler mscorlib.dll], ) [0000007A: 0.01417 2] ENTER: (wrapper alloc) object:AllocVector (intptr,intptr)(01DC22C8, 00000000, ) [0000007A: 0.01418 2] LEAVE: (wrapper alloc) object:AllocVector (intptr,intptr)[HelperFunctionsLib.IMetadataRetriever[]:0DC00458] [0000007A: 0.01419 2] ENTER: (wrapper alloc) object:AllocVector (intptr,intptr)(01DC24C8, 00000000, ) [0000007A: 0.01420 2] LEAVE: (wrapper alloc) object:AllocVector (intptr,intptr)[HelperFunctionsLib.IAudioDataTransfer[]:0DC00468] [0000007A: 0.01420 2] ENTER: (wrapper alloc) object:AllocSmall (intptr,intptr)(01DC25E8, 00000018, ) ... [0000007A: 0.32151 7] ENTER: (wrapper managed-to-native) System.Reflection.Assembly:LoadFile_internal (string,System.Threading.StackCrawlMark&)([STRING:0DC0F998:C:\Program Files (x86)\Exact Audio Copy\ChromaPlugin.dll], [BYREF:0134ED1C], ) 007a:trace:loaddll:load_native_dll Loaded L"C:\Program Files (x86)\Exact Audio Copy\ChromaPlugin.dll" at 0xfb30000: native [0000007A: 0.32389 7] LEAVE: (wrapper managed-to-native) System.Reflection.Assembly:LoadFile_internal (string,System.Threading.StackCrawlMark&)[System.Reflection.RuntimeAssembly:0DC0FA18] [0000007A: 0.32401 7] ENTER: System.Reflection.Assembly:op_Inequality (System.Reflection.Assembly,System.Reflection.Assembly)([System.Reflection.RuntimeAssembly:0DC0FA18], 00000000, ) [0000007A: 0.32403 7] LEAVE: System.Reflection.Assembly:op_Inequality (System.Reflection.Assembly,System.Reflection.Assembly)result=277086977 [0000007A: 0.32403 6] LEAVE: System.Reflection.Assembly:LoadFile (string,System.Security.Policy.Evidence)[System.Reflection.RuntimeAssembly:0DC0FA18] [0000007A: 0.32404 5] LEAVE: System.Reflection.Assembly:LoadFile (string)[System.Reflection.RuntimeAssembly:0DC0FA18] [0000007A: 0.32411 5] ENTER: System.Reflection.Assembly:CreateInstance (string)(this:0DC0FA18[System.Reflection.RuntimeAssembly mscorlib.dll], [STRING:0F7EC120:MetadataPlugIn.MetadataRetriever], ) [0000007A: 0.32425 6] ENTER: System.Reflection.Assembly:CreateInstance (string,bool)(this:0DC0FA18[System.Reflection.RuntimeAssembly mscorlib.dll], [STRING:0F7EC120:MetadataPlugIn.MetadataRetriever], 0, ) [0000007A: 0.32437 7] ENTER: System.Reflection.RuntimeAssembly:GetType (string,bool,bool)(this:0DC0FA18[System.Reflection.RuntimeAssembly mscorlib.dll], [STRING:0F7EC120:MetadataPlugIn.MetadataRetriever], 0, 0, ) [0000007A: 0.32449 8] ENTER: string:memset (byte*,int,int)(0134EBA0, 0, 68, ) [0000007A: 0.32450 8] LEAVE: string:memset (byte*,int,int) [0000007A: 0.32451 8] ENTER: (wrapper managed-to-native) System.Reflection.Assembly:InternalGetType (System.Reflection.Assembly,System.Reflection.Module,string,bool,bool)([System.Reflection.RuntimeAssembly:0DC0FA18], 00000000, [STRING:0F7EC120:MetadataPlugIn.MetadataRetriever], 0, 0, ) [0000007A: 0.32453 8] LEAVE: (wrapper managed-to-native) System.Reflection.Assembly:InternalGetType (System.Reflection.Assembly,System.Reflection.Module,string,bool,bool)[OBJECT:00000000] [0000007A: 0.32454 7] LEAVE: System.Reflection.RuntimeAssembly:GetType (string,bool,bool)[OBJECT:00000000] [0000007A: 0.32454 6] LEAVE: System.Reflection.Assembly:CreateInstance (string,bool)[OBJECT:00000000] [0000007A: 0.32455 5] LEAVE: System.Reflection.Assembly:CreateInstance (string)[OBJECT:00000000] [0000007A: 0.32456 5] ENTER: System.Reflection.Assembly:CreateInstance (string)(this:0DC0FA18[System.Reflection.RuntimeAssembly mscorlib.dll], [STRING:0F7EC170:AudioDataPlugIn.AudioDataTransfer], ) [0000007A: 0.32457 6] ENTER: System.Reflection.Assembly:CreateInstance (string,bool)(this:0DC0FA18[System.Reflection.RuntimeAssembly mscorlib.dll], [STRING:0F7EC170:AudioDataPlugIn.AudioDataTransfer], 0, ) [0000007A: 0.32458 7] ENTER: System.Reflection.RuntimeAssembly:GetType (string,bool,bool)(this:0DC0FA18[System.Reflection.RuntimeAssembly mscorlib.dll], [STRING:0F7EC170:AudioDataPlugIn.AudioDataTransfer], 0, 0, ) [0000007A: 0.32458 8] ENTER: string:memset (byte*,int,int)(0134EBA0, 0, 68, ) [0000007A: 0.32459 8] LEAVE: string:memset (byte*,int,int) [0000007A: 0.32460 8] ENTER: (wrapper managed-to-native) System.Reflection.Assembly:InternalGetType (System.Reflection.Assembly,System.Reflection.Module,string,bool,bool)([System.Reflection.RuntimeAssembly:0DC0FA18], 00000000, [STRING:0F7EC170:AudioDataPlugIn.AudioDataTransfer], 0, 0, ) 007a:trace:loaddll:load_native_dll Loaded L"C:\Program Files (x86)\Exact Audio Copy\Interop.HelperFunctionsLib.dll" at 0xfb40000: native [0000007A: 0.32666 8] LEAVE: (wrapper managed-to-native) System.Reflection.Assembly:InternalGetType (System.Reflection.Assembly,System.Reflection.Module,string,bool,bool)[System.RuntimeType:0F80D188] [0000007A: 0.32668 7] LEAVE: System.Reflection.RuntimeAssembly:GetType (string,bool,bool)[System.RuntimeType:0F80D188] [0000007A: 0.32680 7] ENTER: System.Activator:CreateInstance (System.Type)([TYPE:AudioDataPlugIn.AudioDataTransfer], ) [0000007A: 0.32688 8] ENTER: System.Activator:CreateInstance (System.Type,bool)([TYPE:AudioDataPlugIn.AudioDataTransfer], 0, ) [0000007A: 0.32702 9] ENTER: System.Activator:CreateInstance (System.Type,bool,bool)([TYPE:AudioDataPlugIn.AudioDataTransfer], 0, 1, ) ... [0000007A: 0.33116 15] ENTER: (wrapper managed-to-native) System.RuntimeTypeHandle:GetAttributes (System.RuntimeType)([TYPE:AudioDataPlugIn.AudioDataTransfer], ) [0000007A: 0.33117 15] LEAVE: (wrapper managed-to-native) System.RuntimeTypeHandle:GetAttributes (System.RuntimeType)result=1048577 [0000007A: 0.33118 14] LEAVE: System.RuntimeType:GetAttributeFlagsImpl ()result=1048577 [0000007A: 0.33118 13] LEAVE: System.Type:get_IsAbstract ()result=30932992 [0000007A: 0.33119 13] ENTER: System.Reflection.RuntimeConstructorInfo:InternalInvoke (object,object[],bool)(this:0DC0FB48[System.Reflection.RuntimeConstructorInfo mscorlib.dll], 00000000, 00000000, 1, ) [0000007A: 0.33120 14] ENTER: (wrapper managed-to-native) System.Reflection.RuntimeConstructorInfo:InternalInvoke (System.Reflection.RuntimeConstructorInfo,object,object[],System.Exception&)([System.Reflection.RuntimeConstructorInfo:0DC0FB48], 00000000, 00000000, [BYREF:0134E8F8], ) [0000007A: 0.33150 15] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)([AudioDataPlugIn.AudioDataTransfer:0DC0FB88], 00000000, 0134E63C, 0FB2D028, ) [0000007A: 0.33152 16] ENTER: AudioDataPlugIn.AudioDataTransfer:.ctor ()(this:0DC0FB88[AudioDataPlugIn.AudioDataTransfer mscorlib.dll], ) [0000007A: 0.33153 16] LEAVE: AudioDataPlugIn.AudioDataTransfer:.ctor () [0000007A: 0.33154 15] LEAVE: (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)[OBJECT:00000000] [0000007A: 0.33154 14] LEAVE: (wrapper managed-to-native) System.Reflection.RuntimeConstructorInfo:InternalInvoke (System.Reflection.RuntimeConstructorInfo,object,object[],System.Exception&)[AudioDataPlugIn.AudioDataTransfer:0DC0FB88] [0000007A: 0.33155 13] LEAVE: System.Reflection.RuntimeConstructorInfo:InternalInvoke (object,object[],bool)[AudioDataPlugIn.AudioDataTransfer:0DC0FB88] [0000007A: 0.33156 12] LEAVE: System.RuntimeType:CreateInstanceMono (bool,bool)[AudioDataPlugIn.AudioDataTransfer:0DC0FB88] [0000007A: 0.33157 11] LEAVE: System.RuntimeType:CreateInstanceSlow (bool,bool,bool,bool)[AudioDataPlugIn.AudioDataTransfer:0DC0FB88] [0000007A: 0.33157 10] LEAVE: System.RuntimeType:CreateInstanceDefaultCtor (bool,bool,bool,bool,System.Threading.StackCrawlMark&)[AudioDataPlugIn.AudioDataTransfer:0DC0FB88] [0000007A: 0.33158 9] LEAVE: System.Activator:CreateInstance (System.Type,bool,bool)[AudioDataPlugIn.AudioDataTransfer:0DC0FB88] [0000007A: 0.33159 8] LEAVE: System.Activator:CreateInstance (System.Type,bool)[AudioDataPlugIn.AudioDataTransfer:0DC0FB88] [0000007A: 0.33159 7] LEAVE: System.Activator:CreateInstance (System.Type)[AudioDataPlugIn.AudioDataTransfer:0DC0FB88] [0000007A: 0.33160 6] LEAVE: System.Reflection.Assembly:CreateInstance (string,bool)[AudioDataPlugIn.AudioDataTransfer:0DC0FB88] [0000007A: 0.33161 5] LEAVE: System.Reflection.Assembly:CreateInstance (string)[AudioDataPlugIn.AudioDataTransfer:0DC0FB88] [0000007A: 0.33183 5] ENTER: (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)([System.InvalidCastException:0DC0FBB0], 00000000, 0134EBCC, 0FB2D650, ) [0000007A: 0.33186 6] ENTER: System.InvalidCastException:.ctor ()(this:0DC0FBB0[System.InvalidCastException mscorlib.dll], ) [0000007A: 0.33187 7] ENTER: System.SystemException:.ctor (string)(this:0DC0FBB0[System.InvalidCastException mscorlib.dll], [STRING:0F7EC210:Specified cast is not valid.], ) [0000007A: 0.33189 8] ENTER: System.Exception:.ctor (string)(this:0DC0FBB0[System.InvalidCastException mscorlib.dll], [STRING:0F7EC210:Specified cast is not valid.], ) [0000007A: 0.33191 9] ENTER: System.Exception:Init ()(this:0DC0FBB0[System.InvalidCastException mscorlib.dll], ) [0000007A: 0.33192 10] ENTER: System.Exception:set_HResult (int)(this:0DC0FBB0[System.InvalidCastException mscorlib.dll], -2146233088, ) [0000007A: 0.33192 10] LEAVE: System.Exception:set_HResult (int) [0000007A: 0.33193 10] ENTER: (wrapper alloc) object:AllocSmall (intptr,intptr)(01D88A30, 0000001C, ) [0000007A: 0.33194 10] LEAVE: (wrapper alloc) object:AllocSmall (intptr,intptr)[System.Runtime.Serialization.SafeSerializationManager:0DC0FC40] [0000007A: 0.33196 10] ENTER: System.Runtime.Serialization.SafeSerializationManager:.ctor ()(this:0DC0FC40[System.Runtime.Serialization.SafeSerializationManager mscorlib.dll], ) [0000007A: 0.33197 10] LEAVE: System.Runtime.Serialization.SafeSerializationManager:.ctor () [0000007A: 0.33198 9] LEAVE: System.Exception:Init () [0000007A: 0.33198 8] LEAVE: System.Exception:.ctor (string) [0000007A: 0.33199 8] ENTER: System.Exception:set_HResult (int)(this:0DC0FBB0[System.InvalidCastException mscorlib.dll], -2146233087, ) [0000007A: 0.33200 8] LEAVE: System.Exception:set_HResult (int) [0000007A: 0.33200 7] LEAVE: System.SystemException:.ctor (string) [0000007A: 0.33201 7] ENTER: System.Exception:set_HResult (int)(this:0DC0FBB0[System.InvalidCastException mscorlib.dll], -2147467262, ) [0000007A: 0.33202 7] LEAVE: System.Exception:set_HResult (int) [0000007A: 0.33202 6] LEAVE: System.InvalidCastException:.ctor () [0000007A: 0.33203 5] LEAVE: (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)[OBJECT:00000000] [0000007A: 0.33215 5] ENTER: (wrapper runtime-invoke) <Module>:runtime_invoke_object__this__ (object,intptr,intptr,intptr)([System.InvalidCastException:0DC0FBB0], 00000000, 0134EBC0, 0FB2DC70, ) [0000007A: 0.33217 6] ENTER: System.Exception:get_Message ()(this:0DC0FBB0[System.InvalidCastException mscorlib.dll], ) [0000007A: 0.33217 6] LEAVE: System.Exception:get_Message ()[STRING:0F7EC210:Specified cast is not valid.] [0000007A: 0.33218 5] LEAVE: (wrapper runtime-invoke) <Module>:runtime_invoke_object__this__ (object,intptr,intptr,intptr)[STRING:0F7EC210:Specified cast is not valid.] [0000007A:] EXCEPTION handling: System.InvalidCastException: Specified cast is not valid. EXCEPTION: catch found at clause 1 of MetadataPlugIn.PluginHandler:.ctor () --- snip ---
Apparently Wine-Mono can't create 'AudioDataPlugIn.AudioDataTransfer' instance from the loaded plugin assembly hence the plugin is not considered valid.
The plugin loader handles two types of plugins, implementing either:
* IMetadataRetriever * IAudioDataTransfer
--- snip --- // Type: MetadataPlugIn.PluginHandler // Assembly: PluginHandler, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: AD42C4E0-3875-4A66-8CC3-3C98BCE8CEDF // Assembly location: Z:\home\focht.wine\drive_c\Program Files (x86)\Exact Audio Copy\PluginHandler.dll
using HelperFunctionsLib; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.InteropServices;
namespace MetadataPlugIn { [Guid("C55D92B1-4FDF-4b54-B817-98AB9569F4F4")] [ClassInterface(ClassInterfaceType.None)] [ComSourceInterfaces(typeof (IMetadataRetriever))] public class PluginHandler : IMetadataRetriever, IPluginSelector, IAudioDataTransfer { private IMetadataRetriever[] m_plugins; private IAudioDataTransfer[] m_transfer; private int m_current_plugin; private List<string> m_excluded_guids;
public PluginHandler() { this.m_plugins = new IMetadataRetriever[0]; this.m_transfer = new IAudioDataTransfer[0]; this.m_current_plugin = -1; this.m_excluded_guids = new List<string>(); base.\u002Ector(); List<IMetadataRetriever> metadataRetrieverList = new List<IMetadataRetriever>(); List<IAudioDataTransfer> audioDataTransferList = new List<IAudioDataTransfer>(); string directoryName = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); foreach (FileInfo file in new DirectoryInfo(directoryName).GetFiles()) { if (Path.GetExtension(file.Name) == ".dll") { try { Assembly assembly = Assembly.LoadFile(Path.Combine(directoryName, file.Name)); try { IMetadataRetriever instance = (IMetadataRetriever) assembly.CreateInstance("MetadataPlugIn.MetadataRetriever"); if (instance != null) metadataRetrieverList.Add(instance); } catch (Exception ex) { } try { IAudioDataTransfer instance = (IAudioDataTransfer) assembly.CreateInstance("AudioDataPlugIn.AudioDataTransfer"); if (instance != null) audioDataTransferList.Add(instance); } catch (Exception ex) { } } catch (Exception ex) { } } } this.m_plugins = metadataRetrieverList.ToArray(); this.m_transfer = audioDataTransferList.ToArray(); } ... --- snip ---
The 'AcoustID' plugin, implementing 'IAudioDataTransfer' interface:
--- snip --- // Type: AudioDataPlugIn.AudioDataTransfer // Assembly: ChromaPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: 32E5E20C-367D-4D05-A362-003AA0FC4CB4 // Assembly location: Z:\home\focht.wine\drive_c\Program Files (x86)\Exact Audio Copy\ChromaPlugin.dll
using ChromaPlugin; using ChromaPrint; using HelperFunctionsLib; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics; using System.Net; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Threading; using System.Xml;
namespace AudioDataPlugIn { [Guid("EFFF6AE3-3D3B-4f0c-A22E-217C566397B1")] [ClassInterface(ClassInterfaceType.None)] [ComSourceInterfaces(typeof (IAudioDataTransfer))] public class AudioDataTransfer : IAudioDataTransfer { private const string AppAPIKey = "<redacted>"; private const string AppAPIKeyTitle = "<redacted>"; private const string SubmissionURL = "http://api.acoustid.org/v2/submit"; private const int FingerprintLength = 120; private const int SampleRate = 44100; private const int NumChannels = 2; private const int BitsPerSample = 16; private const int BytesPerSecond = 176400; private int m_expected_data_length_in_bytes; private int m_start_pos; private uint m_current_pos; private bool m_use_cd; private IMetadataLookup m_data; private AudioDataTransfer.ChromaTrack[] m_tracks; private Dictionary<int, string> m_recordings; private string m_discid;
public string GetAudioTransferPluginGuid() { Attribute customAttribute = Attribute.GetCustomAttribute((MemberInfo) typeof (AudioDataTransfer), typeof (GuidAttribute)); if (customAttribute is GuidAttribute) return ((GuidAttribute) customAttribute).Value; return this.GetAudioTransferPluginName(); } ... --- snip ---
Nothing obvious with the metadata. Maybe Vincent (Wine-Mono maintainer) has some idea where to look further.
Regards
https://bugs.winehq.org/show_bug.cgi?id=48677
winetaste@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |winetaste@gmx.net
https://bugs.winehq.org/show_bug.cgi?id=48677
Esme Povirk madewokherd@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |madewokherd@gmail.com