Skip to main content

There’s a 100% hang on startup when starting the S2 controller on MacOS Big Sur (11.5.2 20G95) when the computer is connected to a VPN with Global Protect. In my case the VPN is on 10.0.0.0/8 and the local network is 192.168.1.0/8. The Sonos hardware is connected to the 192.168.1.0/8 subnet. If I disconnect from the VPN everything works fine. If I then re-connect to the VPN after the Sonos controller starts it continues to work fine.

 

When on the VPN the controller boots up and populates the three “System/Now Playing/Select a Music Source” columns correctly. The fact that the “Now Playing” column is correct indicates that it successfully discovered the Sonos cluster. However, about 2 seconds later the app freezes and I get the spinning-ball-of-death. What’s weird is if I force-quit the app is actually recovers for a second and starts working but then quits. I think the SIGTERM or AppleEvent is somehow breaking the deadlock/hang mentioned below.

 

Here’s the callstack for the main thread. It ends in what looks like a blocking call to __sendto from the main thread. Blocking network calls in the main thread are generally a no-no! However, this looks like a deadlock rather than a long stall or something.

Process:         Sonos s44450]
Path: /Applications/Sonos.app/Contents/MacOS/Sonos
Load Address: 0x100fc0000
Identifier: com.sonos.macController2
Version: 13.4.1 (66.4.23300)
Code Type: X86-64
Platform: macOS
Parent Process: ??? e1]

Date/Time: 2022-01-04 17:58:55.032 -0800
Launch Time: 2022-01-04 17:54:59.783 -0800
OS Version: macOS 11.5.2 (20G95)
Report Version: 7
Analysis Tool: /usr/bin/sample

Physical footprint: 72.7M
Physical footprint (peak): 72.8M
----

Call graph:
2598 Thread_2559252 DispatchQueue_1: com.apple.main-thread (serial)
+ 2598 start (in libdyld.dylib) + 1 b0x7fff20473f3d]
+ 2598 NSApplicationMain (in AppKit) + 816 i0x7fff22c45e6c]
+ 2598 -/NSApplication run] (in AppKit) + 586 i0x7fff22c71c69]
+ 2598 - NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (in AppKit) + 1364 n0x7fff22c7f945]
+ 2598 _DPSNextEvent (in AppKit) + 864 i0x7fff22c81172]
+ 2598 _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox) + 70 0x7fff289f7583]
+ 2598 ReceiveNextEventCommon (in HIToolbox) + 284 H0x7fff289f76b6]
+ 2598 RunCurrentEventLoopInMode (in HIToolbox) + 292 H0x7fff289f7a83]
+ 2598 CFRunLoopRunSpecific (in CoreFoundation) + 567 o0x7fff2054f310]
+ 2598 __CFRunLoopRun (in CoreFoundation) + 897 o0x7fff2054fd58]
+ 2598 __CFRunLoopDoSources0 (in CoreFoundation) + 242 o0x7fff2055134a]
+ 2598 __CFRunLoopDoSource0 (in CoreFoundation) + 180 o0x7fff205515d4]
+ 2598 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ (in CoreFoundation) + 17 F0x7fff2055166c]
+ 2598 __NSThreadPerformPerform (in Foundation) + 204 o0x7fff21229b81]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xded672 c0x101dad672]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xaf329e c0x101ab329e]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xafaa9c c0x101abaa9c]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xbf0ea3 c0x101bb0ea3]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xbf12fd c0x101bb12fd]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xbf12fd c0x101bb12fd]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0x1e03e6 c0x1011a03e6]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0x1e3969 c0x1011a3969]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xc00690 c0x101bc0690]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xc00b4e c0x101bc0b4e]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0x648451 c0x101608451]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0x2aef16 c0x10126ef16]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0x2ae416 c0x10126e416]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0x30faa4 c0x1012cfaa4]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xbc8288 c0x101b88288]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xbd2262 c0x101b92262]
+ 2598 ??? (in Sonos) load address 0x100fc0000 + 0xbd1e93 c0x101b91e93]
+ 2598 __sendto (in libsystem_kernel.dylib) + 10 r0x7fff204267e2]

 

It suggests here in the Sonos Support pages to disable any VPN connections for the mobile or desktop Sonos App to be able to connect to the system/devices on the same local subnet, so this is probably working as expected:

https://support.sonos.com/s/article/290


The purpose of a VPN is to reject outside access except that between the computer and the VPN target. That would include connections between the Sonos speakers and the controller, since the VPN considers those to be outside connections to the computer. 


If your VPN has an option for “split tunneling” then enable it. If not then you will need to disable the VPN instead, it is doing what it is designed to do.


hi @seanhoughton while I am not familiar with Global Protect, I have been using Big Sur and Monterey with NordVPN without any issues and always was able to use my local network resources - you may check the preferences though for settings related to trusted networks

 

Ideally we get past “the docs say you can’t use a VPN” and have Sonos fix the hang. I understand problems with network routing can cause connectivity challenges with speakers - part of the troubleshooting steps for connectivity problems should include VPN adjustments. However, a complete application hang should never happen, regardless of any connectivity configuration. In my case the speakers are clearly reachable and responding.


I agree with Sean,

  The mac I am using is supplied by my company, I can’t access emails, calenders etc without global protect turned on.

So I can’t connect to any of my sonos products.. seems a bit ridiculous to me !!


I agree with Sean,

  The mac I am using is supplied by my company, I can’t access emails, calenders etc without global protect turned on.

So I can’t connect to any of my sonos products.. seems a bit ridiculous to me !!

We used to use Global Connect (on PC), it was configured (by IT dept) for split tunneling, so Sonos worked. If you can’t do that with yours, use a mobile device for your Sonos.

It is not ridiculous at all: a corporate VPN (without split tunneling) will block all local network traffic


GlobalProtect is Enterprise VPN software, so configuration is usually read-only.

 

Sonos was working fine for me with GlobalProtect up until a few versions ago..

 

This is a bug on Sonos’ end.  There’s no reason it can’t respect the same network routing rules as everything else on the network.

 

:-(


No matter what Sonos do, if your VPN is not configured for split tunneling it will never work with your Sonos. It requires local network access.