Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[InAppBrowser]Fatal Exception occured due to "not attached to window" on AndroidP #893

Open
hhhhub000 opened this issue Dec 27, 2018 · 2 comments · May be fixed by #1018
Open

[InAppBrowser]Fatal Exception occured due to "not attached to window" on AndroidP #893

hhhhub000 opened this issue Dec 27, 2018 · 2 comments · May be fixed by #1018

Comments

@hhhhub000
Copy link

Steps to reproduce:

  1. Open InAppBrowser on cordova app.
  2. Move to Settings.
  3. Setting > Display > Display size. Then change display size.
  4. Resume cordova app.
    Then, App is crashed by fatal exception.
Process: com.myapp, PID: 18768
java.lang.IllegalArgumentException: View=DecorView@fb121f3[MainActivity] not attached to window manager
    at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:497)
    at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:406)
    at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:138)
    at android.app.Dialog.dismissDialog(Dialog.java:375)
    at android.app.Dialog.dismiss(Dialog.java:358)
    at org.apache.cordova.inappbrowser.InAppBrowser$5$1.onPageFinished(Unknown Source:18)
    at xf.c(SourceFile:251)
    at afs.handleMessage(SourceFile:72)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6813)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:522)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:889)

I think MainActivity have been destroyed and dialog is detacched when Display size is changed.
But InAppBrowser still have old dialog and try to dismiss() when app is resumed.
my-app\plugins\cordova-plugin-inappbrowser\src\android\InAppBrowser.java

    public void closeDialog() {
        this.cordova.getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                final WebView childView = inAppWebView;
                // The JS protects against multiple calls, so this should happen only when
                // closeDialog() is called by other native code.
                if (childView == null) {
                    return;
                }

                childView.setWebViewClient(new WebViewClient() {
                    // NB: wait for about:blank before dismissing
                    public void onPageFinished(WebView view, String url) {
                        if (dialog != null) {
                            dialog.dismiss();       //!!!dialog is not attached to window
                            dialog = null;
                        }
                    }
                });

This issue is not reproduced on Android O.
(onPageFinished is not called on Android O, So dialog.dismiss() is not called.)

@sebarck
Copy link

sebarck commented May 31, 2019

In a cordova app that we have, we reproduce the same issue of @hhhhub000 .
We saw the following stack from crashlytics:

Fatal Exception: java.lang.IllegalArgumentException: View=DecorView@e2994a2[MainActivity] not attached to window manager
       at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:485)
       at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:394)
       at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:124)
       at android.app.Dialog.dismissDialog(Dialog.java:375)
       at android.app.Dialog.dismiss(Dialog.java:358)
       at org.apache.cordova.inappbrowser.InAppBrowser$5$1.onPageFinished(InAppBrowser.java:462)
       at vl.d(PG:307)
       at aHZ.handleMessage(PG:72)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:6923)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870)

Thank you!

@frontenddeveloping
Copy link

Same issue:

12-30 09:32:47.487: E/AndroidRuntime(15993): java.lang.IllegalArgumentException: View=DecorView@4937e39[MainActivity] not attached to window manager
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:485)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:394)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:124)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at android.app.Dialog.dismissDialog(Dialog.java:375)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at android.app.Dialog.dismiss(Dialog.java:358)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at org.apache.cordova.inappbrowser.InAppBrowser$5$1.onPageFinished(InAppBrowser.java:434)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at sV.d(PG:311)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at aHF.handleMessage(PG:73)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at android.os.Handler.dispatchMessage(Handler.java:106)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at android.os.Looper.loop(Looper.java:193)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at android.app.ActivityThread.main(ActivityThread.java:6718)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at java.lang.reflect.Method.invoke(Native Method)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
12-30 09:32:47.487: E/AndroidRuntime(15993): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
12-30 09:32:47.487: E/AndroidJUnitRunner(15993): An unhandled exception was thrown by the app.
12-30 09:32:47.488: I/AndroidJUnitRunner(15993): Bringing down the entire Instrumentation process.
12-30 09:32:47.488: E/MonitoringInstr(15993): Exception encountered by: Thread[main,5,main]. Dumping thread state to outputs and pining for the fjords.
12-30 09:32:47.488: E/MonitoringInstr(15993): java.lang.IllegalArgumentException: View=DecorView@4937e39[MainActivity] not attached to window manager
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:485)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:394)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:124)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at android.app.Dialog.dismissDialog(Dialog.java:375)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at android.app.Dialog.dismiss(Dialog.java:358)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at org.apache.cordova.inappbrowser.InAppBrowser$5$1.onPageFinished(InAppBrowser.java:434)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at sV.d(PG:311)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at aHF.handleMessage(PG:73)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at android.os.Handler.dispatchMessage(Handler.java:106)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at android.os.Looper.loop(Looper.java:193)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at android.app.ActivityThread.main(ActivityThread.java:6718)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at java.lang.reflect.Method.invoke(Native Method)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
12-30 09:32:47.488: E/MonitoringInstr(15993): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
12-30 09:32:47.491: E/libc(646): Access denied finding property "vendor.debug.egl.swapinterval"
12-30 09:32:47.492: E/libc(646): Access denied finding property "vendor.debug.egl.swapinterval"
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[Espresso Key Event #0,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Object.wait(Native Method)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Thread.parkFor$(Thread.java:2137)
12-30 09:32:47.493: E/THREAD_STATE(15993):     sun.misc.Unsafe.park(Unsafe.java:358)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Thread.run(Thread.java:764)
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[HeapTaskDaemon,5,system]
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[Binder:15993_3,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[JavaBridge,7,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.MessageQueue.nativePollOnce(Native Method)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.MessageQueue.next(MessageQueue.java:326)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.Looper.loop(Looper.java:160)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.HandlerThread.run(HandlerThread.java:65)
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[UiAutomation,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.MessageQueue.nativePollOnce(Native Method)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.MessageQueue.next(MessageQueue.java:326)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.Looper.loop(Looper.java:160)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.HandlerThread.run(HandlerThread.java:65)
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[ThreadPoolForeg,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[queued-work-looper,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.MessageQueue.nativePollOnce(Native Method)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.MessageQueue.next(MessageQueue.java:326)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.Looper.loop(Looper.java:160)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.HandlerThread.run(HandlerThread.java:65)
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[Binder:15993_1,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[AudioThread,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[CrAsyncTask apache/cordova-android#1,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Object.wait(Native Method)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Thread.parkFor$(Thread.java:2137)
12-30 09:32:47.493: E/THREAD_STATE(15993):     sun.misc.Unsafe.park(Unsafe.java:358)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:402)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
12-30 09:32:47.493: E/THREAD_STATE(15993):     aNc.run(Unknown Source:3)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Thread.run(Thread.java:764)
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[GoogleApiHandler,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.MessageQueue.nativePollOnce(Native Method)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.MessageQueue.next(MessageQueue.java:326)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.Looper.loop(Looper.java:160)
12-30 09:32:47.493: E/THREAD_STATE(15993):     android.os.HandlerThread.run(HandlerThread.java:65)
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[pool-2-thread-2,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Object.wait(Native Method)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Thread.parkFor$(Thread.java:2137)
12-30 09:32:47.493: E/THREAD_STATE(15993):     sun.misc.Unsafe.park(Unsafe.java:358)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Thread.run(Thread.java:764)
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[Profile Saver,5,system]
12-30 09:32:47.493: E/THREAD_STATE(15993):   Thread[Espresso Remote #0,5,main]
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Object.wait(Native Method)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.lang.Thread.parkFor$(Thread.java:2137)
12-30 09:32:47.493: E/THREAD_STATE(15993):     sun.misc.Unsafe.park(Unsafe.java:358)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
12-30 09:32:47.493: E/THREAD_STATE(15993):     java.util.concurrent.ThreadPoolExecutor.runWorke

@erisu erisu transferred this issue from apache/cordova-android Jul 29, 2021
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
3 participants