Problematic error embedding Python using boost::python
First of all i'd like to say that i don't know much if anything at all about the inner workings of boost::python; however, i am familar with the Python C API. The following problem persists at the moment, leaving me/us (developers on the project) partially stuck.
Our application acts a a scripting host for scripts which access parts of the application's C++ API, exposed via boost::python. Using a typical loading procedure, our app loads scripts, which define a particular class derived from a base class we provide, which the C++ host instantiates in C/C++-space (the scripts only provide the class, do not execute any code beyonc the scope of the class).
Whenever the application starts up, we randomly (sometimes not at all) receive an error like this:
if state == mpx.PlayStatus.STOPPED: Traceback (most recent call last): File "/usr/share/mpx/scripts/trackinfo/__init__.py", line 498, in pstate_changed if state == mpx.PlayStatus.STOPPED: TypeError: expected string or Unicode object, NoneType found
However, 'mpx' itself a module, 'state' is variable which positively has a value assigned to it, and 'PlayStatus', 'STOPPED' are defined in C++ using boost python. It seems it it is not an error with the python code itself, as it spuriously appears (only once for the entire session of the application) at various points of execution/with various scripts.
Tracing it back to C++-space didn't come up with any results yet so far either.
Is this a problem in how boost::python wraps classes into Python? So far we're really sure this isn't a problem with our code, but we're not sure where to look further (trying with the plain C API would be immensely tedious at this moment, boost::python is a real timesaver!)
Does anyone know about this issue, or has seen similar?