gwtproject / gwt

GWT Open Source Project
http://www.gwtproject.org
1.52k stars 376 forks source link

NullPointerException in PopupPanel$ResizeAnimation.onInstantaneousRun #2762

Closed dankurka closed 9 years ago

dankurka commented 9 years ago

Originally reported on Google Code with ID 2756

Found in GWT Release:

1.5 RC1

Detailed description:

Not sure exactly how this happened, but I saw this exception in hosted mode
a few times:

java.lang.NullPointerException: null
    at
com.google.gwt.user.client.ui.PopupPanel$ResizeAnimation.onInstantaneousRunjava.lang.NullPointerException:
null
    at
com.google.gwt.user.client.ui.PopupPanel$ResizeAnimation.onInstantaneousRun(PopupPanel.java:199)
    at
com.google.gwt.user.client.ui.PopupPanel$ResizeAnimation.setOpen(PopupPanel.java:111)
    at com.google.gwt.user.client.ui.PopupPanel.show(PopupPanel.java:641)
    at
com.typeracer.commons.client.widgets.PatchedPopupPanel.show(PatchedPopupPanel.java:28)
    at
com.typeracer.main.client.view.dialogs.PopupWithFocusableTextBox.show(PopupWithFocusableTextBox.java:50)
    at
com.google.gwt.user.client.ui.PopupPanel.setPopupPositionAndShow(PopupPanel.java:563)
    at
com.typeracer.main.client.view.dialogs.TyperacerPopup.showSouthOf(TyperacerPopup.java:29)
    at
com.typeracer.guest.client.view.MainUserInfoEditorImpl.showLoginPopup(MainUserInfoEditorImpl.java:75)
    at
com.typeracer.guest.client.view.MainUserInfoEditorImpl.access$1(MainUserInfoEditorImpl.java:73)
    at
com.typeracer.guest.client.view.MainUserInfoEditorImpl$4.execute(MainUserInfoEditorImpl.java:66)
(PopupPanel.java:199)
    at
com.google.gwt.user.client.ui.PopupPanel$ResizeAnimation.setOpen(PopupPanel.java:111)
    at com.google.gwt.user.client.ui.PopupPanel.show(PopupPanel.java:641)

Reported by alexander.epshteyn on 2008-08-15 17:08:45

dankurka commented 9 years ago
Oops, I copied that stack trace incorrectly - the last element is actually not there.
 Here's what it really looks like:

java.lang.NullPointerException: null
    at
com.google.gwt.user.client.ui.PopupPanel$ResizeAnimation.onInstantaneousRun(PopupPanel.java:199)
    at com.google.gwt.user.client.ui.PopupPanel$ResizeAnimation.setOpen(PopupPanel.java:111)
    at com.google.gwt.user.client.ui.PopupPanel.show(PopupPanel.java:641)
    at
com.typeracer.commons.client.widgets.PatchedPopupPanel.show(PatchedPopupPanel.java:28)
    at
com.typeracer.main.client.view.dialogs.PopupWithFocusableTextBox.show(PopupWithFocusableTextBox.java:50)
    at com.google.gwt.user.client.ui.PopupPanel.setPopupPositionAndShow(PopupPanel.java:563)
    at
com.typeracer.main.client.view.dialogs.TyperacerPopup.showSouthOf(TyperacerPopup.java:29)
    at
com.typeracer.guest.client.view.MainUserInfoEditorImpl.showLoginPopup(MainUserInfoEditorImpl.java:75)
    at
com.typeracer.guest.client.view.MainUserInfoEditorImpl.access$1(MainUserInfoEditorImpl.java:73)
    at
com.typeracer.guest.client.view.MainUserInfoEditorImpl$4.execute(MainUserInfoEditorImpl.java:66)

Reported by alexander.epshteyn on 2008-08-15 17:11:23

dankurka commented 9 years ago
@jlabanca: Can you try and confirm this? I want to make sure there's not an NPE bomb
lying around in the 1.5 animation code.

Reported by jgw+personal@google.com on 2008-08-18 16:10:48

dankurka commented 9 years ago
This sounds very much like an issue 2469, where you could get an NPE if on 
PopupPanel closed or opened another in its onAttach/onDetach method.  In the latest

RC2, the ResizeAnimation in PopupPanel is an instance variable (instead of a static

variable), so each PopupPanel has its own animation.

The only way line 199 can throw an NPE is if curPanel is null (which can happen as

described above).  In the latest version, curPanel is never set back to null, so I

expect this issue has been fixed.

Reported by jlabanca+personal@google.com on 2008-08-18 21:06:47

dankurka commented 9 years ago

Reported by rjrjr@google.com on 2011-02-09 00:16:55