Comment 1 for bug 1299846

Revision history for this message
Chow Loong Jin (hyperair) wrote : Re: [Bug 1299846] [NEW] Unhandled exception in UpnpService causes crashes

On Sun, Mar 30, 2014 at 05:50:49PM -0000, Philippe Moreau wrote:
> Public bug reported:
>
> With Upnp enabled, Banshee constantly crashes somewhere between 20-45
> minutes of activity. The log tells me it is always the same exception:
>
> [16 Debug 13:09:04.704] Found all items on the service, took 00:08:51.6255600
> [12 Debug 13:10:12.987] UPnPService.DeviceRemoved (urn:schemas-wifialliance-org:device:WFADevice:1) uuid:42587efc-c9aa-5111-590f-e0bfefa8b34e
> [33 Debug 13:19:37.107] UPnPService.DeviceAdded (urn:schemas-wifialliance-org:device:WFADevice:1) uuid:42587efc-c9aa-5111-590f-e0bfefa8b34e
> [1 Debug 13:28:02.212] Player state change: Paused -> Playing
> [12 Debug 13:30:12.394] UPnPService.DeviceRemoved (urn:schemas-upnp-org:device:InternetGatewayDevice:1) uuid:a83944f0-8930-3089-f044-39a839f0300000
> [12 Debug 13:30:12.983] UPnPService.DeviceRemoved (urn:schemas-upnp-org:device:WANDevice:1) uuid:a83944f0-8930-3089-f044-39a839f0300001
>
> Unhandled Exception: Mono.Upnp.UpnpDeserializationException: The type description version number could not be parsed: .
> at Mono.Upnp.TypeInfo.Parse (System.String typeDescription, System.String& domainName, System.String& type, System.Version& version) [0x00000] in <filename unknown>:0
> at Mono.Upnp.ServiceType.Parse (System.String serviceType) [0x00000] in <filename unknown>:0
> at Mono.Upnp.Client.ClientServiceEvent (Mono.Ssdp.ServiceArgs args, System.Action`1 deviceHandler, System.Action`1 serviceHandler) [0x00000] in <filename unknown>:0
> at Mono.Upnp.Client.ClientServiceRemoved (System.Object sender, Mono.Ssdp.ServiceArgs args) [0x00000] in <filename unknown>:0
> at Mono.Ssdp.Client.OnServiceRemoved (System.String usn) [0x00000] in <filename unknown>:0
> at Mono.Ssdp.Client.CacheServiceRemoved (System.String usn) [0x00000] in <filename unknown>:0
> at Mono.Ssdp.Internal.ServiceCache.Remove (System.String usn, Boolean fromTimeout) [0x00000] in <filename unknown>:0
> at Mono.Ssdp.Internal.ServiceCache.TimeoutHandler (System.Object state, System.TimeSpan& interval) [0x00000] in <filename unknown>:0
> at Mono.Ssdp.Internal.TimeoutDispatcher.TimerThread (System.Object state)
> [0x00000] in <filename unknown>:0

Sounds like you have a broken UPnP device (a router?) on your network, and this
is causing Banshee to crash here.

> Additionally, this exception is also thrown at intervals but does not
> cause Banshee to crash:
>
> [16 Warn 13:09:04.703] Caught an exception - Mono.Upnp.Dcp.MediaServer1.ContentDirectory1.DeserializationException: The DIDL-Lite element has no proper children. (in `Mono.Upnp.Dcp.MediaServer1')
> at Mono.Upnp.Dcp.MediaServer1.ContentDirectory1.RemoteContentDirectory+<Deserialize>c__Iterator6`1[Mono.Upnp.Dcp.MediaServer1.ContentDirectory1.Object].MoveNext () [0x00000] in <filename unknown>:0
> at Mono.Upnp.Dcp.MediaServer1.ContentDirectory1.RemoteContentDirectory.Deserialize[VideoItem] (System.String xml) [0x00000] in <filename unknown>:0
> at Mono.Upnp.Dcp.MediaServer1.ContentDirectory1.RemoteContentDirectory.Search[VideoItem] (Mono.Upnp.Dcp.MediaServer1.ContentDirectory1.Container container, System.Action`1 query, ResultsSettings settings) [0x00000] in <filename unknown>:0
> at Banshee.UPnPClient.UPnPServerSource.Parse (Mono.Upnp.Device device,
> Mono.Upnp.Dcp.MediaServer1.ContentDirectory1.ContentDirectoryController
> content_directory) [0x00000] in <filename unknown>:0

This looks like it might be caused by the same problematic UPnP device, but
Banshee is handling it properly by catching the exception and just skipping
over it instead of crashing.

--
Kind regards,
Loong Jin