Ambermoon icon indicating copy to clipboard operation
Ambermoon copied to clipboard

Ambermoon tools on linux fail with "undefined symbol: __clock_nanosleep"

Open kermitfrog opened this issue 3 years ago • 8 comments

When trying to start any of the ambermoon tools (except MonsterValueChanger, which works fine) on linux, I get the following error message. It is always the same except for one part, which I will mark with [???]. This part changes on each run, no matter the tool and seems to contain random values, often represented as invalid characters.

Failed to load [???], error: /snap/dotnet-runtime-31/21/shared/Microsoft.NETCore.App/3.1.19/../../../lib/x86_64-linux-gnu/librt.so.1: undefined symbol: __clock_nanosleep, version GLIBC_PRIVATE
Failed to bind to CoreCLR at '/snap/dotnet-runtime-31/21/shared/Microsoft.NETCore.App/3.1.19/'
Failed to create CoreCLR, HRESULT: 0x80008088

I have the .NET runtime 3.1 installed via snap. librt.so.1 is symlink and the linked file exists.

kermitfrog avatar Sep 19 '21 20:09 kermitfrog

What distro and version do you use? Is it listed here?https://github.com/dotnet/core/blob/main/release-notes/3.1/3.1-supported-os.md

I wonder why the monster value changer works. It is very similar to the others.

Pyrdacor avatar Sep 19 '21 21:09 Pyrdacor

What distro and version do you use? [..]

KDE neon, which is basically Ubuntu 20.04 LTS with an extra repository for the newest KDE packages. So it should be supported.

I wonder why the monster value changer works. It is very similar to the others.

I had another look at it and the AmbermoonTools-Linux.tar.gz and noticed 2 things about it:

  • MonsterValueChanger is not (!!) inside the archive - so I have an older version installed (date says Dec 10).
  • MonsterValueChanger has a size of 76667 KB, while the other tools around 500-600 KB.

So it's probably working because it's the standalone version.

kermitfrog avatar Sep 19 '21 21:09 kermitfrog

It was renamed to AmbermoonMonsterValueChanger.

Pyrdacor avatar Sep 19 '21 21:09 Pyrdacor

I think this commit 8b7b080dbf30848caa3d6ab575a860b19593ad1f is the problem.

Pyrdacor avatar Sep 19 '21 21:09 Pyrdacor

As a temporary workaround you could copy the dependencies from the temp NET folder, which is created by the standalone MonsterValueChanger, to your tool directory.

Pyrdacor avatar Sep 19 '21 21:09 Pyrdacor

The tools were very large. And I thought when you want to use such tools you also will be willing to setup the NET environment. I had no clue that it isn't working well on Linux. I guess I only tested the standalone tools on Linux and the small versions on Windows only.

I will come up with a solution soon.

Pyrdacor avatar Sep 19 '21 21:09 Pyrdacor

I copied all files in the MonsterValueChanger to the directory with the tools, but that did not change anything :(. My runtime is set up, so it should work.. (I got different errors before that)

Some programs on linux use the following approach for reducing file size: Have one executable and multiple symlinks to that executable. In this case this might be AmbermoonTool, and a symlink called AmbermoonPack. When AmbermoonTool is called via the symlink, it reads args[0] which AmbermoonPack and knows what subcommand to use. But I'm not sure if this would work well here.

kermitfrog avatar Sep 20 '21 06:09 kermitfrog

I tried out the native compilation but it doesn't work very well. I think I will provide the large self-contained files as a quick fix and then when I have a bit more time I can try to come up with another solution. Maybe native builds will work better in November when NET6 is released.

Pyrdacor avatar Sep 22 '21 20:09 Pyrdacor