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

BepInEx 6 (both pre and BE) Il2Cpp does not bootstrap correctly on Unity 2021.2 or newer (Class::Init signatures have been exhausted) #474

Open
ghorsington opened this issue Aug 24, 2022 · 7 comments
Labels
bep6 Issues related to (not yet released) BepInEx 6 bug Something isn't working

Comments

@ghorsington
Copy link
Contributor

ghorsington commented Aug 24, 2022

What happened?

Right now Il2CppAssemblyUnhollower (BepInEx 6.0.0-pre.1) and Il2CppInterop (BepInEx Bleeding Edge builds) do not support Unity 2021 and newer properly. The progress for support is tracked in BepInEx/Il2CppInterop#41

Meanwhile, this causes bootstrapping problems for select games. This has been reported in multiple issues: #287, #433, #455.
This issue is meant to collect all previous reports together. Generally, it's a combination of logs like

Class::Init signatures have been exhausted, using il2cpp_class_has_references as a substitute!

and the game crashing shortly after.

Workaround

The current workaround is to simply not use Il2CppInterop or Il2CppAssemblyUnhollower and instead resort to manual interaction with Il2Cpp via its native API. This, however, closes out 95% of all plugins from being usable.
To get BepInEx past the crashing, you can disable Unity log listener by opening BepInEx/config/BepInEx.cfg, finding

[Logging]

## Enables showing unity log messages in the BepInEx logging system.
# Setting type: Boolean
# Default value: true
UnityLogListening = true

and setting it to false.

Steps to reproduce

  1. Get any game that uses Unity 2021.2, 2022 or newer and uses Il2Cpp runtime
  2. Install BepInEx
  3. Run the game
  4. Observe the normal assembly generation process after which you get a warning about Class::Init and a crash

BepInEx Distribution

Bleeding Edge from BepisBuilds

Log outputs

General example from one game

[Info   : Preloader] Running under Unity v2021.2.6
[Message: Preloader] Downloading unity base libraries
[Message: Preloader] Extracting downloaded unity base libraries
[Message: Preloader] Generating Il2CppUnhollower assemblies
...
[Warning:Unhollower] Class::Init signatures have been exhausted, using il2cpp_class_has_references as a substitute!

Environment

- OS: Any supported OS
- BepInEx: 6.0.0-pre.1 or Bleeding Edge
- Game: Any Unity 2021.2 or newer game
@ghorsington ghorsington added bug Something isn't working bep6 Issues related to (not yet released) BepInEx 6 labels Aug 24, 2022
@ghorsington ghorsington pinned this issue Aug 24, 2022
@ghorsington ghorsington changed the title BepInEx 6 (both pre and BE) Il2Cpp does not bootstrap correctly on Unity 2021 or newer (Class::Init signatures have been exhausted) BepInEx 6 (both pre and BE) Il2Cpp does not bootstrap correctly on Unity 2021.2 or newer (Class::Init signatures have been exhausted) Aug 24, 2022
@ghorsington
Copy link
Contributor Author

Fixed version ranges as Unity 2021.1 doesn't seem to be affected from my tests.

@Michael-Ziluck
Copy link

Michael-Ziluck commented Aug 24, 2022

@ghorsington, on #471, you said that the issues weren't related. Just want to confirm you saw the follow up error logs since they are the same as the ones on #471. When running RotMG on both 6.0.0-pre.1 and BE builds, both @kecleon, @animusDS, and myself (over on #433) are seeing the following (as well as the Class::Init signatures have been exhausted message in the regular log):

ErrorLog:

Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at Il2CppInterop.Runtime.Injection.InjectorHelpers.hkClassGetFieldDefaultValue(Il2CppInterop.Runtime.Runtime.Il2CppFieldInfo*, Il2CppInterop.Runtime.Runtime.Il2CppTypeStruct* ByRef)

@ghorsington
Copy link
Contributor Author

The OP of #471 hasn't provided full logs from their side and I wasn't able to replicate it on either the pre-release nor latest BE. Meanwhile I was able to replicate the exact same full logs in RotMG and various other Unity 2021.2+ games with the exact same errors.

The only thing #471 has included by OP is

Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Which can be caused by a plugin or OS. It's impossible to tell without exact logs. I asked the OP to provide more info as I wasn't able to replicate it, so until that it's safe to say their issue is unrelated and thus can stay open.

Finally, HOLOLIVE Error is Unity 2021.1 which doesn't generally use the new metadata version. You're free to test yourself though, HOLOLIVE Error is a free download.

@Teirdalin
Copy link

Teirdalin commented Nov 25, 2022

Thank you so much for the workaround, been struggling trying to get BEPINEX to even launch on Ghost Exorcisms Inc.
(uses Unity 2021.3.8f1 (2021.3.8.11731763))

Has a similar errors too.

Class::Init signatures have been exhausted, using il2cpp_class_has_references as a substitute!

Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at Il2CppInterop.Runtime.Injection.InjectorHelpers.hkClassGetFieldDefaultValue(Il2CppInterop.Runtime.Runtime.Il2CppFieldInfo*, Il2CppInterop.Runtime.Runtime.Il2CppTypeStruct* ByRef)

@SkySwimmer
Copy link

Getting something similar with Fer.al

ErrorLog:

Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at BepInEx.Unity.IL2CPP.IL2CPPChainloader.OnInvokeMethod(IntPtr, IntPtr, IntPtr, IntPtr)

LogOutput:

[[Message: Preloader] BepInEx 6.0.0-be.663 - Fer.al
[Message: Preloader] Built from commit 5796f535644cb29af2a2d0a3e44fbce21a9baaf3
[Info   :   BepInEx] System platform: Windows 10 64-bit
[Info   :   BepInEx] Process bitness: 64-bit (x64)
[Info   :   BepInEx] Running under Unity 2020.3.1f1
[Info   :   BepInEx] Runtime version: 6.0.7
[Info   :   BepInEx] Runtime information: .NET 6.0.7
[Info   :InteropManager] Detected outdated interop assemblies, will regenerate them now
[Message:InteropManager] Downloading unity base libraries
[Message:InteropManager] Extracting downloaded unity base libraries
[Message:InteropManager] Running Cpp2IL to generate dummy assemblies
[Info   :    Cpp2IL] [Library] Initializing Metadata...
[Info   :    Cpp2IL] [Library] Using actual IL2CPP Metadata version 27,1
[Info   :    Cpp2IL] [Library] Initialized Metadata in 1722ms
[Info   :    Cpp2IL] [Library] Searching Binary for Required Data...
[Info   :    Cpp2IL] [Library] Got Binary codereg: 0x183945ED0, metareg: 0x183947AE0 in 327ms.
[Info   :    Cpp2IL] [Library] Initializing Binary...
[Info   :    Cpp2IL] [Library] Initialized Binary in 1180ms
[Info   :    Cpp2IL] [Library] Mapping pointers to Il2CppMethodDefinitions...
[Info   :    Cpp2IL] [Library] Processed 156034 OK (250ms)
[Info   :    Cpp2IL] [Program] Building assemblies...This may take some time.
[Info   :    Cpp2IL] [Program] Finished Building Assemblies in 7927ms
[Info   :    Cpp2IL] [Program] Fixing up explicit overrides. Any warnings you see here aren't errors - they usually indicate improperly stripped or obfuscated types, but this is not a big deal. This should only take a second...
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.get_Item
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.get_Maps
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.IterateMapsInCategory_ControllerMap
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.Add
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.Remove
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMap
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMap
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMapByCategory
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMaps
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMaps
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMapsByCategory
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMapsByCategory
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMaps
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMapsByCategory
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMaps
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSetEntry for base method override Rewired.Player.ControllerHelper.IControllerSetEntry.get_controller
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSetEntry for base method override Rewired.Player.ControllerHelper.IControllerSetEntry.get_mapSet
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSetEntry for base method override Rewired.Player.ControllerHelper.IControllerSetEntry.get_lastActiveTime
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.get_Item
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.GetEntry
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.GetEntry
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.AddEntry
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.RemoveController
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.GetController
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.Contains
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.IndexOf
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.GetControllerWithTag
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Libraries.SharpDX.IUnknown for base method override Rewired.Libraries.SharpDX.IUnknown.Release
[Info   :    Cpp2IL] [Program] Fixup complete (1589ms)
[Info   :InteropManager] Cpp2IL finished in 00:00:16.7215966
[Info   :InteropManager] Generating interop assemblies
[Info   :Il2CppInteropGen] Reading assemblies...
[Info   :Il2CppInteropGen] Done in 00:00:00.0055426
[Info   :Il2CppInteropGen] Reading unity assemblies...
[Info   :Il2CppInteropGen] Done in 00:00:00.0562322
[Info   :Il2CppInteropGen] Creating rewrite assemblies...
[Info   :Il2CppInteropGen] Done in 00:00:00.0171618
[Info   :Il2CppInteropGen] Computing renames...
[Info   :Il2CppInteropGen] Done in 00:00:00.0411701
[Info   :Il2CppInteropGen] Creating typedefs...
[Info   :Il2CppInteropGen] Done in 00:00:00.0735418
[Info   :Il2CppInteropGen] Computing struct blittability...
[Info   :Il2CppInteropGen] Done in 00:00:00.0043314
[Info   :Il2CppInteropGen] Filling typedefs...
[Info   :Il2CppInteropGen] Done in 00:00:00.0479588
[Info   :Il2CppInteropGen] Filling generic constraints...
[Info   :Il2CppInteropGen] Done in 00:00:00.0038129
[Info   :Il2CppInteropGen] Creating members...
[Info   :Il2CppInteropGen] Done in 00:00:03.6973068
[Info   :Il2CppInteropGen] Scanning method cross-references...
[Info   :Il2CppInteropGen] Done in 00:00:01.9196330
[Info   :Il2CppInteropGen] Finalizing method declarations...
[Info   :Il2CppInteropGen] Done in 00:00:05.0320613
[Info   :Il2CppInteropGen] 8 total potentially dead methods
[Info   :Il2CppInteropGen] Filling method parameters...
[Info   :Il2CppInteropGen] Done in 00:00:01.3899323
[Info   :Il2CppInteropGen] Creating static constructors...
[Info   :Il2CppInteropGen] Done in 00:00:01.3883638
[Info   :Il2CppInteropGen] Creating value type fields...
[Info   :Il2CppInteropGen] Done in 00:00:00.0581171
[Info   :Il2CppInteropGen] Creating enums...
[Info   :Il2CppInteropGen] Done in 00:00:00.0348243
[Info   :Il2CppInteropGen] Creating IntPtr constructors...
[Info   :Il2CppInteropGen] Done in 00:00:00.9597212
[Info   :Il2CppInteropGen] Creating non-blittable struct constructors...
[Info   :Il2CppInteropGen] Done in 00:00:00.0301529
[Info   :Il2CppInteropGen] Creating generic method static constructors...
[Info   :Il2CppInteropGen] Done in 00:00:00.0696931
[Info   :Il2CppInteropGen] Creating field accessors...
[Info   :Il2CppInteropGen] Done in 00:00:05.4663101
[Info   :Il2CppInteropGen] Filling methods...
[Info   :Il2CppInteropGen] Done in 00:00:08.0862005
[Info   :Il2CppInteropGen] Generating implicit conversions...
[Info   :Il2CppInteropGen] Done in 00:00:00.0509324
[Info   :Il2CppInteropGen] Creating properties...
[Info   :Il2CppInteropGen] Done in 00:00:00.1717789
[Info   :Il2CppInteropGen] Unstripping types...
[Info   :Il2CppInteropGen] Done in 00:00:02.6371121
[Info   :Il2CppInteropGen] Unstripping fields...
[Info   :Il2CppInteropGen] Restored 508 fields
[Info   :Il2CppInteropGen] Failed to restore 21 fields
[Info   :Il2CppInteropGen] Done in 00:00:00.0187106
[Info   :Il2CppInteropGen] Unstripping methods...
[Info   :Il2CppInteropGen] Restored 13296 methods
[Info   :Il2CppInteropGen] Failed to restore 1013 methods
[Info   :Il2CppInteropGen] Done in 00:00:00.4499852
[Info   :Il2CppInteropGen] Unstripping method bodies...
[Info   :Il2CppInteropGen] IL unstrip statistics: 5830 successful, 3080 failed
[Info   :Il2CppInteropGen] Done in 00:00:01.0908046
[Info   :Il2CppInteropGen] Writing xref cache...
[Info   :Il2CppInteropGen] Done in 00:00:05.0811787
[Info   :Il2CppInteropGen] Writing assemblies...
[Info   :Il2CppInteropGen] Done in 00:00:10.3293988
[Info   :Il2CppInteropGen] Writing method pointer map...
[Info   :Il2CppInteropGen] Done in 00:00:00.0678888
[Info   :Il2CppInteropGen] Done!
[Info   : Preloader] 0 patcher plugins loaded
[Info   : Preloader] 0 assemblies discovered
[Message:AssemblyPatcher] Executing 0 patch(es)
[Message:   BepInEx] Chainloader initialized

Interestingly, fer.al has not updated (the game discontinued this year in march), and used to work on BepInEx 6, build 577, tho with a issue that prevented me from properly modding, got a obscure access violation error (only visible in the unity crash report) when calling a method on a object that should be usable.

@Kaidoz
Copy link

Kaidoz commented Jan 20, 2023

getting a similar error.
Unity Version: 2021.3.16f1

@XSNomad
Copy link

XSNomad commented May 11, 2023

Getting something similar with Fer.al

ErrorLog:

Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at BepInEx.Unity.IL2CPP.IL2CPPChainloader.OnInvokeMethod(IntPtr, IntPtr, IntPtr, IntPtr)

LogOutput:

[[Message: Preloader] BepInEx 6.0.0-be.663 - Fer.al
[Message: Preloader] Built from commit 5796f535644cb29af2a2d0a3e44fbce21a9baaf3
[Info   :   BepInEx] System platform: Windows 10 64-bit
[Info   :   BepInEx] Process bitness: 64-bit (x64)
[Info   :   BepInEx] Running under Unity 2020.3.1f1
[Info   :   BepInEx] Runtime version: 6.0.7
[Info   :   BepInEx] Runtime information: .NET 6.0.7
[Info   :InteropManager] Detected outdated interop assemblies, will regenerate them now
[Message:InteropManager] Downloading unity base libraries
[Message:InteropManager] Extracting downloaded unity base libraries
[Message:InteropManager] Running Cpp2IL to generate dummy assemblies
[Info   :    Cpp2IL] [Library] Initializing Metadata...
[Info   :    Cpp2IL] [Library] Using actual IL2CPP Metadata version 27,1
[Info   :    Cpp2IL] [Library] Initialized Metadata in 1722ms
[Info   :    Cpp2IL] [Library] Searching Binary for Required Data...
[Info   :    Cpp2IL] [Library] Got Binary codereg: 0x183945ED0, metareg: 0x183947AE0 in 327ms.
[Info   :    Cpp2IL] [Library] Initializing Binary...
[Info   :    Cpp2IL] [Library] Initialized Binary in 1180ms
[Info   :    Cpp2IL] [Library] Mapping pointers to Il2CppMethodDefinitions...
[Info   :    Cpp2IL] [Library] Processed 156034 OK (250ms)
[Info   :    Cpp2IL] [Program] Building assemblies...This may take some time.
[Info   :    Cpp2IL] [Program] Finished Building Assemblies in 7927ms
[Info   :    Cpp2IL] [Program] Fixing up explicit overrides. Any warnings you see here aren't errors - they usually indicate improperly stripped or obfuscated types, but this is not a big deal. This should only take a second...
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.get_Item
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.get_Maps
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.IterateMapsInCategory_ControllerMap
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.Add
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.Remove
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMap
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMap
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMapByCategory
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMaps
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMaps
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMapsByCategory
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMapsByCategory
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMaps
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMapsByCategory
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.IControllerMapSet for base method override Rewired.IControllerMapSet.GetMaps
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSetEntry for base method override Rewired.Player.ControllerHelper.IControllerSetEntry.get_controller
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSetEntry for base method override Rewired.Player.ControllerHelper.IControllerSetEntry.get_mapSet
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSetEntry for base method override Rewired.Player.ControllerHelper.IControllerSetEntry.get_lastActiveTime
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.get_Item
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.GetEntry
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.GetEntry
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.AddEntry
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.RemoveController
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.GetController
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.Contains
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.IndexOf
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Player.ControllerHelper.IControllerSet for base method override Rewired.Player.ControllerHelper.IControllerSet.GetControllerWithTag
[Warning:    Cpp2IL] [Program] Failed to resolve base type Rewired.Libraries.SharpDX.IUnknown for base method override Rewired.Libraries.SharpDX.IUnknown.Release
[Info   :    Cpp2IL] [Program] Fixup complete (1589ms)
[Info   :InteropManager] Cpp2IL finished in 00:00:16.7215966
[Info   :InteropManager] Generating interop assemblies
[Info   :Il2CppInteropGen] Reading assemblies...
[Info   :Il2CppInteropGen] Done in 00:00:00.0055426
[Info   :Il2CppInteropGen] Reading unity assemblies...
[Info   :Il2CppInteropGen] Done in 00:00:00.0562322
[Info   :Il2CppInteropGen] Creating rewrite assemblies...
[Info   :Il2CppInteropGen] Done in 00:00:00.0171618
[Info   :Il2CppInteropGen] Computing renames...
[Info   :Il2CppInteropGen] Done in 00:00:00.0411701
[Info   :Il2CppInteropGen] Creating typedefs...
[Info   :Il2CppInteropGen] Done in 00:00:00.0735418
[Info   :Il2CppInteropGen] Computing struct blittability...
[Info   :Il2CppInteropGen] Done in 00:00:00.0043314
[Info   :Il2CppInteropGen] Filling typedefs...
[Info   :Il2CppInteropGen] Done in 00:00:00.0479588
[Info   :Il2CppInteropGen] Filling generic constraints...
[Info   :Il2CppInteropGen] Done in 00:00:00.0038129
[Info   :Il2CppInteropGen] Creating members...
[Info   :Il2CppInteropGen] Done in 00:00:03.6973068
[Info   :Il2CppInteropGen] Scanning method cross-references...
[Info   :Il2CppInteropGen] Done in 00:00:01.9196330
[Info   :Il2CppInteropGen] Finalizing method declarations...
[Info   :Il2CppInteropGen] Done in 00:00:05.0320613
[Info   :Il2CppInteropGen] 8 total potentially dead methods
[Info   :Il2CppInteropGen] Filling method parameters...
[Info   :Il2CppInteropGen] Done in 00:00:01.3899323
[Info   :Il2CppInteropGen] Creating static constructors...
[Info   :Il2CppInteropGen] Done in 00:00:01.3883638
[Info   :Il2CppInteropGen] Creating value type fields...
[Info   :Il2CppInteropGen] Done in 00:00:00.0581171
[Info   :Il2CppInteropGen] Creating enums...
[Info   :Il2CppInteropGen] Done in 00:00:00.0348243
[Info   :Il2CppInteropGen] Creating IntPtr constructors...
[Info   :Il2CppInteropGen] Done in 00:00:00.9597212
[Info   :Il2CppInteropGen] Creating non-blittable struct constructors...
[Info   :Il2CppInteropGen] Done in 00:00:00.0301529
[Info   :Il2CppInteropGen] Creating generic method static constructors...
[Info   :Il2CppInteropGen] Done in 00:00:00.0696931
[Info   :Il2CppInteropGen] Creating field accessors...
[Info   :Il2CppInteropGen] Done in 00:00:05.4663101
[Info   :Il2CppInteropGen] Filling methods...
[Info   :Il2CppInteropGen] Done in 00:00:08.0862005
[Info   :Il2CppInteropGen] Generating implicit conversions...
[Info   :Il2CppInteropGen] Done in 00:00:00.0509324
[Info   :Il2CppInteropGen] Creating properties...
[Info   :Il2CppInteropGen] Done in 00:00:00.1717789
[Info   :Il2CppInteropGen] Unstripping types...
[Info   :Il2CppInteropGen] Done in 00:00:02.6371121
[Info   :Il2CppInteropGen] Unstripping fields...
[Info   :Il2CppInteropGen] Restored 508 fields
[Info   :Il2CppInteropGen] Failed to restore 21 fields
[Info   :Il2CppInteropGen] Done in 00:00:00.0187106
[Info   :Il2CppInteropGen] Unstripping methods...
[Info   :Il2CppInteropGen] Restored 13296 methods
[Info   :Il2CppInteropGen] Failed to restore 1013 methods
[Info   :Il2CppInteropGen] Done in 00:00:00.4499852
[Info   :Il2CppInteropGen] Unstripping method bodies...
[Info   :Il2CppInteropGen] IL unstrip statistics: 5830 successful, 3080 failed
[Info   :Il2CppInteropGen] Done in 00:00:01.0908046
[Info   :Il2CppInteropGen] Writing xref cache...
[Info   :Il2CppInteropGen] Done in 00:00:05.0811787
[Info   :Il2CppInteropGen] Writing assemblies...
[Info   :Il2CppInteropGen] Done in 00:00:10.3293988
[Info   :Il2CppInteropGen] Writing method pointer map...
[Info   :Il2CppInteropGen] Done in 00:00:00.0678888
[Info   :Il2CppInteropGen] Done!
[Info   : Preloader] 0 patcher plugins loaded
[Info   : Preloader] 0 assemblies discovered
[Message:AssemblyPatcher] Executing 0 patch(es)
[Message:   BepInEx] Chainloader initialized

Interestingly, fer.al has not updated (the game discontinued this year in march), and used to work on BepInEx 6, build 577, tho with a issue that prevented me from properly modding, got a obscure access violation error (only visible in the unity crash report) when calling a method on a object that should be usable.

Did you mark your code as allow unsafe? I forget to do this all the time in VS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bep6 Issues related to (not yet released) BepInEx 6 bug Something isn't working
Projects
None yet
Development

No branches or pull requests

6 participants