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

v0.11.3 crash because of plurals #963

Closed
r2308145 opened this issue Jan 5, 2018 · 15 comments
Closed

v0.11.3 crash because of plurals #963

r2308145 opened this issue Jan 5, 2018 · 15 comments
Assignees
Labels
ASAP Issue needs to be fixed as soon as possible bug Issue is related to a bug

Comments

@r2308145
Copy link
Contributor

r2308145 commented Jan 5, 2018

Have to return to 11.2, because 11.3 crashes on android 4.0.4 ICS immidiately after opening the app, on android 4.4.2 KitKat once you try to search something or click on channel details. Haven't tried it on 7.0 nougat yet rather.. Wonder whether it can be the cz translation related. I can provide the error screens if needed

@theScrabi
Copy link
Member

Yes please provide the error screen.

@kherchel
Copy link

kherchel commented Jan 6, 2018

I have the same problem on Android 5.1 (version 0.11.2 works fine). Here's the error log:
(sorry for weird indentation, that's how the error got exported)

   "user_action": "ui error",
   "request": "App crash, UI failure",
   "content_language": "en",
   "service": "none",
   "package": "org.schabi.newpipe",
   "version": "0.11.3",
   "os": "Linux Android 5.1.1 - 22",
   "time": "2018-01-06 01:42",
   "ip_range": "xx.10.0.0",
   "exceptions": [
      "android.content.res.Resources$NotFoundException: Plural resource ID #0x7f0e0002 quantity=1825172 item=few\n\tat android.content.res.Resources.getQuantityText(Resources.java:356)\n\tat android.content.res.Resources.getQuantityString(Resources.java:466)\n\tat org.schabi.newpipe.util.Localization.getQuantity(Localization.java:130)\n\tat org.schabi.newpipe.util.Localization.shortViewCount(Localization.java:117)\n\tat org.schabi.newpipe.info_list.holder.StreamInfoItemHolder.getStreamInfoDetailLine(StreamInfoItemHolder.java:55)\n\tat org.schabi.newpipe.info_list.holder.StreamInfoItemHolder.updateFromItem(StreamInfoItemHolder.java:49)\n\tat org.schabi.newpipe.info_list.InfoListAdapter.onBindViewHolder(InfoListAdapter.java:248)\n\tat android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6508)\n\tat android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6541)\n\tat android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5484)\n\tat android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5750)\n\tat android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5589)\n\tat android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5585)\n\tat android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2231)\n\tat android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1558)\n\tat android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1518)\n\tat android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayout{
   "user_action": "ui error",
   "request": "App crash, UI failure",
   "content_language": "en",
   "service": "none",
   "package": "org.schabi.newpipe",
   "version": "0.11.3",
   "os": "Linux Android 5.1.1 - 22",
   "time": "2018-01-06 01:51",
   "ip_range": "84.10.0.0",
   "exceptions": [
      "android.content.res.Resources$NotFoundException: Plural resource ID #0x7f0e0002 quantity=1829252 item=few\n\tat android.content.res.Resources.getQuantityText(Resources.java:356)\n\tat android.content.res.Resources.getQuantityString(Resources.java:466)\n\tat org.schabi.newpipe.util.Localization.getQuantity(Localization.java:130)\n\tat org.schabi.newpipe.util.Localization.shortViewCount(Localization.java:117)\n\tat org.schabi.newpipe.info_list.holder.StreamInfoItemHolder.getStreamInfoDetailLine(StreamInfoItemHolder.java:55)\n\tat org.schabi.newpipe.info_list.holder.StreamInfoItemHolder.updateFromItem(StreamInfoItemHolder.java:49)\n\tat org.schabi.newpipe.info_list.InfoListAdapter.onBindViewHolder(InfoListAdapter.java:248)\n\tat android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6508)\n\tat android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6541)\n\tat android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5484)\n\tat android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5750)\n\tat android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5589)\n\tat android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5585)\n\tat android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2231)\n\tat android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1558)\n\tat android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1518)\n\tat android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:610)\n\tat android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3719)\n\tat android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3436)\n\tat android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3988)\n\tat android.view.View.layout(View.java:15686)\n\tat android.view.ViewGroup.layout(ViewGroup.java:5039)\n\tat android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077)\n\tat android.view.View.layout(View.java:15686)\n\tat android.view.ViewGroup.layout(ViewGroup.java:5039)\n\tat android.support.v4.view.ViewPager.onLayout(ViewPager.java:1769)\n\tat android.view.View.layout(View.java:15686)\n\tat android.view.ViewGroup.layout(ViewGroup.java:5039)\n\tat android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077)\n\tat android.view.View.layout(View.java:15686)\n\tat android.view.ViewGroup.layout(ViewGroup.java:5039)\n\tat android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)\n\tat android.widget.FrameLayout.onLayout(FrameLayout.java:514)\n\tat android.view.View.layout(View.java:15686)\n\tat android.view.ViewGroup.layout(ViewGroup.java:5039)\n\tat android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)\n\tat android.widget.FrameLayout.onLayout(FrameLayout.java:514)\n\tat android.view.View.layout(View.java:15686)\n\tat android.view.ViewGroup.layout(ViewGroup.java:5039)\n\tat android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)\n\tat android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)\n\tat android.widget.LinearLayout.onLayout(LinearLayout.java:1466)\n\tat android.view.View.layout(View.java:15686)\n\tat android.view.ViewGroup.layout(ViewGroup.java:5039)\n\tat android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)\n\tat android.widget.FrameLayout.onLayout(FrameLayout.java:514)\n\tat android.view.View.layout(View.java:15686)\n\tat android.view.ViewGroup.layout(ViewGroup.java:5039)\n\tat android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)\n\tat android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)\n\tat android.widget.LinearLayout.onLayout(LinearLayout.java:1466)\n\tat android.view.View.layout(View.java:15686)\n\tat android.view.ViewGroup.layout(ViewGroup.java:5039)\n\tat android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)\n\tat android.widget.FrameLayout.onLayout(FrameLayout.java:514)\n\tat android.view.View.layout(View.java:15686)\n\tat android.view.ViewGroup.layout(ViewGroup.java:5039)\n\tat android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086)\n\tat android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843)\n\tat android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)\n\tat android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5891)\n\tat android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)\n\tat android.view.Choreographer.doCallbacks(Choreographer.java:580)\n\tat android.view.Choreographer.doFrame(Choreographer.java:550)\n\tat android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)\n\tat android.os.Handler.handleCallback(Handler.java:739)\n\tat android.os.Handler.dispatchMessage(Handler.java:95)\n\tat android.os.Looper.loop(Looper.java:135)\n\tat android.app.ActivityThread.main(ActivityThread.java:5294)\n\tat java.lang.reflect.Method.invoke(Native Method)\n\tat java.lang.reflect.Method.invoke(Method.java:372)\n\tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)\n\tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)\n"
   ],
   "user_comment": ""
}

@theScrabi
Copy link
Member

Ah I see. Its the change that was made with plurals delete program from @TobiGr . Could you please take a look at it?

@theScrabi theScrabi added the bug Issue is related to a bug label Jan 6, 2018
@TobiGr
Copy link
Member

TobiGr commented Jan 6, 2018

This happens because we deleted quantity="other". We have to add a line to the programm to rename "many" to "other" if "other" does not exist.
I'll fix this on Monday.

@theScrabi theScrabi changed the title Version 0.11.3 keeps crashing v0.11.3 crash because of plurals Jan 6, 2018
@stil
Copy link

stil commented Jan 7, 2018

I have the same issue, the app crashes immediately at startup and makes latest version of newpipe unusable.

I hope for a quick fix!

@theScrabi theScrabi added the ASAP Issue needs to be fixed as soon as possible label Jan 9, 2018
@theScrabi
Copy link
Member

This happens because we deleted quantity="other". We have to add a line to the programm to rename "many" to "other" if "other" does not exist.

I did this manually. We have to remember to do this after running the fixplurals script.
However I wrote Michal Čihař the creator of weblate about that issue. He says a fix is on it's way, but it will still take a little.

@mauriciocolli
Copy link
Contributor

Update: see the latest comments on WeblateOrg/weblate#1550, we don't to remove anything from now on, neither fixing here (well, at least when the changes affect us).

@tkolo
Copy link

tkolo commented Mar 5, 2018

This is still an issue for Polish language in NewPipe 0.12.0. It often tries to search for "many" variation which does not exist in Polish translations, as by android rules the language only needed "one", "few", and "other"

@TobiGr
Copy link
Member

TobiGr commented Mar 5, 2018

I see...
There are "other" quantities which have been added before we asked Weblate to change it. I'll take care of it.

@tkolo
Copy link

tkolo commented Mar 5, 2018

I can provide you crash reports if you need them.

@TobiGr
Copy link
Member

TobiGr commented Mar 5, 2018

Yes, that'd be nice so I can ensure the problem is fixed.

@tkolo
Copy link

tkolo commented Mar 5, 2018

{
   "user_action": "ui error",
   "request": "App crash, UI failure",
   "content_language": "GB",
   "service": "none",
   "package": "org.schabi.newpipe.beta",
   "version": "0.12.0",
   "os": "Linux Android 8.1.0 - 27",
   "time": "2018-03-05 23:09",
   "ip_range": "88.220.0.0",
   "exceptions": [
      "android.content.res.Resources$NotFoundException: Plural resource ID #0x7f0e0001 quantity=12 item=many\n\tat android.content.res.ResourcesImpl.getQuantityText(ResourcesImpl.java:293)\n\tat android.content.res.Resources.getQuantityText(Resources.java:414)\n\tat android.content.res.XResources.getQuantityText(XResources.java:1032)\n\tat android.content.res.Resources.getQuantityString(Resources.java:490)\n\tat org.schabi.newpipe.util.Localization.getQuantity(Localization.java:157)\n\tat org.schabi.newpipe.util.Localization.localizeStreamCount(Localization.java:128)\n\tat org.schabi.newpipe.info_list.holder.ChannelInfoItemHolder.getDetailLine(ChannelInfoItemHolder.java:55)\n\tat org.schabi.newpipe.info_list.holder.ChannelMiniInfoItemHolder.updateFromItem(ChannelMiniInfoItemHolder.java:40)\n\tat org.schabi.newpipe.info_list.holder.ChannelInfoItemHolder.updateFromItem(ChannelInfoItemHolder.java:42)\n\tat org.schabi.newpipe.info_list.InfoListAdapter.onBindViewHolder(InfoListAdapter.java:252)\n\tat android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6508)\n\tat android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6541)\n\tat android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5484)\n\tat android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5750)\n\tat android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5589)\n\tat android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5585)\n\tat android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2231)\n\tat android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1558)\n\tat android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1518)\n\tat android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:610)\n\tat android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3719)\n\tat android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3436)\n\tat android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3988)\n\tat android.view.View.layout(View.java:19659)\n\tat android.view.ViewGroup.layout(ViewGroup.java:6075)\n\tat android.widget.RelativeLayout.onLayout(RelativeLayout.java:1083)\n\tat android.view.View.layout(View.java:19659)\n\tat android.view.ViewGroup.layout(ViewGroup.java:6075)\n\tat android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)\n\tat android.widget.FrameLayout.onLayout(FrameLayout.java:261)\n\tat android.view.View.layout(View.java:19659)\n\tat android.view.ViewGroup.layout(ViewGroup.java:6075)\n\tat android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)\n\tat android.widget.FrameLayout.onLayout(FrameLayout.java:261)\n\tat android.view.View.layout(View.java:19659)\n\tat android.view.ViewGroup.layout(ViewGroup.java:6075)\n\tat android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1172)\n\tat android.view.View.layout(View.java:19659)\n\tat android.view.ViewGroup.layout(ViewGroup.java:6075)\n\tat android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)\n\tat android.widget.FrameLayout.onLayout(FrameLayout.java:261)\n\tat android.view.View.layout(View.java:19659)\n\tat android.view.ViewGroup.layout(ViewGroup.java:6075)\n\tat android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)\n\tat android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)\n\tat android.widget.LinearLayout.onLayout(LinearLayout.java:1544)\n\tat android.view.View.layout(View.java:19659)\n\tat android.view.ViewGroup.layout(ViewGroup.java:6075)\n\tat android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)\n\tat android.widget.FrameLayout.onLayout(FrameLayout.java:261)\n\tat android.view.View.layout(View.java:19659)\n\tat android.view.ViewGroup.layout(ViewGroup.java:6075)\n\tat android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)\n\tat android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)\n\tat android.widget.LinearLayout.onLayout(LinearLayout.java:1544)\n\tat android.view.View.layout(View.java:19659)\n\tat android.view.ViewGroup.layout(ViewGroup.java:6075)\n\tat android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)\n\tat android.widget.FrameLayout.onLayout(FrameLayout.java:261)\n\tat com.android.internal.policy.DecorView.onLayout(DecorView.java:761)\n\tat android.view.View.layout(View.java:19659)\n\tat android.view.ViewGroup.layout(ViewGroup.java:6075)\n\tat android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2496)\n\tat android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2212)\n\tat android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)\n\tat android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)\n\tat android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)\n\tat android.view.Choreographer.doCallbacks(Choreographer.java:723)\n\tat android.view.Choreographer.doFrame(Choreographer.java:658)\n\tat android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)\n\tat android.os.Handler.handleCallback(Handler.java:790)\n\tat android.os.Handler.dispatchMessage(Handler.java:99)\n\tat android.os.Looper.loop(Looper.java:164)\n\tat android.app.ActivityThread.main(ActivityThread.java:6494)\n\tat java.lang.reflect.Method.invoke(Native Method)\n\tat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)\n\tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)\n\tat de.robv.android.xposed.XposedBridge.main(XposedBridge.java:108)\n"
   ],
   "user_comment": ""
}

@tkolo
Copy link

tkolo commented Mar 5, 2018

I remeber being able to trigger multiple different codepaths in 0.11.X, apparently it has gotten worse in 0.12.0. This crash occurs whenever i try to search for essentialy anything, making the app unusable.
The only way to make NewPipe usable is by forcing english, either system wide or using xposed app locale 2

@TobiGr
Copy link
Member

TobiGr commented Mar 6, 2018

@tkolo Can you please try out this app-debug.apk.zip. You need to unzip it. In 0.12.0 the changes which were made to Weblate were not applied to the Polish translation because it has not been updated. After 0.12. there were some commits which already replaced the "other" quantities by "many". I didn't have any problems with testing the latest dev with Polish language enabled so if you don't have them either, this should be fixed in the next version.

@tkolo
Copy link

tkolo commented Mar 6, 2018

Yeah, this version works. Thanks for the fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ASAP Issue needs to be fixed as soon as possible bug Issue is related to a bug
Projects
None yet
Development

No branches or pull requests

7 participants