Facebook Android SDK, UiLifecycleHelper Error de StackOverflow

Obtener un error StackOverflow extraño de UiLifecycleHelper. Parece que está intentando cargar un objeto serializado, pero entonces el ObjectInputStream se ejecuta en un bucle recursivo, posiblemente debido a datos corruptos. Sólo ocurre en el método onCreate. Aquí está el seguimiento de la pila

Actualizar

El StackOverflowError también se produce en el estado onSaveInstance, pero los bucles en ObjectStream escriben. Sólo tenemos 4 registros de bloqueo mostrando esto, sin embargo, con 49 registros de bloqueo en la lectura en onCreate. Aquí está el código que se está utilizando:

El uiHelper se llama en todos sus métodos esperados, onCreate, onResume, onPause, onSaveInstanceState, onDestroy sin extravío de los documentos en absoluto. A continuación se muestra el resto del código de Facebook utilizado.

//onClick facebook button private void facebook() { Session session = Session.getActiveSession(); if (session != null && session.isOpened()) { Log.v("W", "Already have session"); publishog(session); } else { Session.openActiveSession(WWhisperActivity.this, true, callback); } } private void onSessionStateChange(Session session, SessionState state, Exception e) { if (e != null && !e.getLocalizedMessage().contains("user denied")) { BugSenseHandler.sendException(e); } if (state.equals(SessionState.OPENING)) { Log.v("W", "Session opening state"); } else if (state.equals(SessionState.CREATED) || state.equals(SessionState.CREATED_TOKEN_LOADED)) { Log.v("W", "Session created state"); } if (state.isOpened()) { Log.v("W", "Open session"); if (!session.getPermissions().contains("publish_actions")) { Log.v("W", "Getting publish permission"); Session.NewPermissionsRequest r = new Session.NewPermissionsRequest( this, Arrays.asList("publish_actions")); session.requestNewPublishPermissions(r); } else { Log.v("W", "Session opened, publishing og"); publishog(session); } } else if (state.equals(SessionState.CLOSED) || state.equals(SessionState.CLOSED_LOGIN_FAILED)) { Log.v("W", "Session not open"); session.closeAndClearTokenInformation(); if (state.equals(SessionState.CLOSED_LOGIN_FAILED)) { if (e == null || !e.getLocalizedMessage().contains("abort") && !e.getLocalizedMessage().contains("user denied")) Session.openActiveSession(this, true, callback); } } } private void publishog(Session session) { Log.v("W", "Publishing OG"); WObject wo = GraphObject.Factory.create(WObject.class); wo.setId(w.wid); wo.setUrl(shorturl); WOGShare ws = GraphObject.Factory.create(WOGShare.class); ws.setWhisper(shorturl); com.facebook.Request.executePostRequestAsync(session, "me/whisper_app:share", ws, new com.facebook.Request.Callback() { @Override public void onCompleted(Response response) { pd.dismiss(); if (response.getError() != null) { } else { } } }); } 

El registro de bloqueo:

 java.lang.StackOverflowError 1at java.lang.ThreadLocal.get(ThreadLocal.java:65) 2at java.io.ObjectStreamClass.getCache(ObjectStreamClass.java:1093) 3at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1066) 4at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1037) 5at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:248) 6at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1069) 7at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1037) 8at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:248) 9at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1069) 10at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1037) 11at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:248) 12at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1069) 13at java.io.ObjectInputStream.verifyAndInit(ObjectInputStream.java:2375) 14at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1662) 15at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:683) 16at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1803) 17at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787) 18at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003) 19at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960) 20at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137) 21at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455) 22at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369) 23at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266) 24at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855) 25at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787) 26at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003) 27at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960) 28at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137) 29at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455) 30at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369) 31at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266) 32at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855) 33at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787) 34at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003) 35at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960) 36at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137) 37at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455) 38at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369) 39at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266) 40at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855) 41at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787) 42at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003) 43at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960) 44at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137) 45at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455) 46at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369) 47at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266) 48at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855) 49at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787) 50at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003) 51at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960) 52at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137) 53at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455) 54at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369) 55at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266) 56at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855) 57at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787) 58at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003) 59at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960) 60at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137) 61at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455) 62at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369) 63at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266) 64at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855) 65at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787) 66at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003) 67at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960) 68at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137) 69at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455) 70at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369) 71at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266) 72at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855) 73at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787) 74at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003) 75at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960) 76at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137) 77at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455) 78at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369) 79at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266) 325at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455) 326at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1369) 327at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266) 328at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855) 329at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787) 330at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003) 331at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960) 332at com.facebook.Session.restoreSession(Session.java:701) 333at com.facebook.UiLifecycleHelper.onCreate(UiLifecycleHelper.java:70) 334at sh.whisper.WWhisperActivity.onCreate(WWhisperActivity.java:279) 335at android.app.Activity.performCreate(Activity.java:5160) 336at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 337at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) 338at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 339at android.app.ActivityThread.access$700(ActivityThread.java:143) 340at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241) 341at android.os.Handler.dispatchMessage(Handler.java:99) 342at android.os.Looper.loop(Looper.java:137) 343at android.app.ActivityThread.main(ActivityThread.java:4953) 344at java.lang.reflect.Method.invokeNative(Native Method) 345at java.lang.reflect.Method.invoke(Method.java:511) 346at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 347at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 348at dalvik.system.NativeStart.main(Native Method) 

Los parámetros y las variables locales se asignan en la pila (con tipos de referencia que el objeto vive en el montón y una variable hace referencia a ese objeto). La pila normalmente vive en el extremo superior de su espacio de direcciones y como se utiliza hasta que se dirige hacia la parte inferior del espacio de direcciones (es decir, hacia cero).

Gui es posible generar recursión indirecta. Por ejemplo, su aplicación puede manejar mensajes de pintura y al procesarlos puede llamar a una función que hace que el sistema envíe otro mensaje de pintura. Aquí no te has llamado explícitamente, pero el OS / VM lo ha hecho por ti.

He encontrado el mismo error before.Do una cosa apenas quita cualquier inicialización directamente debajo de la clase y la mueve dentro onCreate() o onResume() .

  • ¿Puedes explicar por qué suport v4 y v7 en android
  • Expansión de la API de gráficos de Facebook en la aplicación para Android
  • Android y Facebook SDK: descodificación de imágenes de / me / picture graph call
  • ¿Cómo obtener el token de acceso de usuario de facebook en android?
  • SDK de Facebook para Android duplicar la biblioteca de soporte en las dependencias
  • Error de carga de video de Android Facebook con la API de Android 4+
  • Uso del API de logro de Facebook en Android
  • Android - Facebook SDK login -> cerrar sesión -> inicio de sesión no funciona
  • La devolución de llamada de Facebook SDK 3.0 se dispara dos veces
  • Autenticación de Facebook en mi servidor con Android
  • Android FB API 3.0 - establecer permisos sólo una vez
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.