create_server class not registered

Questions about Wine on Linux
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

create_server class not registered

Post by Menneck »

Hello,

I'm trying to run an application using third party Dlls. I registered the third party libraries and i can look up the entries in the registry. When I start the application i get these errors:

Code: Select all

002c:warn:file:CreateFileW Unable to create file L"\\\\.\\pipe\\{BEB4B3C8-CCD6-4F37-97E6-21DD51BD2F23}" (status c0000034)
002c:warn:ole:create_local_service No LocalService value
002c:err:ole:create_server class {beb4b3c8-ccd6-4f37-97e6-21dd51bd2f23} not registered
002c:err:ole:CoGetClassObject no class object {beb4b3c8-ccd6-4f37-97e6-21dd51bd2f23} could be created for context 0x4
I already tried to deregister and register the dlls manually with regsvr32.

Thanks for any suggestions :)
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

Do you find the GUID inside the wine regedit?
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

DarkShadow44 wrote:Do you find the GUID inside the wine regedit?
Yes in the HKEY_CLASSES_ROOT/CLSID directory and in HKEY_LOCAL_MACHINE/Software/Classes/CLSID
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

Interesting, then it should work. In the registry, what is the path for the dll for that GUID? And does this DLL exist in the file system?
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

DarkShadow44 wrote:Interesting, then it should work. In the registry, what is the path for the dll for that GUID? And does this DLL exist in the file system?
Yes the DLL does exist, it's in the same directory of the application. I also tried to move ist to the system32 directory of the 32-bit prefix, but it didn't change anything
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

Is there a download I could use to test?
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

Here is the necessary Dll and the program.

https://we.tl/t-zwMS9V0Ulf
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

Are you sure this is an issue? Because that program seems to do the same as on windows.

For the record, the program calls CoGetClassObject with CLSCTX_LOCAL_SERVER. And since that is not registered (neither on wine nor windows) it doesn't work.
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

The desired output should be :

Code: Select all

INFO: 2019/05/27 14:41:15.785341 Module[main] - ID[] - Message[Interface version
 : 1.5.5.0]
Which is for me the case, when i execute it under Win7
But on Linux i get the following message as i mentioned before:

Code: Select all

002c:err:ole:create_server class {beb4b3c8-ccd6-4f37-97e6-21dd51bd2f23} not registered
002c:err:ole:CoGetClassObject no class object {beb4b3c8-ccd6-4f37-97e6-21dd51bd2f23} could be created for context 0x4
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

Yeah, because windows doesn't log failed calls. But I'm pretty sure the same "failure" happens on windows. So what exactly is the issue here, except for additional debug output?
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

If Windows would have the same fail, you would get the Logging message from the program and the empty Interface-version message like in Linux or not?

Code: Select all

ERROR: 2019/05/28 13:50:42.843102 Module[main] - ID[] - Message[GetVersionComInterface: Could not get version of COM-Interface Version: error -2147352567 (FormatMessage failed with: Message 0x%1 not found in file %2.)]
INFO: 2019/05/28 13:50:42.843364 Module[main] - ID[] - Message[Interface version : ]
This is the present issue for me. How can Windows retrieve the Interface version, but Wine/Linux can't?
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

That error code is DISP_E_EXCEPTION, and it complains that it can't find a message in a file. That's not because a class is not registered though.

You probably don't happen to have the source? Would be nice to know how it tries to get the version. Other way would be to investigate the error without, I could probably do that.
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

Sorry for the late answer, i got the sourcecode of the little test programm.
You can find it here: https://we.tl/t-ddp4C9EH6w
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

Ah I see. Well, on windows I get also an error and an empty interface version. Using the dll you sent me previously. Does it work for you only with "heidenhaindnc.dll" and "TestProgrammHH.exe"? Without anything else registered?
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

Ah, I previously executed an installer-file and then only unregistered and reregistered the Dlls. Apparently then it works. But now I executed the installer-file to uninstall and reregistered the Dll and it didn't worked on windows.

But under Linux I still got the same error.

Maybe it will work for you with this : https://we.tl/t-bbNZ1lxIry
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

For the record, the program calls CoGetClassObject with CLSCTX_LOCAL_SERVER. And since that is not registered (neither on wine nor windows) it doesn't work.
Yeah, I'll take that back...
Interesting enough, it indeed seems to be because of that "not registered class". If I hack wine to always load classes, it works. Didn't expect that at all, but here we are. I'll try and look into what causes this.

And since I didn't say that yet, many thanks for the bugreport and helping to troubleshoot! :)
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

How do you hack into wine to always load classes?
Would be nice to know, so I can keep going for the time you are looking into the problem.

No problem, thank you for the help :)
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

Menneck wrote:How do you hack into wine to always load classes?
In dlls/ole32/compobj.c, line 3150 remove

Code: Select all

if (CLSCTX_INPROC_SERVER & dwClsContext)
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

Is there a Bug ID to track the problem?
So I could change to the improved version, when the problem gets solved?
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

No, no bug yet. I'd create one, but I don't think I'm allowed to link the files.
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

Hello again,
thanks to your work-around I have now managed to get my program to run. Thank you very much! :D

Will this be implemented in the new Wine version?
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

Not in that form. But when I have time, I'll make it into a proper fix!
dmigowski
Newbie
Newbie
Posts: 1
Joined: Wed Nov 18, 2020 4:41 pm

Re: create_server class not registered

Post by dmigowski »

Hello DarkShadow44.

I have the same problem, also with the Heidenhain DLL on Linux.

You wrote somewhere above to edit dlls/ole32/compobj.c, line 3150 and to remove the code

Code: Select all

if (CLSCTX_INPROC_SERVER & dwClsContext)
but this line occurs a few times around that location. Could you tell me the line in the current version or maybe create a patch for me?

Kindest regards
User avatar
DarkShadow44
Level 8
Level 8
Posts: 1207
Joined: Tue Nov 22, 2016 5:39 pm

Re: create_server class not registered

Post by DarkShadow44 »

@OP
Do you think we could get permission to use attach the sources to a bugreport? Because I don't have them anymore, and that would be useful for archiving purposes. I could create a patch, but as for now, I can't test since I lost the program..
Menneck
Level 2
Level 2
Posts: 13
Joined: Wed May 08, 2019 3:23 am

Re: create_server class not registered

Post by Menneck »

Sorry for the late answer, I reuploaded the program.

https://we.tl/t-KkpShKNjfo
Locked