CentOS6 install, solved sqlite3 and mono dependencies, blank UI with "task error" displayed

Hey all,

Working on a CentOS6 install, I’ve resolved the dependency on sqlite’s SQLITE_ENABLE_COLUMN_METADATA (compiled custom libraries from latest stable version), and I’m running mono 3.4.

NzbDrone starts up, and listens on port 8989, but only a blank page is displayed in the web UI.

I see the following output on CLI on startup


[Error] TaskExtensions: Task Error

System.ComponentModel.Win32Exception: ApplicationName='mono', CommandLine='--version', CurrentDirectory='', Native error= Cannot find the specified file
  at System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process) [0x00000] in <filename unknown>:0
  at System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process) [0x00000] in <filename unknown>:0
  at System.Diagnostics.Process.Start () [0x00000] in <filename unknown>:0
  at (wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()
  at NzbDrone.Common.Processes.ProcessProvider.Start (System.String path, System.String args, System.Action`1 onOutputDataReceived, System.Action`1 onErrorDataReceived) [0x00000] in <filename unknown>:0
  at NzbDrone.Common.Processes.ProcessProvider.StartAndCapture (System.String path, System.String args) [0x00000] in <filename unknown>:0
  at NzbDrone.Core.HealthCheck.Checks.MonoVersionCheck.Check () [0x00000] in <filename unknown>:0
  at NzbDrone.Core.HealthCheck.HealthCheckService.<PerformHealthCheck>b__0 (IProvideHealthCheck c) [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable+<CreateSelectIterator>c__Iterator10`2[NzbDrone.Core.HealthCheck.IProvideHealthCheck,NzbDrone.Core.HealthCheck.HealthCheck].MoveNext () [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[NzbDrone.Core.HealthCheck.HealthCheck].AddEnumerable (IEnumerable`1 enumerable) [0x00000] in <filename unknown>:0
  at System.Collections.Generic.List`1[NzbDrone.Core.HealthCheck.HealthCheck]..ctor (IEnumerable`1 collection) [0x00000] in <filename unknown>:0
  at System.Linq.Enumerable.ToList[HealthCheck] (IEnumerable`1 source) [0x00000] in <filename unknown>:0
  at NzbDrone.Core.HealthCheck.HealthCheckService.PerformHealthCheck (System.Func`2 predicate) [0x00000] in <filename unknown>:0
  at NzbDrone.Core.HealthCheck.HealthCheckService.HandleAsync (NzbDrone.Core.Lifecycle.ApplicationStartedEvent message) [0x00000] in <filename unknown>:0
  at NzbDrone.Core.Messaging.Events.EventAggregator+<>c__DisplayClass3`1[NzbDrone.Core.Lifecycle.ApplicationStartedEvent].<PublishEvent>b__0 () [0x00000] in <filename unknown>:0
  at System.Threading.Tasks.TaskActionInvoker+ActionInvoke.Invoke (System.Threading.Tasks.Task owner, System.Object state, System.Threading.Tasks.Task context) [0x00000] in <filename unknown>:0
  at System.Threading.Tasks.Task.InnerInvoke () [0x00000] in <filename unknown>:0
  at System.Threading.Tasks.Task.ThreadStart () [0x00000] in <filename unknown>:0

     Mono: GC_MINOR: (Nursery full) pause 23.46ms, total 23.96ms, bridge 0.00ms promoted 208K major 8624K los 4800K

I’ve ruled out permissions and selinux issues.

Can anybody explain what this means?

Thanks :slight_smile:
D

Drone is trying to verify the mono version and failing (it expects to be able to find mono on the PATH to do so). Blank page is likely unrelated and has historically been caused by the lack of an expected compression library and drone dies without logging anything itself, what the library is exactly is unknown, there have been others on different OSes that have seen it, you can verify if its the same/similar issue to that by checking the error code returned by hitting drone’s web page as well as seeing if you can bring up an API endpoint (you’ll need the API key from the config file).

500 error on / and a valid response on /api/system/status?apikey=X is a good indication of the issue described.

Thanks Markus,

I added mono to the path, which fixed the issue issue above.

As you say, the blank page seems unrelated, and I’ve replicated the symptoms you describe re a 500 error on /, but valid output on the API.

Is there any way to go about identifying the missing library?

I’m seeing a lot of errors (partial snippet included below) about missing libraries, but I’m not sure whether that’s expected result of mono debug:

Mono: AOT module '/mnt/data/bin/NzbDrone/Marr.Data.dll.so' not found: /mnt/data/bin/NzbDrone/Marr.Data.dll.so: cannot open shared object file: No such file or directory
Mono: AOT module '/mnt/data/bin/NzbDrone/FluentMigrator.dll.so' not found: /mnt/data/bin/NzbDrone/FluentMigrator.dll.so: cannot open shared object file: No such file or directory
Mono: AOT module '/mnt/data/bin/NzbDrone/FluentMigrator.Runner.dll.so' not found: /mnt/data/bin/NzbDrone/FluentMigrator.Runner.dll.so: cannot open shared object file: No such file or directory
Mono: AOT module '/mnt/data/bin/NzbDrone/FluentValidation.dll.so' not found: /mnt/data/bin/NzbDrone/FluentValidation.dll.so: cannot open shared object file: No such file or directory
Mono: AOT module '/mnt/data/bin/NzbDrone/RestSharp.dll.so' not found: /mnt/data/bin/NzbDrone/RestSharp.dll.so: cannot open shared object file: No such file or directory
Mono: AOT module '/mnt/data/bin/NzbDrone/Nancy.Authentication.Basic.dll.so' not found: /mnt/data/bin/NzbDrone/Nancy.Authentication.Basic.dll.so: cannot open shared object file: No such file or directory
Mono: AOT module '/mnt/data/bin/NzbDrone/Omu.ValueInjecter.dll.so' not found: /mnt/data/bin/NzbDrone/Omu.ValueInjecter.dll.so: cannot open shared object file: No such file or directory
Mono: AOT module '/mnt/data/bin/NzbDrone/NzbDrone.Mono.dll.so' not found: /mnt/data/bin/NzbDrone/NzbDrone.Mono.dll.so: cannot open shared object file: No such file or directory

D

I never found a way to figure out what library was missing, the only clue I had on it was deep in mono trace logs regarding it not being able to find a library when attempting to gzip the response to the user.

Not sure if mono should be doing that or not, I suspect not as we haven’t told mono to look for the alternate names.

Found it :slight_smile:

The missing library (which wasn’t really missing) was libMonoPosixHelper.so.

Once I added the path to libMonoPosixHelper.so to /etc/ld.conf.so.d/mono.conf, and ran “ldconfig”, my UI started working and I was able to use NzbDrone on CentOS6 :slight_smile:

Found notes here: https://github.com/cloudfoundry-community/.net-buildpack/issues/7

D