https://bugs.winehq.org/show_bug.cgi?id=51459
Bug ID: 51459 Summary: LibraryLoader can't find DesignSpark since switch to mono Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: phoenix-precision@gmx.co.uk Distribution: ---
Created attachment 70303 --> https://bugs.winehq.org/attachment.cgi?id=70303 Output of Library Loader 2.49
(copied with edits from forum post: https://forum.winehq.org/viewtopic.php?f=2&t=35438&p=133676#p133676 where it was suggested I submit as a bug report)
I have installed DesignSpark: (DS) https://www.rs-online.com/designspark/pcb-software and SamacSys Library Loader: https://componentsearchengine.com/tools
DS is now at version 10 and installed and working very nicely with wine-mono. It was a real PITA to install when I did it using native deps, so I'm very happy with that. Library Loader is supposed to be able to launch and connect to DS when the settings button is pressed. In normal use it opens component packages that you download, adds them to the DS library and puts a symbol at your cursor ready to place on the page.
When I was running these programs using native dependencies, it all worked well most of the time, but I couldn't install the latest version (2.49) of Library Loader. I was using 2.47, working ok.
I installed both programs in a fresh 32bit prefix. Library Loader installed the newest version (2.49) - woo hoo!
BUT
I am getting an error from Library Loader when I download a new component or when I click the settings button "Unable to launch/connect to Design Spark PCB". Reverting all the way back to v2.28 and it works, much older that what I was using previously.
It looks as though mono isn't doing something that it wants. I have set: WINEDEBUG=mscoree WINE_MONO_TRACE=x as per the forum post.
The log is from Library Loader 2.49, the newest version which installs with mono but not with .net, but can't find DesignSpark. I launched the program and pressed the "ECAD tool" (DesignSpark selected from list) settings button. The point where the button is pressed is just after the cryptography stuff, where it says "EXCEPTION handling: System.NotImplementedException: The method or operation is not implemented." though this error is also present in the working version, 2.28.
https://bugs.winehq.org/show_bug.cgi?id=51459
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |6.12 Summary|LibraryLoader can't find |LibraryLoader can't find |DesignSpark since switch to |DesignSpark |mono | Component|-unknown |mscoree
https://bugs.winehq.org/show_bug.cgi?id=51459
--- Comment #1 from Esme Povirk madewokherd@gmail.com --- Both the NotImplementedException and NullReferenceException seem worth looking into. Could you get a trace with: MONO_INLINELIMIT=0 WINE_MONO_TRACE=E:System.NotImplementedException,E:System.NullReferenceException
Is the software involved publicly available?
https://bugs.winehq.org/show_bug.cgi?id=51459
Esme Povirk madewokherd@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |madewokherd@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=51459
--- Comment #2 from alexis.happyphoenix@gmail.com --- Hi, yes, it's publicly available and doesn't cost anything. I put links to the download pages in my original report, but the links here get you the actual files. Design Spark can be found here: https://pcb.designspark.info/DesignSparkPCB_v10.0.exe DS will want you to register however, and it phones home (I consider a small price for such useful software!) Library Loader can be found here: https://componentsearchengine.com/LibraryLoader.php Sufficiently old versions of Library Loader will work (I have 2.28) but you probably can't download one. Do you want a log file from that? (TBH I couldn't see a much difference up to where 2.49 fails)
https://bugs.winehq.org/show_bug.cgi?id=51459
Esme Povirk madewokherd@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download
https://bugs.winehq.org/show_bug.cgi?id=51459
--- Comment #3 from alexis.happyphoenix@gmail.com --- Created attachment 70342 --> https://bugs.winehq.org/attachment.cgi?id=70342 New output Library Loader 2.49
https://bugs.winehq.org/show_bug.cgi?id=51459
Gijs Vermeulen gijsvrm@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |https://web.archive.org/web | |/20210723201653if_/https:// | |pcb.designspark.info/Design | |SparkPCB_v10.0.exe
--- Comment #4 from Gijs Vermeulen gijsvrm@gmail.com --- Thanks for the links, adding stable downloads.
$ sha1sum DesignSparkPCB_v10.0.exe e866642361c7da71cdca089b94d2a5c6a8b09389 DesignSparkPCB_v10.0.exe $ du -sh DesignSparkPCB_v10.0.exe 83M DesignSparkPCB_v10.0.exe
https://web.archive.org/web/20210506033408if_/https://componentsearchengine.com/LibraryLoader.php $ sha1sum LibraryLoaderSetup2v49.msi.zip b69b977b86e150f08571e8c6ee64ffda20e8bf24 LibraryLoaderSetup2v49.msi.zip $ du -sh LibraryLoaderSetup2v49.msi.zip 2.1M LibraryLoaderSetup2v49.msi.zip
archive.org had versions 2.26 and 2.30 as well (no 2.28 unfortunately).
https://web.archive.org/web/20180617121751if_/http://www.componentsearchengine.com:80/LibraryLoader.php $ sha1sum LibraryLoaderSetup2v26.msi.zip db283638a9cd206537ea42aaf7361d921c23e052 LibraryLoaderSetup2v26.msi.zip $ du -sh LibraryLoaderSetup2v26.msi.zip 412K LibraryLoaderSetup2v26.msi.zip
https://web.archive.org/web/20180801191334if_/http://componentsearchengine.com:80/LibraryLoader.php $ sha1sum LibraryLoaderSetup2v30.msi.zip 27feee76059b0e42b9320a2f8fd4dca99874c349 LibraryLoaderSetup2v30.msi.zip $ du -sh LibraryLoaderSetup2v30.msi.zip 416K LibraryLoaderSetup2v30.msi.zip
https://bugs.winehq.org/show_bug.cgi?id=51459
--- Comment #5 from alexis.happyphoenix@gmail.com --- Don't know if it helps, the change occurred from 2.30 to 2.31 - I just downloaded and tried them both. (Link to 2.31: https://web.archive.org/web/20181003061827/http://componentsearchengine.com:... )
https://bugs.winehq.org/show_bug.cgi?id=51459
--- Comment #6 from Esme Povirk madewokherd@gmail.com --- I can't really test anything because this needs a login, but the NotImplementedException could be it:
[0000033c: 0.00000 0] ENTER:c Microsoft.VisualBasic.Interaction:CreateObject (string,string)([STRING:027a1290:dspcb.application], [STRING:027b8120:]) [0000033c:] EXCEPTION handling: System.NotImplementedException: The method or operation is not implemented.
"<unnamed thread>" tid=0000033c this=027c0120 , thread handle : 00c54b80, state : not waiting at Microsoft.VisualBasic.Interaction.CreateObject (string,string) [0x00001] in <6b4377a1cd914826a92f2afc300b6eab>:0 at Library_Loader.LL.LL_Load (object,System.EventArgs) [0x00541] in <79f86b0c23f84ed6823cee13d0eb5b7f>:0
https://bugs.winehq.org/show_bug.cgi?id=51459
--- Comment #7 from Esme Povirk madewokherd@gmail.com --- I imported CreateObject from .NET Core. That needed Type.GetTypeForProgID, so I implemented that based on CLSIDFromProgID. Now it loads the type, but it still fails:
[000008a8: 0.00000 0] ENTER:c Microsoft.VisualBasic.CompilerServices.LateBinding:LateGet (object,System.Type,string,object[],string[],bool[])([System.Runtime.Remoting.Proxies.TransparentProxy:016061d0], 00000000, [STRING:027b1d18:SetUserCtrl], [System.Object[]:[0]016061e8], 00000000, 00000000) [000008a8:] EXCEPTION handling: System.NotImplementedException: The method or operation is not implemented.
So, seemingly what we need is for System.Type.InvokeMember to work for a runtime-callable wrapper. That means translating the call to IDispatch::Invoke.
https://bugs.winehq.org/show_bug.cgi?id=51459
--- Comment #8 from Esme Povirk madewokherd@gmail.com --- This seems a bit complicated so I'm not going to work on it right now, I'll just leave some pointers for the future or in case anyone else wants to work on it. InvokeMember is in referencesource/mscorlib/system/rttype.cs. We'll need to do something similar to cominterop_ccw_invoke_impl but in reverse. We can use Marshal.GetNativeVariantForObject in managed code to translate parameters into an array of VARIANT structures. Then we'll need an icall that maps names to ids, and calls IDispatch::Invoke. The managed part can then translate any reference parameters and the result back to objects from VARIANT.