* All Main Python Modules:
- Change: New problem identified with the Python modules: each module seems to be built as a complete binary, so all the static C++ initializers are allocated in each module. In particular the C++ tree inheritance is built for *each* module so we cannot longer uses the typeid() comparisons across modules... It was used by boost::program_options to perform is casts with boost::any and was starting throwing exceptions because of bad casts. program_option was first initialized in "configuration" first included by PyViewer then in PyCRL (see Utilities.cpp). A first solution is to re-order the import of Python modules in stratus1/st_model so that CRL is imported first. The second is to not not link "configuration" with boost::program_option as only the binary vlsisapd-conf-editor needs it. That is a serious problem of which we must be aware and can cause further strange behaviors. Debug code used to diagnostic has been kept commented in the sources a it may be needed again :-( This behavior do not affect our singletons because they are part of dynamic libraries that seems to be correctly shared between the various Python modules.
This commit is contained in:
parent
73fa2f5f7c
commit
3774c09bab
|
@ -674,6 +674,8 @@ extern "C" {
|
|||
NetLoadConstants ( dictionnary );
|
||||
InstanceLoadConstants ( dictionnary );
|
||||
PinLoadConstants ( dictionnary );
|
||||
|
||||
trace << "Hurricane.so loaded " << (void*)&typeid(string) << endl;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -90,6 +90,8 @@ extern "C" {
|
|||
PyObject* dictionnary = PyModule_GetDict ( module );
|
||||
|
||||
//DbULoadConstants ( dictionnary );
|
||||
|
||||
trace << "Viewer.so loaded " << (void*)&typeid(string) << endl;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue