Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

You too can learn from my mistakes

Sign in to follow this  


I was working on a C++ project that I just started adding embedded Python support to, and I while testing the Python exception handling I kept getting these strange errors Fatal Python error: unexpected exception during garbage collection when generating Python exceptions, and I just couldn't figure out where that was coming from.

Long story short: I had wrapped Py_Initialize() and Py_Finalize() in a class' constructor and destructor to apply RAII so I wouldn't forget to call Py_Finalize(). Unfortunately, I had created an instance of the class inside the try block that I was using to handle the exceptions. So when the exception was thrown, the stack unwound and Py_Finalize() was called while Python had it's pants down (metaphorically speaking). Boom.

The irony is that the problem only showed up in test code, and wouldn't have been a factor in any of the actual usages in the application because of the way that I was initializing Python. At least, I now know one possible cause for that kind of error, and have something to look for the next time I see something like it.
Sign in to follow this  


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!