Social Api causing crashes

Everything in my game is running smoothly except for leaderboard integration. For some reason, every time I use the Social.localUser.Authenticate() function, the app crashes (note: I’ve only tested on iOS, not android). It’s as if connecting to the service is causing some sort of error. Could this be a problem with the Unity engine itself, or have I missed something? Documentation for the Social Api has been hard to come by, but I think my code should be working. Right now, I’m pretty much just using the code sample given in the docs. Here it is for reference:

void Start () 
{
       Social.localUser.Authenticate (ProcessAuthentication);
}
void ProcessAuthentication (bool success) {
       if (success) {
           Debug.Log ("Authenticated, checking achievements");
        }
        else{
            Debug.Log ("Failed to authenticate");
        }
    }

As you can see, I’m not even attempting to check achievements, load scores, show leaderboards, or anything else. I’m just trying to authenticate the local user, but it crashes. Is there anything I can do? If not, is there some sort of plugin I can use? Thanks in advance!

This bug has been fixed in 5.2.2

Update here:
https://unity3d.com/unity/whats-new/unity-5.2.2

From release notes:

(728134) - iOS: Fixed Game Center authentication crash on iOS 9.0.

(729165) - iOS/IL2CPP: Prevent a crash that occurs when using Unity Ads and GameCenter together.

I’m on 5.4.1 but it still crashes on authenticate.

 try
        {
            PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
               .Build();

            PlayGamesPlatform.InitializeInstance(config);
            // recommended for debugging:
            PlayGamesPlatform.DebugLogEnabled = true;

            // Activate the Google Play Games platform
            PlayGamesPlatform.Activate();

            Social.localUser.Authenticate((bool success) =>
            {
                if (success)
                {
                    if (Social.localUser.userName != null)
                    {
                        userNameLogin.text = Social.localUser.userName;
                    }
                    else
                    {
                        userNameLogin.text = "null";
                    }
                    Debug.Log("You've successfully logged in");
                }
                else
                {
                    Debug.Log("Login failed for some reason");
                }
            });
        }
        catch (System.Exception)
        {
        }

Even the try/catch is ignored which is pretty crap to be honest.

Does anybody know where to start looking for the cause?

Richard