|  | 
That exception is protecting you from causing a nasty crash. It usually happens in response to some code like this:
period const &get_floating_frequency() const { return boost::python::call_method<period const &>( m_self,"get_floating_frequency"); }
And you get:
ReferenceError: Attempt to return dangling reference to object of type: class period
        In this case, the Python method invoked by call_method
        constructs a new Python object. You're trying to return a reference to a
        C++ object (an instance of class period) contained within and owned by that
        Python object. Because the called method handed back a brand new object,
        the only reference to it is held for the duration of get_floating_frequency() above. When the function returns, the Python
        object will be destroyed, destroying the instance of class
        period, and leaving the returned
        reference dangling. That's already undefined behavior, and if you try to
        do anything with that reference you're likely to cause a crash. Boost.Python
        detects this situation at runtime and helpfully throws an exception instead
        of letting you do that.