aspnet / libuv-package

NuGet packages for libuv
Other
19 stars 14 forks source link

Opensuse 42.3 cannot load libuv dll #24

Closed JunTaoLuo closed 6 years ago

JunTaoLuo commented 6 years ago

OpenSuSe 42.3 only, dotnet run for mvc, web and webapi failed nicole@opensuse423:~/myweb> dotnet run crit: Microsoft.AspNetCore.Server.Kestrel[0] Unable to start Kestrel. System.AggregateException: One or more errors occurred. (Unable to load DLL 'libuv': The specified module could not be found. (Exception from HRESULT: 0x8007007E)) ---> System.DllNotFoundException: Unable to load DLL 'libuv': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.NativeMethods.uv_loop_size() at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvLoopHandle.Init(Libuv uv) at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.ThreadStart(Object parameter) --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelEngine.Start(Int32 count) at Microsoft.AspNetCore.Server.Kestrel.KestrelServer.Start[TContext](IHttpApplication`1 application) ---> (Inner Exception #0) System.DllNotFoundException: Unable to load DLL 'libuv': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.NativeMethods.uv_loop_size() at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvLoopHandle.Init(Libuv uv) at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.ThreadStart(Object parameter)<---

Unhandled Exception: System.AggregateException: One or more errors occurred. (Unable to load DLL 'libuv': The specified module could not be found. (Exception from HRESULT: 0x8007007E)) ---> System.DllNotFoundException: Unable to load DLL 'libuv': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.NativeMethods.uv_loop_size() at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvLoopHandle.Init(Libuv uv) at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.ThreadStart(Object parameter) --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelEngine.Start(Int32 count) at Microsoft.AspNetCore.Server.Kestrel.KestrelServer.Start[TContext](IHttpApplication`1 application) at Microsoft.AspNetCore.Hosting.Internal.WebHost.Start() at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host, CancellationToken token, String shutdownMessage) at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host) at myweb.Program.Main(String[] args) in /home/nicole/myweb/Program.cs:line 21

JunTaoLuo commented 6 years ago

From @natemcmaster's email:

I found the cause of the libuv issue. Kestrel 1.1.3 depends on Libuv 1.9.2. This version of libuv only supports rhel-x64 and Debian-x64, so on OpenSUSE, the libuv native dependency is not included in application. We did not add the generic “linux-x64” RID support until Libuv 1.10.0. Options: • Users manually add a package reference to Libuv 1.10.0 • We patch Kestrel in the MSRC to include and updated dependency version of Libuv

Eilon commented 6 years ago

@JunTaoLuo - is this issue something that we want to consider for an upcoming patch? If so, which patch train? (1.0, 1.1, 2.0, 2.1?)

JunTaoLuo commented 6 years ago

Yes 1.1 will need to support Opensuse 42.3 and we'll need to make this update the next time 1.1 patches. However, I believe the decision is that we'll make this change (update the libuv dependency from 1.9.2 to 1.10.0) the next time we are patching 1.1 for other reasons. In other words we don't plan on shipping a patch solely for this. Particularly because we don't know if this impacts that many customers and that an easy workaround, adding an explicit reference to libuv 1.10.0, exists.

Eilon commented 6 years ago

The recommended approach here is to use the Libuv 1.10 package, which should work on Opensuse 42.3.