Checklist before submitting a bug report
Java version
17
Android version
Androdi 16
Android SDK version
18.2.3
Installation platform & version
Maven
Package
Core & AppEvents
Goals
main (waiting):tid=1 systid=26194
at jdk.internal.misc.Unsafe.park(Native method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:371)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519)
at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3797)
at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3738)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1712)
at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:485)
at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:673)
at com.facebook.internal.AttributionIdentifiers$GoogleAdServiceConnection.getBinder(AttributionIdentifiers.kt:267)
at com.facebook.internal.AttributionIdentifiers$Companion.getAndroidIdViaService(AttributionIdentifiers.kt:155)
at com.facebook.internal.AttributionIdentifiers$Companion.getAndroidId(AttributionIdentifiers.kt:82)
at com.facebook.internal.AttributionIdentifiers$Companion.getAttributionIdentifiers(AttributionIdentifiers.kt:171)
at com.facebook.appevents.AppEventCollection.getSessionEventsState(AppEventCollection.kt:63)
at com.facebook.appevents.AppEventCollection.addPersistedEvents(AppEventCollection.kt:24)
at com.facebook.appevents.AppEventQueue.flushAndWait(AppEventQueue.kt:96)
at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:85)
at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:38)
at com.facebook.AccessToken$Companion.setCurrentAccessToken(AccessToken.kt:427)
at com.facebook.login.LoginManager.logOut(LoginManager.kt:359)
at com.facebook.login.widget.LoginButton$LoginClickListener.performLogout$lambda$2(LoginButton.kt:783)
at com.facebook.login.widget.LoginButton$LoginClickListener.$r8$lambda$oR4KVtJGGFlEEkP3nShlkqy6KZg(unavailable)
at com.facebook.login.widget.LoginButton$LoginClickListener$$ExternalSyntheticLambda0.onClick(D8$$SyntheticClass)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:212)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loopOnce(Looper.java:273)
at android.os.Looper.loop(Looper.java:363)
at android.app.ActivityThread.main(ActivityThread.java:10060)
at java.lang.reflect.Method.invoke(Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
main (waiting):tid=1 systid=22590
at jdk.internal.misc.Unsafe.park(Native method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:371)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(AbstractQueuedSynchronizer.java:519)
at java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3797)
at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3738)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1712)
at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:485)
at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:673)
at com.facebook.internal.AttributionIdentifiers$GoogleAdServiceConnection.getBinder(AttributionIdentifiers.kt:267)
at com.facebook.internal.AttributionIdentifiers$Companion.getAndroidIdViaService(AttributionIdentifiers.kt:155)
at com.facebook.internal.AttributionIdentifiers$Companion.getAndroidId(AttributionIdentifiers.kt:82)
at com.facebook.internal.AttributionIdentifiers$Companion.getAttributionIdentifiers(AttributionIdentifiers.kt:171)
at com.facebook.appevents.AppEventCollection.getSessionEventsState(AppEventCollection.kt:63)
at com.facebook.appevents.AppEventCollection.addPersistedEvents(AppEventCollection.kt:24)
at com.facebook.appevents.AppEventQueue.flushAndWait(AppEventQueue.kt:96)
at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:85)
at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:38)
at com.facebook.AccessToken$Companion.setCurrentAccessToken(AccessToken.kt:427)
at com.facebook.AccessToken.setCurrentAccessToken(unavailable:2)
at com.facebook.GraphRequest$Companion.runCallbacks$lambda$2(GraphRequest.kt:1034)
at com.facebook.GraphRequest$Companion.$r8$lambda$6lN3mypbS0vlDSB7sRa6ltT7WqA(unavailable)
at com.facebook.GraphRequest$Companion$$ExternalSyntheticLambda2.run(D8$$SyntheticClass)
at android.os.Handler.handleCallback(Handler.java:995)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loopOnce(Looper.java:273)
at android.os.Looper.loop(Looper.java:363)
at android.app.ActivityThread.main(ActivityThread.java:10060)
at java.lang.reflect.Method.invoke(Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
Expected results
successfully logout
Actual results
ANR
Steps to reproduce
repeat login and logout
login
click the com.facebook.login.widget.LoginButton
logout
call AccessToken.setCurrentAccessToken(null);
sometimes click the login, ANR appears when click the facebooklogin LoginButton
and logout also ANR, when AccessToken.setCurrentAccessToken(null) is called;
Code samples & details
//login ui
private View btn_fbLogin;
private LoginButton fb_login_button;
private CallbackManager callbackManager;
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
callbackManager = CallbackManager.Factory.create();
btn_fbLogin = view.findViewById(R.id.btn_fbLogin);
fb_login_button = view.findViewById(R.id.fb_login_button);
fb_login_button.setFragment(this);
fb_login_button.setPermissions("public_profile", "email");
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
});
fb_login_button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
}
}
});
Bundle bundle = new Bundle();
bundle.putString("fields", "id,name,email");
request.setParameters(bundle);
request.executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
});
btn_fbLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fb_login_button.performClick();
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (callbackManager != null) {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
//Logout function
private void logout(){
AccessToken fbAccessToken = AccessToken.getCurrentAccessToken();
if (fbAccessToken != null) {
new GraphRequest(fbAccessToken, "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {
AccessToken.setCurrentAccessToken(null);
}
}).executeAsync();
}
}
Checklist before submitting a bug report
Java version
17
Android version
Androdi 16
Android SDK version
18.2.3
Installation platform & version
Maven
Package
Core & AppEvents
Goals
Expected results
successfully logout
Actual results
ANR
Steps to reproduce
repeat login and logout
login
click the com.facebook.login.widget.LoginButton
logout
call AccessToken.setCurrentAccessToken(null);
sometimes click the login, ANR appears when click the facebooklogin LoginButton
and logout also ANR, when AccessToken.setCurrentAccessToken(null) is called;
Code samples & details