пустельга dnx System.EntryPointNotFoundException: uv_loop_size

Я пытаюсь запустить немодифицированное приложение Web Api, созданное yo aspnet.

Я получаю эту ошибку:

System.EntryPointNotFoundException: uv_loop_size
  at (wrapper managed-to-native) Microsoft.AspNet.Server.Kestrel.Networking.Libuv+NativeDarwinMonoMethods:uv_loop_size ()
  at Microsoft.AspNet.Server.Kestrel.Networking.Libuv.loop_size () <0x42615b8 + 0x00014> in <filename unknown>:0 
  at Microsoft.AspNet.Server.Kestrel.Networking.UvLoopHandle.Init (Microsoft.AspNet.Server.Kestrel.Networking.Libuv uv) <0x4261528 + 0x0002b> in <filename unknown>:0 
  at Microsoft.AspNet.Server.Kestrel.KestrelThread.ThreadStart (System.Object parameter) <0x4261160 + 0x0005f> in <filename unknown>:0 

Любые идеи?

вывод списка dnvm:

Active Version              Runtime Architecture OperatingSystem Alias
------ -------              ------- ------------ --------------- -----
       1.0.0-rc1-final      coreclr x64          darwin          
       1.0.0-rc1-final      mono                 linux/osx       
  *    1.0.0-rc2-16177      mono                 linux/osx       default

моно версия

Mono JIT compiler version 4.2.1 (explicit/6dd2d0d Tue Nov 10 18:01:18 EST 2015)

Обновить

я побежал

 export DYLD_FALLBACK_LIBRARY_PATH=/Users/Andy/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-rc1-final/runtimes/osx/native/

что в итоге дало мне другую ошибку при запуске dnx web:

System.DllNotFoundException: libc.dylib
  at (wrapper managed-to-native) System.IO.KeventWatcher:kqueue ()
  at System.IO.KeventWatcher.GetInstance (IFileWatcher& watcher) <0x105a29310 + 0x000f3> in <filename unknown>:0 
  at System.IO.FileSystemWatcher.InitWatcher () <0x105a28fa0 + 0x0012c> in <filename unknown>:0 
  at System.IO.FileSystemWatcher..ctor (System.String path, System.String filter) <0x105a28d00 + 0x00114> in <filename unknown>:0 
  at System.IO.FileSystemWatcher..ctor (System.String path) <0x105a28cc0 + 0x00023> in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.FileSystemWatcher:.ctor (string)
  at Microsoft.AspNet.FileProviders.PhysicalFilesWatcher..ctor (System.String root) <0x105a285b0 + 0x00154> in <filename unknown>:0 
  at Microsoft.AspNet.FileProviders.PhysicalFileProvider..ctor (System.String root) <0x105a282d0 + 0x000e4> in <filename unknown>:0 
  at Microsoft.AspNet.Hosting.HostingEnvironmentExtensions.Initialize (IHostingEnvironment hostingEnvironment, System.String applicationBasePath, IConfiguration config) <0x105a27f20 + 0x001ea> in <filename unknown>:0 
  at Microsoft.AspNet.Hosting.WebHostBuilder.Build () <0x105a1a860 + 0x000b8> in <filename unknown>:0 
  at Microsoft.AspNet.Hosting.WebApplication.Run (System.Type startupType, System.String[] args) <0x105560990 + 0x00216> in <filename unknown>:0 
  at Microsoft.AspNet.Hosting.WebApplication.Run (System.String[] args) <0x10555fef0 + 0x0001a> in <filename unknown>:0 
  at Microsoft.AspNet.Hosting.Program.Main (System.String[] args) <0x10555fec0 + 0x00014> in <filename unknown>:0 
  at Microsoft.AspNet.Server.Kestrel.Program.Main (System.String[] args) <0x10555fc90 + 0x000b5> in <filename unknown>:0 
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) <0x1050027a0 + 0x000b7> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () in <filename unknown>:line 0
   at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute (System.Reflection.Assembly assembly, System.String[] args, IServiceProvider serviceProvider) in <filename unknown>:line 0
   at Microsoft.Dnx.ApplicationHost.Program+<>c__DisplayClass3_0.<ExecuteMain>b__0 () in <filename unknown>:line 0
   at System.Threading.Tasks.Task`1[TResult].InnerInvoke () in <filename unknown>:line 0
   at System.Threading.Tasks.Task.Execute () in <filename unknown>:line 0

Unhandled Exception:
System.NullReferenceException: Object reference not set to an instance of an object
   at System.IO.FileSystemWatcher.Stop () in <filename unknown>:line 0
   at System.IO.FileSystemWatcher.Finalize () in <filename unknown>:line 0

person AndyD    schedule 21.11.2015    source источник
comment
Что касается вашего обновления: libc.dylib находится в /usr/lib, не уверен, что у вас есть существующий набор DYLD_FALLBACK_LIBRARY_PATH, 'export DYLD_FALLBACK_LIBRARY_PATH=/libuv/dir/locaation:/usr/lib:$DYLD_FALLBACK_LIBRARY_PATH', поэтому вы не сбрасываете существующую переменную окружения DYLD_FALLBACK_LIBRARY_PATH. ..   -  person SushiHangover    schedule 23.11.2015
comment
У меня точно такая же ситуация, как у Энди (включая обновленную проблему). Я попробовал ваше предложение @RobertN добавить /usr/lib в env var, и я вернулся к исходной ошибке uv_loop_size. Может быть стоит отметить, что у меня не было этой проблемы с бета8. У меня он есть только сейчас, когда я обновился до rc1-final.   -  person Kevin Craft    schedule 24.11.2015
comment
@KevinCraft, ознакомьтесь с веткой комментариев от Павла в ветке ответов ниже, поскольку загрузка собственной библиотеки изменилась в выпуске RC @ blog.3d-logic.com/2015/11/10/   -  person SushiHangover    schedule 24.11.2015


Ответы (3)


К вашему сведению: это не связано с mono

Он не находит родную библиотеку libuv через сборку System.Net.Libuv:

https://github.com/dotnet/corefxlab/blob/d76ebe8ab5ed058d3d6903939ab0e4ee4e19b773/src/System.Net.Libuv/src/System/Net/Libuv/Interop.cs

1-й) Запустите dnvm list -detailed, чтобы определить расположение используемых вами сред выполнения dnx, т. е.

Active Version              Runtime Architecture OperatingSystem Alias   Location
------ -------              ------- ------------ --------------- -----   --------
       1.0.0-beta8          mono                 linux/osx               ~/.dnx/runtimes
       1.0.0-rc1-final      mono                 linux/osx               ~/.dnx/runtimes
  *    1.0.0-rc2-16177      mono                 linux/osx       default ~/.dnx/runtimes

2nd) Мои dnx установки $HOME/.dnx/runtime (по умолчанию), поэтому я могу запустить find ~/.dnx/packages -name "libuv*"

/Users/sushi/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-beta8/runtimes/osx/native/libuv.dylib
/Users/sushi/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-beta8/runtimes/win10-arm/native/libuv.dll
/Users/sushi/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-beta8/runtimes/win7-x64/native/libuv.dll
/Users/sushi/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-beta8/runtimes/win7-x86/native/libuv.dll
/Users/sushi/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-rc1-final/runtimes/osx/native/libuv.dylib
/Users/sushi/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-rc1-final/runtimes/win10-arm/native/libuv.dll
/Users/sushi/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-rc1-final/runtimes/win7-x64/native/libuv.dll
/Users/sushi/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-rc1-final/runtimes/win7-x86/native/libuv.dll

Как только вы обнаружите, где ваш libuv.dylib находится в вашей системе, вы можете установить файл env. var DYLD_FALLBACK_LIBRARY_PATH в этот каталог:

export DYLD_FALLBACK_LIBRARY_PATH=/your/libuv/directory/location:$DYLD_FALLBACK_LIBRARY_PATH

Запустите команду dmvm еще раз:

dnvm exec 1.0.0-rc2-16177 dnx web

Примечание.

В OS-X libuv также доступен через brew @ стабильную версию 1.7.5, но я не пробовал, так как MS не версионирует свою сборку libuv.dylib, поэтому я не уверен, что это пользовательская версия или нет ...(?)

otool -L /Users/sushi/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-rc1-final/runtimes/osx/native/libuv.dylib
/Users/sushi/.dnx/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-rc1-final/runtimes/osx/native/libuv.dylib:
    /Users/asplab/Documents/buildAgent/temp/buildTmp/fs-poll-5b0daf.out (compatibility version 0.0.0, current version 0.0.0)
person SushiHangover    schedule 22.11.2015
comment
Спасибо, это отличная информация. Сегодня покопаюсь позже. - person AndyD; 22.11.2015
comment
вы уверены, что это не DYLD_FALLBACK_LIBRARY_PATH вместо DYLIB_FALLBACK_LIBRARY_PATH? - person AndyD; 22.11.2015
comment
@RobertN. Вы можете узнать, какая версия поставляется с Kestrel, здесь: github.com/ aspnet/libuv-build/tree/dev/submodules. В настоящее время это 1.7.3 с фиксацией, которая заставляет несколько циклов работать в Windows (вклад нашей команды в libuv). - person Pawel; 23.11.2015
comment
@AndyD, вы правы, мне нужно печатать от руки, а не вырезать / вставлять ;-) Я исправил ответ, спасибо - person SushiHangover; 23.11.2015
comment
@Pawel, здорово, спасибо за информацию, не подумал посмотреть на подмодули ... Мне все равно было бы приятно, если бы информация о версии была заглушена, поскольку текущая версия 0.0.0 говорит мне, что я должен надеяться, что у меня есть правильный ;-) - person SushiHangover; 23.11.2015
comment
Спасибо, Роберт, однако я получаю указанную выше ошибку только в том случае, если включаю один путь. Если я добавлю какие-либо другие, я получу исходную ошибку, которая, как я предполагаю, связана с тем, что путь не работает. Есть идеи, нормально ли устанавливать эти env vars, а если нет, то зачем мне это нужно? - person AndyD; 24.11.2015
comment
Обычно приложение определяет любые пользовательские пути dyld, обычно через файл env. vars внутри самого приложения..., но иногда и нет... Вы увидите, что DYLD_FALLBACK_LIBRARY_PATH, DYLD_LIBRARY_PATH часто устанавливается в мире Mono в OS-X (и как параллельный LD_LIBRARY_PATH в Linux), поскольку нет оболочки "приложения" вокруг большинства приложений cmd line. Многие сценарии Mono (mcs, mono и т. д.) установят эти переменные окружения для получения своих библиотек, но конечный пользователь должен добавить любые пользовательские для каждого из своих приложений. - person SushiHangover; 24.11.2015
comment
Если бы вы определяли несколько путей без использования colon, но какого-либо другого разделителя, я бы полностью ожидал, что исходная ошибка снова появится... - person SushiHangover; 24.11.2015
comment
Спасибо за информацию. Любая идея, почему это может не работать на моей машине без этих подсказок? Он у вас работает из коробки? - person AndyD; 24.11.2015
comment
@RobertN идея в том, что вам не нужно знать версию libuv, поскольку она является частью пакета Kestrel. Способ загрузки собственных библиотек ASP.NET 5 изменился в RC1, и я хотел бы знать, является ли это ошибкой или в чем проблема. Я написал сообщение в блоге об этой функции здесь: blog.3d-logic.com/2015/11/10/ - person Pawel; 24.11.2015
comment
@Pawel, спасибо за ссылку!!... теперь я понимаю, почему моя установка dnx «работает», но время от времени начала давать сбои/глюки, поскольку у меня ДЕЙСТВИТЕЛЬНО есть пользовательский lubuv.dylib, и он был (!) на моем пути (пользовательский node.js install) и причина того, что наши серверы OS-X теперь вообще не будут работать, но наши Linux-боксы были в порядке с тем же кодом. Если проверка $PATH теперь является стандартной для OS-X (а не для Linux), мы разветвим проект, чтобы разбить его в нашей среде. поскольку это то, чего мы бы хотели, чтобы никогда не происходило. - person SushiHangover; 24.11.2015
comment
@Pawel, я бы предпочел сбой загрузки dylb, чтобы понять, что это проблема с конфигурацией пустельги в project.lock.json, а затем выбрать неизвестную версию из пути ... это было бы страшно для нас в производственной среде. - person SushiHangover; 24.11.2015
comment
Я пробовал почти все в этой теме. Я все еще продолжаю получать ``` System.EntryPointNotFoundException: uv_loop_size``` Я установил Mono с Homebrew. Может кто-то указать мне верное направление? - person lacostenycoder; 24.12.2015

После многих переустановок Mono, Visual Code, Xamarin Studio, DNX, libuv, обновления Node и RoberN, которые дали мне четкие указания, я решил, что должен проверить свою переменную PATH env. Конечно же, как только я добавил /usr/lib/:/usr/local/lib в свой PATH, все заработало!

днк веб

Hosting environment: Production
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

Успех!

person AndyD    schedule 24.11.2015
comment
Интересно... `/usr/lib/:/usr/local/lib to my PATH`, если это сработало, то MS выполняет какое-то очень нестандартное зондирование пути dyld, поскольку вам никогда не придется включать каталоги lib в ваше выполнение. `путь... - person SushiHangover; 24.11.2015
comment
Опять же, если это работает, об этом действительно следует сообщать как об ошибке на платформах, отличных от Windows. - person SushiHangover; 24.11.2015
comment
Я не слишком хорошо знаком с тем, что должно быть на моем пути, а что нет, но да, это работает. Любая идея, как зарегистрировать доступ к файлу при запуске dnx web, чтобы увидеть, где он на самом деле выглядит аля procmon в Windows? - person AndyD; 24.11.2015

Если кто-то придет сюда в поисках другого решения...

Я пробовал все вышеперечисленное, включая многократные переустановки всего и обновления PATH без успеха, и, наконец, переключился на CoreCLR в соответствии с решением здесь и это наконец сработало!

dnvm install 1.0.0-rc1-update1 -r coreclr -arch x64

dnvm use 1.0.0-rc1-update1 -r coreclr -arch x64

dnvm list

затем перейдите в свой проект и попробуйте еще раз

dnx web
person ForOhFor    schedule 19.01.2016