Seems that for whatever reason I can't get C# plugins to properly load.
Lua, Python, etc plugins are loading fine (tested this with only those plugins enabled).
Once the startup gets to what I assume is compiling/loading the C# plugins, it just hangs.
Full logs are below, although nothing really useful there.
Oxide Log:
"compiler_log"Code:12:50 PM [Info] Loading Oxide core v2.0.910... 12:50 PM [Info] Loading extensions... 12:50 PM [Info] Loaded extension CSharp v1.0.910 by Oxide Team 12:50 PM [Info] Loaded extension JavaScript v1.0.910 by Oxide Team 12:50 PM [Info] Loaded extension Lua v1.0.910 by Oxide Team 12:50 PM [Info] Loaded extension MySql v1.0.910 by Oxide Team 12:50 PM [Info] Loaded extension Python v1.0.910 by Oxide Team 12:50 PM [Info] Loaded extension Rust v1.0.910 by Oxide Team 12:50 PM [Info] Loaded extension Rust:IO for Oxide v2.3.0 by playrust.io / dcode 12:50 PM [Info] Loaded extension SQLite v1.0.910 by Oxide Team 12:50 PM [Info] Loaded extension Unity v1.0.910 by Oxide Team 12:50 PM [Info] Loading plugins... 12:50 PM [Info] Loaded plugin Rust Core v1.0.0 by Oxide Team 12:50 PM [Info] Loaded plugin Unity Core v1.0.0 by Oxide Team 12:50 PM [Info] Loaded plugin Auth Level v0.1.8 by Wulfspider 12:50 PM [Info] Loaded plugin AutoDoorCloser v1.3.2 by Bombardir 12:50 PM [Info] Loaded plugin Helptext v1.4.0 by #Domestos 12:50 PM [Info] Loaded plugin Increased Gathering Rate v1.1.2 by Mughisi 12:50 PM [Info] Resources from gathering is set to: x1. 12:50 PM [Info] Loaded plugin Teleportation System v1.4.15 by Mughisi 12:50 PM [Info] Loaded plugin Players list v1.4.0 by #Domestos 12:50 PM [Info] Loaded plugin Player location v1.2.0 by #Domestos 12:50 PM [Info] Loaded plugin Death Notes v2.4.11 by SkinN 12:50 PM [Info] Loaded plugin Notifier v2.7.5 by SkinN 12:50 PM [Info] [Notifier v2.7.5] :: Loading Plugin 12:50 PM [Info] [Notifier v2.7.5] :: -------------------------------------------------- 12:50 PM [Info] [Notifier v2.7.5] :: * Updating countries database 12:50 PM [Info] [Notifier v2.7.5] :: * Caching active players 12:50 PM [Info] [Notifier v2.7.5] :: * Starting Adverts loop, set to 5 minute/s 12:50 PM [Info] [Notifier v2.7.5] :: * Enabling commands: 12:50 PM [Info] [Notifier v2.7.5] :: - /rules, /regras, /regles (Server Rules) 12:50 PM [Info] [Notifier v2.7.5] :: - /map (Server Map) 12:50 PM [Info] [Notifier v2.7.5] :: - /players (Players List) 12:50 PM [Info] [Notifier v2.7.5] :: -------------------------------------------------- 12:50 PM [Info] Loaded plugin Rust:IO for Oxide v2.3.0 by playrust.io / dcode 12:50 PM [Info] Initializing plugin
There's nothing really all that useful there. Both processes are started (RustDedicated and CSharpCompiler), neither of which are doing anything.Code:[SERVER] Started as service [SERVER] Running as service [SERVER] Shutdown
Oxide is up to date (as well as the server). All plugins are up to date as well (I assume at least, pulled them after pulling the Oxide build)
I even built my own version of Oxide to test with, to no avail. (I'm a full-time C# dev)
Any ideas what's going on here? The lack of logging isn't helping much, and I can't find anything as far as "verbose" logging goes (but I'm probably just missing it somewhere)
Edit: The plugin I'm testing with is the "Clans" plugin http://oxidemod.org/plugins/rust-io-clans.842/
Fixed C# plugins not loading in mono dev env
Discussion in 'Rust Discussion' started by apocdev, May 19, 2015.
-
Wulf Community Admin
The existing logs would tell you if the C# plugins failed to compile or load. Where did you put the .cs plugins?
Also, what OS are you using? -
Have you tried with the Rust io extension removed?
-
Plugins are in serverident/oxide/plugins along with the Lua/Python plugins.
This box is on Win10 (my main dev box). I'll throw everything on a few other OS's and see if the problem persists. (Didn't even think about that tbh)
[DOUBLEPOST=1432054730][/DOUBLEPOST] -
Wulf Community Admin
-
Even tested with just running a tiny sample plugin that does nothing. -
Wulf Community Admin
-
Code:
Directory of G:\rustserv\steamapps\common\rust_dedicated05/19/2015 01:26 PM <DIR> . 05/19/2015 01:26 PM <DIR> .. 05/19/2015 01:14 PM <DIR> appcache 05/18/2015 09:26 PM <DIR> Bundles 05/19/2015 01:22 PM 12,458 CatalystRust.log 05/19/2015 01:23 PM 77 compiler_log_128464.txt 05/19/2015 01:14 PM <DIR> config 05/14/2015 06:51 PM 3,646,539 CSharpCompiler.exe 05/19/2015 01:26 PM 0 dirlog.txt 05/19/2015 01:14 PM <DIR> logs 05/14/2015 06:51 PM 968,704 monosgen-2.0.dll 05/14/2015 06:51 PM 970,912 msvcr120.dll 05/14/2015 06:51 PM 344 oxide.root.json 05/19/2015 01:14 PM 190 RunServ.bat 05/18/2015 09:27 PM 18,829,600 RustDedicated.exe 05/19/2015 12:50 PM <DIR> RustDedicated_Data 05/19/2015 01:14 PM <DIR> server 05/18/2015 09:27 PM 12,228,944 steamclient64.dll 05/18/2015 09:26 PM 211,368 steam_api64.dll 05/18/2015 09:26 PM 6 steam_appid.txt 05/18/2015 09:27 PM 332,200 tier0_s64.dll 05/18/2015 09:26 PM 317,352 vstdlib_s64.dll
Code:Directory of G:\rustserv\steamapps\common\rust_dedicated\RustDedicated_Data\Managed05/19/2015 01:27 PM <DIR> . 05/19/2015 01:27 PM <DIR> .. 05/18/2015 09:27 PM 10,752 Accessibility.dll 05/18/2015 09:26 PM 77,824 Assembly-CSharp-firstpass.dll 05/14/2015 06:51 PM 1,431,552 Assembly-CSharp.dll 05/18/2015 09:26 PM 35,840 Behave.Unity.Assets.dll 05/18/2015 09:26 PM 186,368 Behave.Unity.Runtime.dll 05/18/2015 09:27 PM 29,184 ConvexHull.dll 05/18/2015 09:26 PM 199,168 DestMath.dll 05/19/2015 01:27 PM 0 dirlog.txt 05/18/2015 09:26 PM 33,312 EasyAntiCheat.Client.dll 05/18/2015 09:26 PM 31,264 EasyAntiCheat.Server.dll 05/18/2015 09:26 PM 680,448 I18N.CJK.dll 05/14/2015 06:51 PM 35,840 I18N.dll 05/18/2015 09:27 PM 29,184 I18N.MidEast.dll 05/18/2015 09:27 PM 32,256 I18N.Other.dll 05/18/2015 09:26 PM 171,008 I18N.Rare.dll 05/14/2015 06:51 PM 69,120 I18N.West.dll 05/18/2015 09:26 PM 253,440 Ionic.Zip.Reduced.dll 05/14/2015 06:51 PM 1,806,336 IronPython.dll 05/14/2015 06:51 PM 727,552 IronPython.Modules.dll 05/14/2015 06:51 PM 239,616 Jint.dll 05/14/2015 06:51 PM 17,920 KeraLua.dll 05/18/2015 09:26 PM 25,088 LZ4n.dll 05/14/2015 06:51 PM 1,030,656 Microsoft.Dynamic.dll 05/14/2015 06:51 PM 383,488 Microsoft.Scripting.Core.dll 05/14/2015 06:51 PM 142,848 Microsoft.Scripting.dll 05/14/2015 06:51 PM 269,824 Mono.Cecil.dll 05/18/2015 09:26 PM 96,256 Mono.Data.Tds.dll 05/18/2015 09:26 PM 184,320 Mono.Posix.dll 05/18/2015 09:27 PM 294,400 Mono.Security.dll 05/18/2015 09:26 PM 172,032 Mono.WebBrowser.dll 05/18/2015 09:27 PM 2,590,208 mscorlib.dll 05/14/2015 06:51 PM 443,392 MySql.Data.dll 05/14/2015 06:51 PM 439,296 Newtonsoft.Json.dll 05/14/2015 06:51 PM 92,672 NLua.dll 05/14/2015 06:51 PM 80,384 Oxide.Core.dll 05/19/2015 01:22 PM 60,928 Oxide.Ext.CSharp.dll 05/19/2015 01:22 PM 134,656 Oxide.Ext.CSharp.pdb 05/14/2015 06:51 PM 20,480 Oxide.Ext.JavaScript.dll 05/14/2015 06:51 PM 25,600 Oxide.Ext.Lua.dll 05/14/2015 06:51 PM 13,312 Oxide.Ext.MySql.dll 05/14/2015 06:51 PM 23,040 Oxide.Ext.Python.dll 05/14/2015 06:51 PM 33,792 Oxide.Ext.Rust.dll 05/14/2015 06:51 PM 12,288 Oxide.Ext.SQLite.dll 05/14/2015 06:51 PM 8,704 Oxide.Ext.Unity.dll 05/18/2015 09:26 PM 75,264 protobuf-net.dll 05/18/2015 09:26 PM 43,520 RustBuild.dll 05/18/2015 09:26 PM 124,928 System.Configuration.dll 05/18/2015 09:27 PM 22,528 System.Configuration.Install.dll 05/18/2015 09:27 PM 299,008 System.Core.dll 05/14/2015 06:51 PM 856,064 System.Data.dll 05/14/2015 06:51 PM 286,720 System.Data.SQLite.dll 05/18/2015 09:27 PM 1,678,848 System.dll 05/18/2015 09:26 PM 448,512 System.Drawing.dll 05/18/2015 09:27 PM 46,592 System.EnterpriseServices.dll 05/14/2015 06:51 PM 155,648 System.Runtime.Serialization.dll 05/18/2015 09:27 PM 135,168 System.Security.dll 05/18/2015 09:26 PM 44,032 System.ServiceProcess.dll 05/14/2015 06:51 PM 27,648 System.Transactions.dll 05/18/2015 09:27 PM 3,053,568 System.Windows.Forms.dll 05/18/2015 09:26 PM 1,270,272 System.Xml.dll 05/14/2015 06:51 PM 106,496 System.Xml.Linq.dll 05/18/2015 09:27 PM 79,872 UnityEngine.Cloud.Analytics.dll 05/18/2015 09:26 PM 4,096 UnityEngine.Cloud.Analytics.Util.dll 05/18/2015 09:27 PM 685,568 UnityEngine.dll 05/18/2015 09:26 PM 174,592 UnityEngine.UI.dll 05/18/2015 09:28 PM <DIR> x64
[DOUBLEPOST=1432057236][/DOUBLEPOST]I've tracked it down to the communication to the CSharpCompiler.exe
Basically, after spawning the process, it never issues the "ready" message to let Oxide know that the compiler can be used. So it enqueues the compilation of the plugin, but never actually does anything with it because the compiler itself hasn't said that it is ready yet.
I'll keep digging to see what's up with it. -
Found the issue...
Seems like an obvious oversight, but not all messages sent through the standard in/out stream are going to be your "message" packets.
For instance:
Code:2:10 PM [Info] Reading 1299148399 bytes of data for ObjectStream.Data.CompilerMessage object
Here's the output from the actual stream output:
Code:Mono: Config attempting to parse: 'G:\rustserv\steamapps\common\lib\..\etc\mono\config'. Mono: Assembly Loader loaded assembly from bundle: 'basic.exe'. Mono: Assembly Loader probing location: 'G:\rustserv\steamapps\common\lib\mono\4.5\mscorlib.dll'. Mono: Assembly Loader loaded assembly from bundle: 'mscorlib.dll'. Mono: Image addref mscorlib[002ED778] -> mscorlib.dll[002E2B60]: 2 Mono: AOT module 'mscorlib.dll.dll' not found: The system cannot find the file specified. Mono: AOT module 'G:\rustserv\steamapps\common\lib/mono/aot-cache/x86/mscorlib.dll.dll' not found: The system cannot find the path specified. Mono: Config attempting to parse: 'mscorlib.dll.config'. Mono: Config attempting to parse: 'G:\rustserv\steamapps\common\lib\..\etc\mono\assemblies\mscorlib\mscorlib.config'. Mono: Config attempting to parse: 'C:\Users\ApocDev\.mono\assemblies\mscorlib\mscorlib.config'. Mono: Assembly mscorlib[002ED778] added to domain basic.exe, ref_count=1 Mono: Assembly Loader probing location: 'basic.exe'. Mono: Unloading image basic.exe [0036D7D0]. Mono: Assembly Loader loaded assembly from bundle: 'basic.exe'. Mono: Image addref basic[002E9708] -> basic.exe[00319730]: 4 Mono: Assembly basic[002E9708] added to domain basic.exe, ref_count=1 Mono: AOT module 'basic.exe.dll' not found: The system cannot find the file specified. Mono: AOT module 'G:\rustserv\steamapps\common\lib/mono/aot-cache/x86/basic.exe.dll' not found: The system cannot find the path specified. Mono: Config attempting to parse: 'basic.exe.config'. Mono: Config attempting to parse: 'G:\rustserv\steamapps\common\lib\..\etc\mono\assemblies\basic\basic.config'. Mono: Config attempting to parse: 'C:\Users\ApocDev\.mono\assemblies\basic\basic.config'. Mono: Assembly Loader probing location: 'basic.exe'. Mono: Unloading image basic.exe [0036D7D0]. Mono: Assembly Loader loaded assembly from bundle: 'basic.exe'. Mono: AOT module 'basic.exe.dll' not found: The system cannot find the file specified. Mono: AOT module 'G:\rustserv\steamapps\common\lib/mono/aot-cache/x86/basic.exe.dll' not found: The system cannot find the path specified. Mono: Assembly Ref addref basic[002E9708] -> mscorlib[002ED778]: 2 Mono: Config attempting to parse: 'basic.exe.config'. Mono: Assembly Loader probing location: 'G:\rustserv\steamapps\common\lib\mono\gac\System\4.0.0.0__b77a5c561934e089\System.dll'. Mono: Assembly Loader loaded assembly from bundle: 'System.dll'. Mono: Image addref System[0036DDC8] -> System.dll[002F2F68]: 2 Mono: Assembly System[0036DDC8] added to domain basic.exe, ref_count=1 Mono: AOT module 'System.dll.dll' not found: The system cannot find the file specified. Mono: AOT module 'G:\rustserv\steamapps\common\lib/mono/aot-cache/x86/System.dll.dll' not found: The system cannot find the path specified. Mono: Config attempting to parse: 'System.dll.config'. Mono: Config attempting to parse: 'G:\rustserv\steamapps\common\lib\..\etc\mono\assemblies\System\System.config'. Mono: Config attempting to parse: 'C:\Users\ApocDev\.mono\assemblies\System\System.config'. Mono: Assembly Ref addref basic[002E9708] -> System[0036DDC8]: 2 Mono: Assembly Ref addref System[0036DDC8] -> mscorlib[002ED778]: 3 Mono: Assembly Loader probing location: 'G:\rustserv\steamapps\common\lib\mono\gac\System.Core\4.0.0.0__b77a5c561934e089\System.Core.dll'. Mono: Assembly Loader loaded assembly from bundle: 'System.Core.dll'. Mono: Image addref System.Core[003B2B88] -> System.Core.dll[003DD7C0]: 2 Mono: Assembly System.Core[003B2B88] added to domain basic.exe, ref_count=1 Mono: AOT module 'System.Core.dll.dll' not found: The system cannot find the file specified. Mono: AOT module 'G:\rustserv\steamapps\common\lib/mono/aot-cache/x86/System.Core.dll.dll' not found: The system cannot find the path specified. Mono: Config attempting to parse: 'System.Core.dll.config'. Mono: Config attempting to parse: 'G:\rustserv\steamapps\common\lib\..\etc\mono\assemblies\System.Core\System.Core.config'. Mono: Config attempting to parse: 'C:\Users\ApocDev\.mono\assemblies\System.Core\System.Core. ÿÿÿÿ basic !ObjectStream.Data.CompilerMessage <Data>k__BackingField<ExtraData>k__BackingField<Id>k__BackingField<Type>k__BackingField %ObjectStream.Data.CompilerMessageType %ObjectStream.Data.CompilerMessageType value__ ÿÿÿÿ basic !ObjectStream.Data.CompilerMessage <Data>k__BackingField<ExtraData>k__BackingField<Id>k__BackingField<Type>k__BackingField %ObjectStream.Data.CompilerMessageType %ObjectStream.Data.CompilerMessageType value__ ÿÿÿÿ basic !ObjectStream.Data.CompilerMessage <Data>k__BackingField<ExtraData>k__BackingField<Id>k__BackingField<Type>k__BackingField %ObjectStream.Data.CompilerMessageType %ObjectStream.Data.CompilerMessageType value__ ÿÿÿÿ basic !ObjectStream.Data.CompilerMessage <Data>k__BackingField<ExtraData>k__BackingField<Id>k__BackingField<Type>k__BackingField %ObjectStream.Data.CompilerMessageType %ObjectStream.Data.CompilerMessageType value__ ÿÿÿÿ basic !ObjectStream.Data.CompilerMessage <Data>k__BackingField<ExtraData>k__BackingField<Id>k__BackingField<Type>k__BackingField %ObjectStream.Data.CompilerMessageType
-
Wulf Community Admin
Are you sure you are on the latest commit? There should be no compiler logs in the root directory.
-
Dropped the latest "snapshot" in, and the logs are now properly in the serverident/oxide/logs dir, but the same issue with the stream reading code exists. -
Wulf Community Admin
-
[DOUBLEPOST=1432061466][/DOUBLEPOST]I've fixed the issue at hand.
In Oxide.Ext.CSharp.PluginCompiler.CheckCompiler(), just after the "process.Start()" call, we need to read over any Mono-emitted messages.
Code:// The CSharpCompiler may spit out some extra lines of standard text if mono search paths // aren't being found correctly. This simply checks for that, and lets things read over the stream until // we start sending compiler ready messages. do { string line = process.StandardOutput.ReadLine(); if (!string.IsNullOrEmpty(line) && !line.StartsWith("Mono:")) break; } while (true);
I've put this up as an issue on the Oxide github: https://github.com/OxideMod/Oxide/issues/362
I'll let you guys handle a "proper" fix for the issue. But with the changes I noted, everything works fine again.Last edited by a moderator: May 19, 2015 -
Wulf Community Admin
This should be fixed in the latest snapshots and release. Thanks for the report!