A fixture has escaped Memoizer!
Posted: Tue Aug 06, 2019 3:26 pm
Hey all! I've started working on a game (I'm about 7 weeks into development) with love2D and I've been enjoying it.
I've been working on clearing the game of bugs and I've run into a bit of an issue. While messing around with a play tester, I got the error "A fixture has escaped Memoizer!" I've tried using google, but I'm not really sure what would cause this issue and what would be a good fix for it. Rather than bang my head on a wall repeatedly, I've decided to come here.
I just want to know what the error means, and some common causes / gotchas that can cause the issue so that I can work on debugging. The source code for the game is fairly large (28 GB, but a fair ammount of that is sound) and the error is fairly rare so I'm not planning on posting it here. However, if it is helpful for the community then I can potentially consider posting the .love to the site.
Some general notes about stuff I'm doing with the physics engine (I'm not sure if any/all of these points are relevant, so feel free to ask additional questions):
1. I am using world:destroy() to unload the physics world, then when reloading the world I create a brand new physics world and try to replicate the fixtures (basically I'm trying to simulate launching the script again without relaunching the entire game / multiple scripts again).
2. I do set the callbacks for the physics world.
3. I am 90% confident that I'm destroying all of my unused physics objects, however I do not call their :release() methods. (In fact, I don't call the :release() methods on that many of my objects, and just let the garbage collector deal with anything I'm missing.)
4. The error occurred about 3-4 seconds after loading a new physics world after having previously created and destroyed 1-2 physics worlds.
5. Since the error was a bit unexpected, I'm not 100% sure if there were any overlapping physics objects at the time of crashing. It is possible that there were objects that were in contact with each other.
6. The game does create a fairly large number of physics objects. (We'll say about 50-75 depending on what's going on during a specific frame).
7. This happened in love2D version 11.1 on a windows 7 machine. (I'm seriously considering updating to love2D version 11.2 in the near future, though)
8. The physics engine updates at a set tick rate (100 ticks per second).
9. This has only happened once in the course of days of on and off playtesting.
(Edit) 10. The error pointed to the world:update() function.
(Edit #2) 11. I do not call lua's collectgarbage function at any point (but I may need to )
(Edit #3) 12. The error, as far as I can tell, cannot be recreated by just messing around in my game, although I haven't tried creating a new project specifically to create the error.
I will try to watch this thread for any new posts, so let me know if there is any additional information that you need.
I've been working on clearing the game of bugs and I've run into a bit of an issue. While messing around with a play tester, I got the error "A fixture has escaped Memoizer!" I've tried using google, but I'm not really sure what would cause this issue and what would be a good fix for it. Rather than bang my head on a wall repeatedly, I've decided to come here.
I just want to know what the error means, and some common causes / gotchas that can cause the issue so that I can work on debugging. The source code for the game is fairly large (28 GB, but a fair ammount of that is sound) and the error is fairly rare so I'm not planning on posting it here. However, if it is helpful for the community then I can potentially consider posting the .love to the site.
Some general notes about stuff I'm doing with the physics engine (I'm not sure if any/all of these points are relevant, so feel free to ask additional questions):
1. I am using world:destroy() to unload the physics world, then when reloading the world I create a brand new physics world and try to replicate the fixtures (basically I'm trying to simulate launching the script again without relaunching the entire game / multiple scripts again).
2. I do set the callbacks for the physics world.
3. I am 90% confident that I'm destroying all of my unused physics objects, however I do not call their :release() methods. (In fact, I don't call the :release() methods on that many of my objects, and just let the garbage collector deal with anything I'm missing.)
4. The error occurred about 3-4 seconds after loading a new physics world after having previously created and destroyed 1-2 physics worlds.
5. Since the error was a bit unexpected, I'm not 100% sure if there were any overlapping physics objects at the time of crashing. It is possible that there were objects that were in contact with each other.
6. The game does create a fairly large number of physics objects. (We'll say about 50-75 depending on what's going on during a specific frame).
7. This happened in love2D version 11.1 on a windows 7 machine. (I'm seriously considering updating to love2D version 11.2 in the near future, though)
8. The physics engine updates at a set tick rate (100 ticks per second).
9. This has only happened once in the course of days of on and off playtesting.
(Edit) 10. The error pointed to the world:update() function.
(Edit #2) 11. I do not call lua's collectgarbage function at any point (but I may need to )
(Edit #3) 12. The error, as far as I can tell, cannot be recreated by just messing around in my game, although I haven't tried creating a new project specifically to create the error.
I will try to watch this thread for any new posts, so let me know if there is any additional information that you need.