Latest macgills/3601-depiction-thumbnails (most probably also happens on latest master).
Maybe not reproducible.
Steps:
APP_VERSION_CODE=561
APP_VERSION_NAME=2.12.3-debug-macgills/3601-depiction-thumbnails
ANDROID_VERSION=9
PHONE_MODEL=SM-G970F
STACK_TRACE=java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 502, found: 501 Pager id: fr.free.nrw.commons:id/mediaDetailsPager Pager class: class androidx.viewpager.widget.ViewPager Problematic adapter: class fr.free.nrw.commons.media.MediaDetailPagerFragment$MediaDetailAdapter
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1143)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:24967)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7134)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
at android.view.View.measure(View.java:24967)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7134)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:24967)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7134)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
at android.view.View.measure(View.java:24967)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1638)
at android.view.View.measure(View.java:24967)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7134)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:24967)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure(View.java:24967)
at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1119)
at android.view.View.measure(View.java:24967)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7134)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:24967)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7134)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
at android.view.View.measure(View.java:24967)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7134)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:24967)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7134)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
at android.view.View.measure(View.java:24967)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7134)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:992)
at android.view.View.measure(View.java:24967)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3266)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1993)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2295)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1853)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8476)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
at android.view.Choreographer.doCallbacks(Choreographer.java:761)
at android.view.Choreographer.doFrame(Choreographer.java:696)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7032)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
IS_SILENT=false
USER_EMAIL=
USER_CRASH_DATE=2020-04-24T16:47:10.709+09:00
REPORT_ID=4abadeef-c5f5-49a0-9164-ad54da062257
Hi @nicolas-raoul can I work on this issue? I will try to repro it.
@rhulkb27 Sure thanks! :-)
Hi @rhulkb27 Any updates on the issue?
I am not able to reproduce the error that you have stated @nicolas-raoul. I do however get the following error when I tap the image, get the detailed activity, and tap it again:
USER_COMMENT=
APP_VERSION_CODE=561
APP_VERSION_NAME=2.12.3-debug-master
ANDROID_VERSION=9
PHONE_MODEL=AOSP on IA Emulator
STACK_TRACE=java.lang.NullPointerException: uriString
at android.net.Uri$StringUri.<init>(Uri.java:490)
at android.net.Uri$StringUri.<init>(Uri.java:480)
at android.net.Uri.parse(Uri.java:452)
at fr.free.nrw.commons.media.MediaDetailFragment.launchZoomActivity(MediaDetailFragment.java:227)
at fr.free.nrw.commons.media.MediaDetailFragment_ViewBinding$1.doClick(MediaDetailFragment_ViewBinding.java:48)
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:18)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
IS_SILENT=false
USER_EMAIL=
USER_CRASH_DATE=2020-05-01T16:21:04.281-07:00
REPORT_ID=413a4f1e-0dc9-4156-a83e-7fad09c44330
@rhulkb27 Thanks for the info! Feel free to start working on something else.
If anyone gets this crash, please comment here, thanks :-)
@nicolas-raoul will do :)
Got the crash which @rhulkb27 mentioned. However, I could not reproduce the original crash
USER_COMMENT=
APP_VERSION_CODE=561
APP_VERSION_NAME=2.12.3-debug-master
ANDROID_VERSION=9
PHONE_MODEL=AOSP on IA Emulator
STACK_TRACE=java.lang.NullPointerException: uriString
at android.net.Uri$StringUri.<init>(Uri.java:490)
at android.net.Uri$StringUri.<init>(Uri.java:480)
at android.net.Uri.parse(Uri.java:452)
at fr.free.nrw.commons.media.MediaDetailFragment.launchZoomActivity(MediaDetailFragment.java:231)
at fr.free.nrw.commons.media.MediaDetailFragment_ViewBinding$1.doClick(MediaDetailFragment_ViewBinding.java:48)
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:18)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
IS_SILENT=false
USER_EMAIL=
USER_CRASH_DATE=2020-05-05T10:12:02.219+05:30
REPORT_ID=c543b132-25f8-4e69-ba28-5168cb41e410
Please do create a separate issue for the crash that you are getting. If one of you is interested, you can state in your opening post that you wish to work on that issue, too. Thanks! :)
Btw, I know Nicolas says he experienced that crash on depictions-thumbnail branch, but I experienced a crash with the same stack trace while doing prodRelease testing on 2.13-release branch, so I think it is probably unrelated to depicts.
My crash happened when coming back to media details view from another app.
USER_COMMENT=
APP_VERSION_CODE=561
APP_VERSION_NAME=2.12.3
ANDROID_VERSION=10
PHONE_MODEL=SM-G960F
STACK_TRACE=java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 480, found: 479 Pager id: fr.free.nrw.commons:id/mediaDetailsPager Pager class: class androidx.viewpager.widget.ViewPager Problematic adapter: class fr.free.nrw.commons.media.MediaDetailPagerFragment$MediaDetailAdapter
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1143)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:26415)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7845)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:26415)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7845)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:26415)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7845)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:26415)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1638)
at android.view.View.measure(View.java:26415)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7845)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:26415)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:735)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:481)
at android.view.View.measure(View.java:26415)
at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1119)
at android.view.View.measure(View.java:26415)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7845)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:26415)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7845)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:26415)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7845)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:26415)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7845)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:26415)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7845)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:1009)
at android.view.View.measure(View.java:26415)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3578)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2321)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2613)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2169)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8933)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:996)
at android.view.Choreographer.doCallbacks(Choreographer.java:794)
at android.view.Choreographer.doFrame(Choreographer.java:729)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:981)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7811)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)
IS_SILENT=false
USER_EMAIL=
USER_CRASH_DATE=2020-04-28T04:26:02.534+10:00
REPORT_ID=a5d355b4-0970-4cf2-bec0-9cd7444775f8
Hi @misaochan, I am able to produce the NPE but not the exception you and @nicolas-raoul have been seeing, is there a specific step I am missing?
Have you tried switching out of the app and then back to it?
Yes @misaochan. Just to confirm I have been testing on 2.13-release
Yes, I was on 2.13-release as well (the ACRA report just doesn't reflect the branch). I guess I would be OK with us just fixing #3730 (since it seems more easily reproducible), then we can do the beta release and see how prevalent this crash turns out to be.
It happened to me again, I sent an ACRA stacktrace.
The picture's upload had failed so I had retried it, not sure if that matters. I had selected both a depiction and a category.
Thanks @nicolas-raoul , do you know if there are any specific steps we can take to reproduce this? @ashishkumar468 could you look into this please?
I have not found reproduction steps unfortunately. Maybe it does not happen every time.
I just tried again with latest master and it did not happen. Not saying it is fixed, but at least it does not happen all the time.

This method must be called when ContributionListFragment receives updated data
@macgills Yes this probably should be the issue