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

java.lang.IllegalStateException: Recursive entry to executePendingTransactions #136

Closed
tom91136 opened this issue Sep 14, 2014 · 7 comments
Labels

Comments

@tom91136
Copy link

I see that the libraries are using viewless Fragments to do work. This creates a problem where under some circumstance, would conflict with other fragment transactions that fragment manager is doing
The full stacktrace:

 java.lang.IllegalStateException: Recursive entry to executePendingTransactions
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1457)
        at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:482)
        at com.bumptech.glide.manager.RequestManagerRetriever.supportFragmentGet(RequestManagerRetriever.java:148)
        at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:66)
        at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:29)
        at com.bumptech.glide.Glide.with(Glide.java:537)

A perfect example of this would be an ViewPager containing several Fragments that calls Glide at the very beginning of onCreateView.

@sjudd
Copy link
Collaborator

sjudd commented Sep 14, 2014

This is a duplicate of #117, you're right, we shouldn't be calling executePendingTransactions. Fortunately this is fixed in master and will go out in the 3.3.1 release.

@huteri
Copy link

huteri commented Oct 26, 2015

The issue is not yet fixed.. still got the exception

@TWiStErRob
Copy link
Collaborator

@huteri Can you please give a 3.6.1 stack trace?
Is your case the same as #117? If not, probably open a new issue so we can investigate more.

@huteri
Copy link

huteri commented Oct 26, 2015

Hi, here is the full stack trace, not sure the robolectric or the glide

by the way, to give more context, Onboarding activity contains view pager with 4 fragments, and I load the image in the fragment.

java.lang.IllegalStateException: Recursive entry to executePendingTransactions
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1596)
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at org.robolectric.shadows.ShadowMessageQueue.dispatchMessage(ShadowMessageQueue.java:130)
    at org.robolectric.shadows.ShadowMessageQueue.access$100(ShadowMessageQueue.java:30)
    at org.robolectric.shadows.ShadowMessageQueue$1.run(ShadowMessageQueue.java:95)
    at org.robolectric.util.Scheduler$ScheduledRunnable.run(Scheduler.java:269)
    at org.robolectric.util.Scheduler.runOneTask(Scheduler.java:179)
    at org.robolectric.util.Scheduler.advanceTo(Scheduler.java:160)
    at org.robolectric.util.Scheduler.advanceBy(Scheduler.java:143)
    at org.robolectric.util.Scheduler.runOrQueueRunnable(Scheduler.java:243)
    at org.robolectric.util.Scheduler.postDelayed(Scheduler.java:85)
    at org.robolectric.shadows.ShadowMessageQueue.enqueueMessage(ShadowMessageQueue.java:116)
    at android.os.MessageQueue.enqueueMessage(MessageQueue.java)
    at android.os.Handler.enqueueMessage(Handler.java:631)
    at android.os.Handler.sendMessageAtTime(Handler.java:600)
    at android.os.Handler.sendMessageDelayed(Handler.java:570)
    at android.os.Handler.post(Handler.java:326)
    at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1530)
    at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:634)
    at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:617)
    at com.bumptech.glide.manager.RequestManagerRetriever.getSupportRequestManagerFragment(RequestManagerRetriever.java:187)
    at com.bumptech.glide.manager.RequestManagerRetriever.supportFragmentGet(RequestManagerRetriever.java:195)
    at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:116)
    at com.bumptech.glide.Glide.with(Glide.java:669)
    at com.halodiana.app.ui.OnboardingActivityFragment.onCreateView(OnboardingActivityFragment.java:62)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1965)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1078)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259)
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624)
    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
    at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:1106)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:952)
    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1474)
    at android.view.View.measure(View.java:17430)
    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727)
    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463)
    at android.view.View.measure(View.java:17430)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
    at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
    at android.view.View.measure(View.java:17430)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
    at android.view.View.measure(View.java:17430)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
    at android.view.View.measure(View.java:17430)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
    at android.view.View.measure(View.java:17430)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
    at android.view.View.measure(View.java:17430)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at org.robolectric.shadows.ShadowMessageQueue.dispatchMessage(ShadowMessageQueue.java:130)
    at org.robolectric.shadows.ShadowMessageQueue.access$100(ShadowMessageQueue.java:30)
    at org.robolectric.shadows.ShadowMessageQueue$1.run(ShadowMessageQueue.java:95)
    at org.robolectric.util.Scheduler$ScheduledRunnable.run(Scheduler.java:269)
    at org.robolectric.util.Scheduler.runOneTask(Scheduler.java:179)
    at org.robolectric.util.Scheduler.advanceTo(Scheduler.java:160)
    at org.robolectric.util.Scheduler.advanceBy(Scheduler.java:143)
    at org.robolectric.util.Scheduler.unPause(Scheduler.java:54)
    at org.robolectric.shadows.ShadowLooper.unPause(ShadowLooper.java:266)
    at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:306)
    at org.robolectric.shadows.CoreShadowsAdapter$2.runPaused(CoreShadowsAdapter.java:45)
    at org.robolectric.util.ActivityController.visible(ActivityController.java:173)
    at org.robolectric.util.ActivityController.setup(ActivityController.java:210)
    at org.robolectric.Robolectric.setupActivity(Robolectric.java:46)
    at com.halodiana.app.utils.OnboardingActvityTest.checkIntent(OnboardingActvityTest.java:20)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:251)
    at org.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:188)
    at org.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:54)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:152)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

@TWiStErRob
Copy link
Collaborator

@huteri see it's not the same issue, if you're only running into it from a test, both #136 and #117 were production bugs. Anyway, take a look at how this issue is solved in Glide's own tests. (pause has a corresponding runToEndOfTasks in tearDown)

@parkjaeiek
Copy link

I have the same issue:

Fatal Exception: java.lang.IllegalStateException: Recursive entry to executePendingTransactions
       at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1585)
       at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
       at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
       at android.support.v4.view.ViewPager.populate(ViewPager.java:1106)
       at android.support.v4.view.ViewPager.populate(ViewPager.java:952)
       at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:447)

@sjudd
Copy link
Collaborator

sjudd commented Nov 20, 2015

@parkjaeiek please see the above comments, let us know if you're able to reproduce it outside of Robolectric.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants