Code Monkey home page Code Monkey logo

Comments (18)

tonytamsf avatar tonytamsf commented on June 11, 2024

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.

AlbertKents avatar AlbertKents commented on June 11, 2024

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.

keunes avatar keunes commented on June 11, 2024

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.

ByteHamster avatar ByteHamster commented on June 11, 2024

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.

monzool avatar monzool commented on June 11, 2024

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.

keunes avatar keunes commented on June 11, 2024

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:
Screenshot_20240129-214213.png

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.

monzool avatar monzool commented on June 11, 2024

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.

keunes avatar keunes commented on June 11, 2024

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.

monzool avatar monzool commented on June 11, 2024

I can subscribe to that one (feeds.buzzsprout.com/1501960.rss) just fine

If I select SubscriptionAdd Podcast by RSS addressConfirm 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.

ByteHamster avatar ByteHamster commented on June 11, 2024

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.

monzool avatar monzool commented on June 11, 2024

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.

keunes avatar keunes commented on June 11, 2024

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.

ByteHamster avatar ByteHamster commented on June 11, 2024

Hmm, I think an interesting thing to see would actually be a database export of your empty AntennaPod database.

from antennapod.

tonytamsf avatar tonytamsf commented on June 11, 2024

@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.

tonytamsf avatar tonytamsf commented on June 11, 2024

Here is the way to replicate this problem

  1. Import an opml with a single empty feed
  2. This will create a feed that has empty title and url
  3. 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.

keunes avatar keunes commented on June 11, 2024

@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.

tonytamsf avatar tonytamsf commented on June 11, 2024

@ByteHamster Is it worth it to add some defensive code against bad fields in the OPML files?

from antennapod.

ByteHamster avatar ByteHamster commented on June 11, 2024

Yeah, that would be good. Especially considering that it makes the app crash in such a strange way

from antennapod.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.