Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

NPE in FormEntryActivity.java line 2677 #4122

Closed
grzesiek2010 opened this issue Sep 25, 2020 · 9 comments · Fixed by #4123 or #4201
Closed

NPE in FormEntryActivity.java line 2677 #4122

grzesiek2010 opened this issue Sep 25, 2020 · 9 comments · Fixed by #4123 or #4201
Assignees

Comments

@grzesiek2010
Copy link
Member

Software and hardware versions

Collect v1.28.0

Problem description

https://console.firebase.google.com/u/0/project/api-project-322300403941/crashlytics/app/android:org.odk.collect.android/issues/d6df6553f58a3d3f828bdfe036cd855d?time=last-seven-days&versions=v1.28.0%20(3921)&sessionEventKey=5F6C5B9200330001597993BC55946D5D_1454417872317206815

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'org.javarosa.form.api.FormEntryPrompt org.odk.collect.android.widgets.QuestionWidget.getFormEntryPrompt()' on a null object reference
       at org.odk.collect.android.activities.FormEntryActivity$10.run(FormEntryActivity.java:2677)
       at android.app.Activity.runOnUiThread(Activity.java:5643)
       at org.odk.collect.android.activities.FormEntryActivity.widgetValueChanged(FormEntryActivity.java:2674)
       at org.odk.collect.android.activities.FormEntryActivity.updateSelectedItems(FormEntryActivity.java:2573)
       at org.odk.collect.android.fragments.dialogs.SelectMinimalDialog.closeDialogAndSaveAnswers(SelectMinimalDialog.java:100)
       at org.odk.collect.android.fragments.dialogs.SelectOneMinimalDialog.onItemClicked(SelectOneMinimalDialog.java:38)
       at org.odk.collect.android.formentry.questions.AudioVideoImageTextLabel.lambda$setTextView$0(AudioVideoImageTextLabel.java:118)
       at org.odk.collect.android.formentry.questions.-$$Lambda$AudioVideoImageTextLabel$MqCYJ2yJoQ6DnhH04sxqp-kc3wc.onClick(-.java)
       at android.view.View.performClick(View.java:5265)
       at android.widget.CompoundButton.performClick(CompoundButton.java:122)
       at android.view.View$PerformClick.run(View.java:21534)
       at android.os.Handler.handleCallback(Handler.java:815)
       at android.os.Handler.dispatchMessage(Handler.java:104)
       at android.os.Looper.loop(Looper.java:207)
       at android.app.ActivityThread.main(ActivityThread.java:5737)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
@lognaturel
Copy link
Member

I wonder whether this crash might be related:

Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'org.javarosa.form.api.FormEntryPrompt org.odk.collect.android.widgets.QuestionWidget.getFormEntryPrompt()' on a null object reference
org.odk.collect.android.activities.FormEntryActivity$10.run (FormEntryActivity.java:2681)
android.app.Activity.runOnUiThread (Activity.java:6974)
org.odk.collect.android.activities.FormEntryActivity.widgetValueChanged (FormEntryActivity.java:2678)
org.odk.collect.android.activities.FormEntryActivity.updateSelectedItems (FormEntryActivity.java:2577)
org.odk.collect.android.fragments.dialogs.SelectMinimalDialog.closeDialogAndSaveAnswers (SelectMinimalDialog.java:100)
org.odk.collect.android.fragments.dialogs.SelectOneMinimalDialog.onItemClicked (SelectOneMinimalDialog.java:38)
org.odk.collect.android.formentry.questions.AudioVideoImageTextLabel.lambda$setTextView$0 (AudioVideoImageTextLabel.java:118)
org.odk.collect.android.formentry.questions.-$$Lambda$AudioVideoImageTextLabel$MqCYJ2yJoQ6DnhH04sxqp-kc3wc.onClick (-.java:2)

It also seems to only happen in the context of minimal selects.

@grzesiek2010
Copy link
Member Author

This is exactly the same crash, stacktrace is not identical but it's the same.

@mmarciniak90
Copy link
Contributor

I tried to reproduce this crash. I created a few forms with different specifications. I focused on Select one with a minimal appearance.
I set it as a required, read-only, in field-list, in repeat group, added default value, added incorrect default value, and a lot of different configurations.
I loaded new form, saved form, and from savepoint.
I was not able to cause a crash and define repro steps.

@grzesiek2010
Copy link
Member Author

grzesiek2010 commented Oct 7, 2020

Hah this is not related only to SelectMinimal I knew that it couldn't be, in the same group of crashes we have this:
https://console.firebase.google.com/u/0/project/api-project-322300403941/crashlytics/app/android:org.odk.collect.android/issues/b70744064d70319471267a25d4281b48?time=last-seven-days&versions=v1.28.1%20(3923)&sessionEventKey=5F7C278602B300016B67A6546675775D_1458890331817504999

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'org.javarosa.form.api.FormEntryPrompt org.odk.collect.android.widgets.QuestionWidget.getFormEntryPrompt()' on a null object reference
       at org.odk.collect.android.activities.FormEntryActivity$10.run(FormEntryActivity.java:2681)
       at android.app.Activity.runOnUiThread(Activity.java:6972)
       at org.odk.collect.android.activities.FormEntryActivity.widgetValueChanged(FormEntryActivity.java:2678)
       at org.odk.collect.android.activities.FormEntryActivity.onRankingChanged(FormEntryActivity.java:2563)

we use the same approach (to pass answers) in SelectMinimal, RankingWidget and DateWidget so it's something broader looks as if SelectMinimal is way more popular that's why we had reports only from that feature.

@lognaturel
Copy link
Member

#4123 adds a log item for a null formcontroller. We don't seem to be getting that one. We always see Attempting to return data to a widget or set of widgets not looking for data before the crash.

@grzesiek2010
Copy link
Member Author

grzesiek2010 commented Oct 15, 2020

I tried yesterday one more time but wasn't able to reproduce the issue neither come up with new ideas so it's time to give up. However I was able to reproduce another issue that might be related: #4170

@getodk-bot
Copy link
Member

getodk-bot commented Oct 25, 2020

Hello @grzesiek2010, you have been unassigned from this issue because you have not updated this issue or any referenced pull requests for over 15 days.

You can reclaim this issue or claim any other issue by commenting @getodk-bot claim on that issue.

Thanks for your contributions, and hope to see you again soon!

@lognaturel
Copy link
Member

I thought it could be related to #4187 but wasn't able to reproduce anything. https://docs.google.com/spreadsheets/d/1RbbQMuaZ1bXC36eYPW6qHtHvHS8tnnEQL7fYFG-XRQM/edit#gid=0 has some of my attempts.

@lognaturel
Copy link
Member

It could also be related to #4182. At this point, I think we do the point release and see whether it's still happening or not.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment