Comments (18)
It is possible this particular feed has poor formatting and AP is not handling it correctly. Which feed/podcast were you searching for? @AlbertKents
from antennapod.
It is possible this particular feed has poor formatting and AP is not handling it correctly. Which feed/podcast were you searching for? @AlbertKents
At first I thought the same. So I tried subscribing to several podcasts but still getting the same crash issue every time. For almost two weeks now.
from antennapod.
Could you still share (some of) the feeds that you're trying to subscribe to @AlbertKents? We're not experiencing this issue, and if we can't reproduce it'll be hard to fix.
from antennapod.
The stacktrace looks like you somehow ended up being subscribed to a feed that has no guid, no title, no website link, and not even an RSS url. Have you ever exported your database and modified it in any way?
from antennapod.
I am experiencing the exact same issue. Clean Antennapod install, subscribing to first podcast from search
Antennapod 3.2.0 (58081fe)
Phone: Pixel 7a
OS version: Android 14 (UQ1A.240105.004)
FATAL EXCEPTION: main
Process: de.danoeh.antennapod, PID: 18407
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at de.danoeh.antennapod.core.storage.DBTasks.searchFeedByIdentifyingValueOrID(DBTasks.java:148)
at de.danoeh.antennapod.core.storage.DBTasks.updateFeed(DBTasks.java:205)
at de.danoeh.antennapod.activity.OnlineFeedViewActivity.lambda$showFeedInformation$12(OnlineFeedViewActivity.java:454)
at de.danoeh.antennapod.activity.OnlineFeedViewActivity.$r8$lambda$hi785Ed59_1ny6L2vpKQJxreomE(OnlineFeedViewActivity.java:0)
at de.danoeh.antennapod.activity.OnlineFeedViewActivity$$ExternalSyntheticLambda5.onClick(R8$$SyntheticClass:0)
at android.view.View.performClick(View.java:7658)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1219)
at android.view.View.performClickInternal(View.java:7635)
at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
at android.view.View$PerformClick.run(View.java:30167)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8248)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Podcast for this crash is ADSP (https://adspthepodcast.com/)
I get similar error when attempting to import OPML file exported from Google Podcasts via Takeout. The app doesn't close in this case though - just pops the error
01-29 21:15:27.108 18407 18407 W System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
01-29 21:15:27.111 18407 18407 W System.err: at de.danoeh.antennapod.core.storage.DBTasks.searchFeedByIdentifyingValueOrID(DBTasks.java:148)
01-29 21:15:27.111 18407 18407 W System.err: at de.danoeh.antennapod.core.storage.DBTasks.updateFeed(DBTasks.java:205)
01-29 21:15:27.111 18407 18407 W System.err: at de.danoeh.antennapod.activity.OpmlImportActivity.lambda$onCreate$2(OpmlImportActivity.java:102)
01-29 21:15:27.111 18407 18407 W System.err: at de.danoeh.antennapod.activity.OpmlImportActivity.$r8$lambda$wRc0Agyx9b5bQ_M-2soLqtejhQM(OpmlImportActivity.java:0)
01-29 21:15:27.111 18407 18407 W System.err: at de.danoeh.antennapod.activity.OpmlImportActivity$$ExternalSyntheticLambda10.run(R8$$SyntheticClass:0)
01-29 21:15:27.112 18407 18407 W System.err: at io.reactivex.internal.operators.completable.CompletableFromAction.subscribeActual(CompletableFromAction.java:34)
01-29 21:15:27.112 18407 18407 W System.err: at io.reactivex.Completable.subscribe(Completable.java:2302)
01-29 21:15:27.112 18407 18407 W System.err: at io.reactivex.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.run(CompletableSubscribeOn.java:64)
01-29 21:15:27.112 18407 18407 W System.err: at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
01-29 21:15:27.112 18407 18407 W System.err: at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
01-29 21:15:27.112 18407 18407 W System.err: at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
01-29 21:15:27.112 18407 18407 W System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:264)
01-29 21:15:27.112 18407 18407 W System.err: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
01-29 21:15:27.112 18407 18407 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
01-29 21:15:27.112 18407 18407 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
01-29 21:15:27.112 18407 18407 W System.err: at java.lang.Thread.run(Thread.java:1012)
The OPML file imports fine in e.g. Pocket Casts, so I assume a non-corrupted file.
from antennapod.
Hi @monzool
subscribing to first podcast from search
Podcast for this crash is ADSP (https://adspthepodcast.com/)
I searched for this podcast in AntennaPod but can't find it:
Can you please copy/paste the exact search text you enter?
get similar error when attempting to import OPML file exported from Google Podcasts via Takeout
Is that OPML something you would be willing to share? If not publicly, to one of us individually? Then we can investigate if there's any issues with the formatting of the file. (The file may still be 'broken' if Pocket Casts built in methods to catch the errors and ignore or work around them.)
from antennapod.
Can you please copy/paste the exact search text you enter?
Yes, certainly. And sorry - I shouldn't have provided the abbreviated name. The exact name of the podcast is "Algorithms + Data Structures = Programs". I enter just "algorithms" in the search box to find it
You are right about the OPML of course. Have extended the test to Pocket Casts, Podcast Addict and Podverse which all imports the OPML (however with different resulting number of imports). I can share the file to you
from antennapod.
Thanks @monzool.
The exact name of the podcast is "Algorithms + Data Structures = Programs". I enter just "algorithms" in the search box to find it
I can subscribe to that one (https://feeds.buzzsprout.com/1501960.rss) just fine. Did you say you tried this from a completely clean install, or did you already have subscriptions? And what if you try to add the above feed – same problem?
You are right about the OPML of course. Have extended the test to Pocket Casts, Podcast Addict and Podverse which all imports the OPML (however with different resulting number of imports). I can share the file to you
Hmm, the different number of imports does make me suspect there's something off with the file. If you send it to [my username]@mailbox.org, I can have a look and pass it on to fellow core contributors if needed.
from antennapod.
I can subscribe to that one (feeds.buzzsprout.com/1501960.rss) just fine
If I select Subscription ⮕ Add Podcast by RSS address ⮕ Confirm then I get a null pointer exception
FATAL EXCEPTION: main
Process: de.danoeh.antennapod, PID: 25486
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at de.danoeh.antennapod.core.storage.DBTasks.searchFeedByIdentifyingValueOrID(DBTasks.java:148)
at de.danoeh.antennapod.core.storage.DBTasks.updateFeed(DBTasks.java:205)
at de.danoeh.antennapod.activity.OnlineFeedViewActivity.lambda$showFeedInformation$12(OnlineFeedViewActivity.java:454)
at de.danoeh.antennapod.activity.OnlineFeedViewActivity.$r8$lambda$hi785Ed59_1ny6L2vpKQJxreomE(OnlineFeedViewActivity.java:0)
at de.danoeh.antennapod.activity.OnlineFeedViewActivity$$ExternalSyntheticLambda5.onClick(R8$$SyntheticClass:0)
at android.view.View.performClick(View.java:7658)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1219)
at android.view.View.performClickInternal(View.java:7635)
at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
at android.view.View$PerformClick.run(View.java:30167)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8248)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Did you say you tried this from a completely clean install
I did - though I installed it some time ago, but only now did I get around to use it. So unused. First action of use was to attempt the OPML import. Then the manual add
Btw I install via F-Droid
from antennapod.
I did - though I installed it some time ago, but only now did I get around to use it. So unused.
Try clearing the app data from Android's settings screen first
from antennapod.
Seems it cannot escape comparing on a null object 🤷
Subscribe rss | Import OPML | |
Clear app cache | NullPointerException | NullPointerException |
Clear app data | NullPointerException | NullPointerException |
Reinstall app (Google Play store) | NullPointerException | NullPointerException |
from antennapod.
The feed itself seems fine also (?)
https://validator.w3.org/feed/check.cgi?url=feeds.buzzsprout.com%2F1501960.rss
It's just missing the itunes:email
element within the owner
tag, but I guess that shouldn't be a problem.
@ByteHamster Given a clean install, would it be of any use to have the full logs?
BTW @monzool Thanks for sending over the OPML file. It seems fine to me, and given that you're also having trouble just adding the RSS, I guess it's unlikely it's the OMPL.
from antennapod.
Hmm, I think an interesting thing to see would actually be a database export of your empty AntennaPod database.
from antennapod.
@AlbertKents I looked at the OPML file you sent to @keunes , the first item in the OPML has an empty title and empty url. Can you manually edit that OPML file to delete line # 8 and see what happens?
<body>
<outline text='feeds'>
<outline type='rss' text='' xmlUrl=''/>
<outline type='rss' text='Algorithms + Data Structures = Programs' xmlUrl='https://feeds.buzzsprout.com/1501960.rss'/>
Also, I think in your subscriptions there could be a podcast feed with empty title and url, if you Remove that podcast, I hope you will be able to subscribe again
from antennapod.
Here is the way to replicate this problem
- Import an opml with a single empty feed
- This will create a feed that has empty title and url
- From this point forward, the user can no longer subscribe to any other feeds (crashing the app)
<?xml version='1.0' encoding='utf-8'?>
<opml>
<head>
<title>Google Podcasts Subscriptions</title>
</head>
<body>
<outline text='feeds'>
<outline type='rss' text='' xmlUrl=''/>
</outline>
</body>
</opml>
from antennapod.
@tonytamsf that was @monzool's OPML file. Thanks for finding the culprit!
I guess in such cases, we should just ignore the empty item when importing? (I.e. skip item if URL is not present. Empty title is fine as it'll be picked up from the feed itself.)
from antennapod.
@ByteHamster Is it worth it to add some defensive code against bad fields in the OPML files?
from antennapod.
Yeah, that would be good. Especially considering that it makes the app crash in such a strange way
from antennapod.
Related Issues (20)
- Release apk files alongside zipped binaries in releases HOT 2
- there ware something wrong with varible defaultHandler in CrashReportWriter.java HOT 2
- Default Sorting Order
- Multiple synchronization destinations - syncing to more than one server.
- Re-downloading a downloaded episode using multi-select
- Media3: Migrate to the new track selection methods
- Invalid type on podcast that worked already before | https://drawntotheflame.podbean.com/ HOT 4
- Pinned Podcasts
- Show excerpt of description in episode list HOT 4
- Android custom schema for episode opening HOT 3
- Option to download audio instead of video from RSS feeds
- Podcasts that are close to being finished get marked complete HOT 2
- Please start making GitHub APK releases for uses with Obtainium HOT 1
- AntennaPod crash on Graphene OS due to native code debugging. HOT 26
- Swipe distance is too long HOT 7
- Can't play a podcast HOT 9
- Make the difference between played and unplayed episodes more visible HOT 1
- Further delay the displaying of the review popup HOT 2
- Queue list view timestamps not adjusted for playback speed HOT 1
- Allow customization of button on downloaded podcast HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from antennapod.