Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Il2CppAssemblyGenerator attempts to create an invalid directory and crashes #779

Open
4 of 7 tasks
PavelDobCZ23 opened this issue Oct 27, 2024 · 2 comments
Open
4 of 7 tasks
Labels
Bug / Issue Something isn't working Work-in-Progress This issue or pull request is being worked on currently

Comments

@PavelDobCZ23
Copy link

All of the following criteria must be met

  • All Requirements must be installed.
  • Changed the title so that it doesn't just says "[Bug]: "
  • I have searched the GitHub issues for my bug, even in the closed issues.

All of the following are optional to answer

  • Tried reinstalling the Game.
  • Tried reinstalling MelonLoader.
  • Tried restarting PC.
  • Was able to see the Start Screen.

Describe the issue.

I am unable to start MelonLoader 0.6.5 with native Linux version of The Long Dark. The cause is Il2CppAssemblyGenerator attempting to create a directory with the name Cpp2IL in a directory where is Cpp2IL executable located and it fails. It shouldn't do that as it's impossible to have a directory and a file with the same name on Linux file systems, therefore this behavior needs to be changed. The issue can be found at the last few lines of the provided log.

Log:

[13:29:50.586] ------------------------------
[13:29:50.601] MelonLoader v0.6.5 Open-Beta
[13:29:50.601] OS: Unix 6.11.4.201
[13:29:50.601] Hash Code: ECEE59E98250B37FBAD36ACD622C0C177FB65E478F6B3EE58F58366B6557DF70
[13:29:50.601] ------------------------------
[13:29:50.601] Game Type: Il2cpp
[13:29:50.601] Game Arch: x64
[13:29:50.601] ------------------------------
[13:29:50.601] Command-Line: /home/pavel/.local/share/Steam/steamapps/common/TheLongDark/tld.x86_64
[13:29:50.602] ------------------------------
[13:29:50.602] Core::BasePath = /home/pavel/.local/share/Steam/steamapps/common/TheLongDark
[13:29:50.602] Game::BasePath = /home/pavel/.local/share/Steam/steamapps/common/TheLongDark
[13:29:50.602] Game::DataPath = /home/pavel/.local/share/Steam/steamapps/common/TheLongDark/tld_Data
[13:29:50.602] Game::ApplicationPath = /home/pavel/.local/share/Steam/steamapps/common/TheLongDark/tld.x86_64
[13:29:50.602] Runtime Type: net6
[13:29:50.663] ------------------------------
[13:29:50.663] Game Name: TheLongDark
[13:29:50.663] Game Developer: Hinterland
[13:29:50.664] Unity Version: 2021.3.16f1
[13:29:50.664] Game Version: 2.32
[13:29:50.664] ------------------------------

[13:29:51.114] [Il2CppICallInjector] System.Exception: Unable to Load Native Library GameAssembly!
   at MelonLoader.NativeLibrary.LoadLib(String filepath) in D:\a\MelonLoader\MelonLoader\MelonLoader\Utils\NativeLibrary.cs:line 29
   at MelonLoader.NativeLibrary.Load(String filepath) in D:\a\MelonLoader\MelonLoader\MelonLoader\Utils\NativeLibrary.cs:line 18
   at MelonLoader.Fixes.Il2CppICallInjector.Install() in D:\a\MelonLoader\MelonLoader\MelonLoader\Fixes\Il2CppICallInjector.cs:line 85
[13:29:51.147] Preferences Loaded!

[13:29:51.156] Loading UserLibs from '/home/pavel/.local/share/Steam/steamapps/common/TheLongDark/UserLibs'...

[13:29:51.161] Loading Plugins from '/home/pavel/.local/share/Steam/steamapps/common/TheLongDark/Plugins'...
[13:29:51.162] 0 Plugins loaded.
[13:29:53.361] Loading Il2CppAssemblyGenerator...
[13:29:53.386] [Il2CppAssemblyGenerator] Contacting RemoteAPI...
[13:29:53.525] [Il2CppAssemblyGenerator] RemoteAPI.DumperVersion = null
[13:29:53.525] [Il2CppAssemblyGenerator] RemoteAPI.ObfuscationRegex = null
[13:29:53.525] [Il2CppAssemblyGenerator] RemoteAPI.MappingURL = null
[13:29:53.525] [Il2CppAssemblyGenerator] RemoteAPI.MappingFileSHA512 = null
[13:29:53.527] [Il2CppAssemblyGenerator] Using Cpp2IL Version: 2022.1.0-pre-release.18
[13:29:53.527] [Il2CppAssemblyGenerator] Using Il2CppInterop Version = 1.4.6-ci.545+3da49636029e18c88fe93901a893499a2d779805
[13:29:53.527] [Il2CppAssemblyGenerator] Using Unity Dependencies Version = 2021.3.16
[13:29:53.527] [Il2CppAssemblyGenerator] Using Deobfuscation Regex = null
[13:29:53.528] [Il2CppAssemblyGenerator] Cpp2IL is up to date.
[13:29:53.528] [Il2CppAssemblyGenerator] UnityDependencies is up to date.
[13:29:53.528] [Il2CppAssemblyGenerator] Checking GameAssembly...
[13:29:53.711] [Il2CppAssemblyGenerator] Assembly Generation Needed!
[13:29:53.716] [Il2CppAssemblyGenerator] Executing Cpp2IL...
[13:29:53.717] [Il2CppAssemblyGenerator] "/home/pavel/.local/share/Steam/steamapps/common/TheLongDark/MelonLoader/Dependencies/Il2CppAssemblyGenerator/Cpp2IL/Cpp2IL" --game-path "/home/pavel/.local/share/Steam/steamapps/common/TheLongDark" --exe-name "tld.x86_64" --output-as dummydll --use-processor attributeanalyzer attributeinjector
[13:29:53.720] TODO: SetProcessId(206774)
[13:29:53.737] [Il2CppAssemblyGenerator] Failure processing application bundle.
[13:29:53.737] [Il2CppAssemblyGenerator] Failed to create directory [/home/pavel/.local/share/Steam/steamapps/common/TheLongDark/MelonLoader/Dependencies/Il2CppAssemblyGenerator/Cpp2IL/Cpp2IL/] for extracting bundled files.
[13:29:53.739] TODO: SetProcessId(0)

Did you attach your log file?

Yes, I attached my log file to the text box above.

@SamboyCoding
Copy link
Member

So, this isn't actually an issue with ML itself. This would appear to be an issue with .net single file executables (which Cpp2IL is) when running on Linux, where it tries to make a directory to unpack itself next to the executable. Which is unusual, because you'd think they'd have tested that.

@PavelDobCZ23
Copy link
Author

So, this isn't actually an issue with ML itself. This would appear to be an issue with .net single file executables (which Cpp2IL is) when running on Linux, where it tries to make a directory to unpack itself next to the executable. Which is unusual, because you'd think they'd have tested that.

I don't know much about this to guess what's going on, but I believe the extraction should happen somewhere else completely, and it's dependent on DOTNET_BUNDLE_EXTRACT_BASE_DIR environment variable, which in my case is in .cache folder and Cpp2IL does actually extract something in there. It creates this dir /home/pavel/.cache/dotnet_bundle_extract/Cpp2IL/4w0CSh42PpXKsRT_O43nd2rL9zRY3QI=/, which contains a single file libcapstone.so. Idk if this info helps in any way, but I think it's relevant.

@PavelDobCZ23 PavelDobCZ23 changed the title [Bug]: Il2CppAssemblyGenerator attemepts to create an invalid directory and crashes [Bug]: Il2CppAssemblyGenerator attempts to create an invalid directory and crashes Oct 27, 2024
@HerpDerpinstine HerpDerpinstine added Bug / Issue Something isn't working Work-in-Progress This issue or pull request is being worked on currently labels Nov 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug / Issue Something isn't working Work-in-Progress This issue or pull request is being worked on currently
Projects
None yet
Development

No branches or pull requests

3 participants