Tray icon crashes. This run was after closing the GUI tab to eliminate any interference from it:
$ ./Duplicati.GUI.TrayIcon
info: Duplicati.WebserverCore.ApplicationPartsLogger[0]
Found the following application parts: 'Duplicati.GUI.TrayIcon, Duplicati.WebserverCore' with the following controllers: 'RESTHandlerCoreController'
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:3001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: /usr/lib/duplicati
Newtonsoft.Json.JsonSerializationException: Error getting value from 'UpdateDownloadLink' on 'Duplicati.Server.Serializable.ServerStatus'.
---> System.NullReferenceException: Object reference not set to an instance of an object.
at Duplicati.Library.AutoUpdater.UpdateInfo.GetGenericUpdatePageUrl(String packageTypeId)
at Duplicati.Library.AutoUpdater.UpdateInfo.GetUpdateUrls(String packageTypeId)
at Duplicati.Server.Serializable.ServerStatus.get_UpdateDownloadLink()
at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)
--- End of inner exception stack trace ---
at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter jsonWriter, Object value)
at Duplicati.Server.Serialization.Serializer.SerializeJsonAsync(TextWriter tw, Object o, Boolean preventDispose)
at Duplicati.Server.WebServer.BodyWriter.<>c__DisplayClass8_0.<<WriteJsonObject>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Duplicati.Server.WebServer.BodyWriter.WriteJsonObject(Object o)
at Duplicati.Server.WebServer.BodyWriter.OutputOK(Object result)
at Duplicati.Server.WebServer.RESTMethods.RequestInfo.OutputOK(Object item)
at Duplicati.Server.WebServer.RESTMethods.ServerState.GET(String key, RequestInfo info)
at Duplicati.Server.WebServer.RESTHandler.DoProcess(RequestInfo info, String method, String module, String key)
Request error: System.Net.WebException: The remote server returned an error: (500) Error.
at Duplicati.Library.Utility.AsyncHttpRequest.AsyncWrapper.GetResponseOrStream()
at Duplicati.Library.Utility.AsyncHttpRequest.GetResponse()
at Duplicati.GUI.TrayIcon.HttpServerConnection.PerformRequestInternal[T](String method, String endpoint, Dictionary`2 queryparams)
at Duplicati.GUI.TrayIcon.HttpServerConnection.PerformRequest[T](String method, String urlfragment, Dictionary`2 queryparams)
at Duplicati.GUI.TrayIcon.HttpServerConnection.UpdateStatus()
at Duplicati.GUI.TrayIcon.HttpServerConnection..ctor(Uri server, String password, Boolean saltedpassword, PasswordSource passwordSource, Boolean disableTrayIconLogin, Dictionary`2 options)
at Duplicati.GUI.TrayIcon.Program.StartTray(String[] _args, Dictionary`2 options, HostedInstanceKeeper hosted, String password, Boolean saltedpassword)
Newtonsoft.Json.JsonSerializationException: Error getting value from 'UpdateDownloadLink' on 'Duplicati.Server.Serializable.ServerStatus'.
---> System.NullReferenceException: Object reference not set to an instance of an object.
at Duplicati.Library.AutoUpdater.UpdateInfo.GetGenericUpdatePageUrl(String packageTypeId)
at Duplicati.Library.AutoUpdater.UpdateInfo.GetUpdateUrls(String packageTypeId)
at Duplicati.Server.Serializable.ServerStatus.get_UpdateDownloadLink()
at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)
--- End of inner exception stack trace ---
at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter jsonWriter, Object value)
at Duplicati.Server.Serialization.Serializer.SerializeJsonAsync(TextWriter tw, Object o, Boolean preventDispose)
at Duplicati.Server.WebServer.BodyWriter.<>c__DisplayClass8_0.<<WriteJsonObject>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Duplicati.Server.WebServer.BodyWriter.WriteJsonObject(Object o)
at Duplicati.Server.WebServer.BodyWriter.OutputOK(Object result)
at Duplicati.Server.WebServer.RESTMethods.RequestInfo.OutputOK(Object item)
at Duplicati.Server.WebServer.RESTMethods.ServerState.GET(String key, RequestInfo info)
at Duplicati.Server.WebServer.RESTHandler.DoProcess(RequestInfo info, String method, String module, String key)
Request error: System.Net.WebException: The remote server returned an error: (500) Error.
at Duplicati.Library.Utility.AsyncHttpRequest.AsyncWrapper.GetResponseOrStream()
at Duplicati.Library.Utility.AsyncHttpRequest.GetResponse()
at Duplicati.GUI.TrayIcon.HttpServerConnection.PerformRequestInternal[T](String method, String endpoint, Dictionary`2 queryparams)
at Duplicati.GUI.TrayIcon.HttpServerConnection.PerformRequest[T](String method, String urlfragment, Dictionary`2 queryparams)
at Duplicati.GUI.TrayIcon.HttpServerConnection.UpdateStatus()
at Duplicati.GUI.TrayIcon.HttpServerConnection..ctor(Uri server, String password, Boolean saltedpassword, PasswordSource passwordSource, Boolean disableTrayIconLogin, Dictionary`2 options)
at Duplicati.GUI.TrayIcon.Program.StartTray(String[] _args, Dictionary`2 options, HostedInstanceKeeper hosted, String password, Boolean saltedpassword)
Newtonsoft.Json.JsonSerializationException: Error getting value from 'UpdateDownloadLink' on 'Duplicati.Server.Serializable.ServerStatus'.
---> System.NullReferenceException: Object reference not set to an instance of an object.
at Duplicati.Library.AutoUpdater.UpdateInfo.GetGenericUpdatePageUrl(String packageTypeId)
at Duplicati.Library.AutoUpdater.UpdateInfo.GetUpdateUrls(String packageTypeId)
at Duplicati.Server.Serializable.ServerStatus.get_UpdateDownloadLink()
at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)
--- End of inner exception stack trace ---
at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
at Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter jsonWriter, Object value)
at Duplicati.Server.Serialization.Serializer.SerializeJsonAsync(TextWriter tw, Object o, Boolean preventDispose)
at Duplicati.Server.WebServer.BodyWriter.<>c__DisplayClass8_0.<<WriteJsonObject>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Duplicati.Server.WebServer.BodyWriter.WriteJsonObject(Object o)
at Duplicati.Server.WebServer.BodyWriter.OutputOK(Object result)
at Duplicati.Server.WebServer.RESTMethods.RequestInfo.OutputOK(Object item)
at Duplicati.Server.WebServer.RESTMethods.ServerState.GET(String key, RequestInfo info)
at Duplicati.Server.WebServer.RESTHandler.DoProcess(RequestInfo info, String method, String module, String key)
Request error: System.Net.WebException: The remote server returned an error: (500) Error.
at Duplicati.Library.Utility.AsyncHttpRequest.AsyncWrapper.GetResponseOrStream()
at Duplicati.Library.Utility.AsyncHttpRequest.GetResponse()
at Duplicati.GUI.TrayIcon.HttpServerConnection.PerformRequestInternal[T](String method, String endpoint, Dictionary`2 queryparams)
at Duplicati.GUI.TrayIcon.HttpServerConnection.PerformRequest[T](String method, String urlfragment, Dictionary`2 queryparams)
at Duplicati.GUI.TrayIcon.HttpServerConnection.UpdateStatus()
at Duplicati.GUI.TrayIcon.HttpServerConnection..ctor(Uri server, String password, Boolean saltedpassword, PasswordSource passwordSource, Boolean disableTrayIconLogin, Dictionary`2 options)
at Duplicati.GUI.TrayIcon.Program.StartTray(String[] _args, Dictionary`2 options, HostedInstanceKeeper hosted, String password, Boolean saltedpassword)
info: Microsoft.Hosting.Lifetime[0]
Application is shutting down...
That last line is what Server said to my first Control-C, then it didn’t shut down. A second did it.