Skip to content

[Refactor] Network on main thread in tabslayout #13223

@TobiGr

Description

@TobiGr

Checklist

  • I am able to reproduce the bug with the latest version given here: CLICK THIS LINK.
  • I made sure that there are no existing issues - open or closed - which I could contribute my information to.
  • I have read the FAQ and my problem isn't listed.
  • I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise.
  • This issue contains only one bug.
  • I have read and understood the contribution guidelines.
  • I have read and understood the AI policy. The content of this bug report is not generated by AI.

Affected version

refactor nightly

Steps to reproduce the bug

  1. Opened Bandcamp
  2. Opened a channel / artist page
  3. switched to "about" tab
  4. opened artist thumbnail in browser
  5. switched back

Expected behavior

no crash

Actual behavior

app crashed

Screenshots/Screen recordings

No response

Logs

FATAL EXCEPTION: main
Process: org.schabi.newpipe.debug.downloadermeta, PID: 21376
android.os.NetworkOnMainThreadException
	at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1737)
	at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
	at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
	at java.net.InetAddress.getAllByName(InetAddress.java:1152)
	at okhttp3.Dns$Companion$DnsSystem.lookup(Dns.kt:50)
	at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.kt:170)
	at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.kt:132)
	at okhttp3.internal.connection.RouteSelector.next(RouteSelector.kt:70)
	at okhttp3.internal.connection.RealRoutePlanner.planConnect$okhttp(RealRoutePlanner.kt:164)
	at okhttp3.internal.connection.RealRoutePlanner.plan(RealRoutePlanner.kt:75)
	at okhttp3.internal.connection.FastFallbackExchangeFinder.launchTcpConnect(FastFallbackExchangeFinder.kt:119)
	at okhttp3.internal.connection.FastFallbackExchangeFinder.find(FastFallbackExchangeFinder.kt:62)
	at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:298)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:101)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:85)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:74)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:226)
	at okhttp3.internal.connection.RealCall.execute(RealCall.kt:178)
	at org.schabi.newpipe.DownloaderImpl.execute(DownloaderImpl.java:161)
	at org.schabi.newpipe.extractor.downloader.Downloader.post(Downloader.java:143)
	at org.schabi.newpipe.extractor.downloader.Downloader.postWithContentType(Downloader.java:175)
	at org.schabi.newpipe.extractor.downloader.Downloader.postWithContentTypeJson(Downloader.java:217)
	at org.schabi.newpipe.extractor.downloader.Downloader.postWithContentTypeJson(Downloader.java:235)
	at org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getArtistDetails(BandcampExtractorHelper.java:120)
	at org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampChannelLinkHandlerFactory.getUrl(BandcampChannelLinkHandlerFactory.java:56)
	at org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory.getUrl(ListLinkHandlerFactory.java:77)
	at org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampChannelTabLinkHandlerFactory.getUrl(BandcampChannelTabLinkHandlerFactory.java:56)
	at org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory.fromQuery(ListLinkHandlerFactory.java:57)
	at org.schabi.newpipe.fragments.list.channel.ChannelTabFragment.handleResult(ChannelTabFragment.java:144)
	at org.schabi.newpipe.fragments.list.channel.ChannelTabFragment.handleResult(ChannelTabFragment.java:40)
	at org.schabi.newpipe.fragments.list.BaseListInfoFragment.doInitialLoadLogic(BaseListInfoFragment.java:122)
	at org.schabi.newpipe.fragments.BaseStateFragment.onViewCreated(BaseStateFragment.java:47)
	at org.schabi.newpipe.fragments.list.channel.ChannelTabFragment.onViewCreated(ChannelTabFragment.java:85)
	at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3152)
	at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:608)
	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:286)
	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2214)
	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2109)
	at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:2002)
	at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:323)
	at androidx.fragment.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:249)
	at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244)
	at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:669)
	at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631)
	at androidx.viewpager.widget.ViewPager.setCurrentItem(ViewPager.java:612)
	at com.google.android.material.tabs.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:3628)
	at com.google.android.material.tabs.TabLayout.dispatchTabSelected(TabLayout.java:2050)
	at com.google.android.material.tabs.TabLayout.selectTab(TabLayout.java:2043)
	at com.google.android.material.tabs.TabLayout.selectTab(TabLayout.java:2002)
	at com.google.android.material.tabs.TabLayout$Tab.select(TabLayout.java:2455)
	at com.google.android.material.tabs.TabLayout$TabView.performClick(TabLayout.java:2647)
	at android.view.View.performClickInternal(View.java:8060)
	at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
	at android.view.View$PerformClick.run(View.java:31549)
	at android.os.Handler.handleCallback(Handler.java:995)
	at android.os.Handler.dispatchMessage(Handler.java:103)
	at android.os.Looper.loopOnce(Looper.java:248)
	at android.os.Looper.loop(Looper.java:338)
	at android.app.ActivityThread.main(ActivityThread.java:9067)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
ACRA caught a NetworkOnMainThreadException for org.schabi.newpipe.debug.downloadermeta
android.os.NetworkOnMainThreadException
	at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1737)
	at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
	at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
	at java.net.InetAddress.getAllByName(InetAddress.java:1152)
	at okhttp3.Dns$Companion$DnsSystem.lookup(Dns.kt:50)
	at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.kt:170)
	at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.kt:132)
	at okhttp3.internal.connection.RouteSelector.next(RouteSelector.kt:70)
	at okhttp3.internal.connection.RealRoutePlanner.planConnect$okhttp(RealRoutePlanner.kt:164)
	at okhttp3.internal.connection.RealRoutePlanner.plan(RealRoutePlanner.kt:75)
	at okhttp3.internal.connection.FastFallbackExchangeFinder.launchTcpConnect(FastFallbackExchangeFinder.kt:119)
	at okhttp3.internal.connection.FastFallbackExchangeFinder.find(FastFallbackExchangeFinder.kt:62)
	at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:298)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:101)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:85)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:74)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
	at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:226)
	at okhttp3.internal.connection.RealCall.execute(RealCall.kt:178)
	at org.schabi.newpipe.DownloaderImpl.execute(DownloaderImpl.java:161)
	at org.schabi.newpipe.extractor.downloader.Downloader.post(Downloader.java:143)
	at org.schabi.newpipe.extractor.downloader.Downloader.postWithContentType(Downloader.java:175)
	at org.schabi.newpipe.extractor.downloader.Downloader.postWithContentTypeJson(Downloader.java:217)
	at org.schabi.newpipe.extractor.downloader.Downloader.postWithContentTypeJson(Downloader.java:235)
	at org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getArtistDetails(BandcampExtractorHelper.java:120)
	at org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampChannelLinkHandlerFactory.getUrl(BandcampChannelLinkHandlerFactory.java:56)
	at org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory.getUrl(ListLinkHandlerFactory.java:77)
	at org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampChannelTabLinkHandlerFactory.getUrl(BandcampChannelTabLinkHandlerFactory.java:56)
	at org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory.fromQuery(ListLinkHandlerFactory.java:57)
	at org.schabi.newpipe.fragments.list.channel.ChannelTabFragment.handleResult(ChannelTabFragment.java:144)
	at org.schabi.newpipe.fragments.list.channel.ChannelTabFragment.handleResult(ChannelTabFragment.java:40)
	at org.schabi.newpipe.fragments.list.BaseListInfoFragment.doInitialLoadLogic(BaseListInfoFragment.java:122)
	at org.schabi.newpipe.fragments.BaseStateFragment.onViewCreated(BaseStateFragment.java:47)
	at org.schabi.newpipe.fragments.list.channel.ChannelTabFragment.onViewCreated(ChannelTabFragment.java:85)
	at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3152)
	at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:608)
	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:286)
	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2214)
	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2109)
	at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:2002)
	at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:323)
	at androidx.fragment.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:249)
	at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244)
	at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:669)
	at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631)
	at androidx.viewpager.widget.ViewPager.setCurrentItem(ViewPager.java:612)
	at com.google.android.material.tabs.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:3628)
	at com.google.android.material.tabs.TabLayout.dispatchTabSelected(TabLayout.java:2050)
	at com.google.android.material.tabs.TabLayout.selectTab(TabLayout.java:2043)
	at com.google.android.material.tabs.TabLayout.selectTab(TabLayout.java:2002)
	at com.google.android.material.tabs.TabLayout$Tab.select(TabLayout.java:2455)
	at com.google.android.material.tabs.TabLayout$TabView.performClick(TabLayout.java:2647)
	at android.view.View.performClickInternal(View.java:8060)
	at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
	at android.view.View$PerformClick.run(View.java:31549)
	at android.os.Handler.handleCallback(Handler.java:995)
	at android.os.Handler.dispatchMessage(Handler.java:103)
	at android.os.Looper.loopOnce(Looper.java:248)
	at android.os.Looper.loop(Looper.java:338)
	at android.app.ActivityThread.main(ActivityThread.java:9067)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)

Affected Android/Custom ROM version

Android API 36

Affected device model

Emulator

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    duplicateIssue or discussion is a duplicate of an existing issue or discussiontemplate ignoredThe user didn't follow the template/instructions (or removed them)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions