Page 1 of 1

CEGUI::GenericException at CEGUIDynamicModule.cpp:85

Posted: Fri Feb 08, 2008 08:43
by schnorr
Hello,

I installed CEGUI using the .deb package distributed with Ubuntu Linux, version Feisty Fawn. Here are its contents:

Code: Select all

schnorr@shawnee:~$ dpkg -L libcegui-mk2-1
/.
/usr
/usr/lib
/usr/lib/libCEGUIBase.so.1.0.0
/usr/lib/libCEGUIDevILImageCodec.so.0.0.0
/usr/lib/libCEGUIFalagardWRBase.so.1.0.0
/usr/lib/libCEGUIOpenGLRenderer.so.0.0.1
/usr/lib/libCEGUITGAImageCodec.so.0.0.0
/usr/lib/libCEGUITinyXMLParser.so.0.0.0
/usr/lib/libCEGUIXercesParser.so.0.0.0
/usr/share
/usr/share/doc
/usr/share/doc/libcegui-mk2-1
/usr/share/doc/libcegui-mk2-1/README
/usr/share/doc/libcegui-mk2-1/TODO
/usr/share/doc/libcegui-mk2-1/AUTHORS
/usr/share/doc/libcegui-mk2-1/copyright
/usr/share/doc/libcegui-mk2-1/changelog.gz
/usr/share/doc/libcegui-mk2-1/changelog.Debian.gz
/usr/lib/libCEGUIBase.so.1
/usr/lib/libCEGUIDevILImageCodec.so.0
/usr/lib/libCEGUIFalagardWRBase.so.1
/usr/lib/libCEGUIOpenGLRenderer.so.0
/usr/lib/libCEGUITGAImageCodec.so.0
/usr/lib/libCEGUITinyXMLParser.so.0
/usr/lib/libCEGUIXercesParser.so.0
schnorr@shawnee:~$

I installed the Ogre libraries using the apt-get mechanism, and I also have the CEGUIOgreRenderer:

Code: Select all

schnorr@shawnee:~$ dpkg -L libogre14 | grep CEGUI
/usr/lib/libCEGUIOgreRenderer.so.14.0.3
/usr/lib/libCEGUIOgreRenderer.so.14
schnorr@shawnee:~$

I developed an Ogre app using CEGUI. In the development machine, the code works ok, but when I try to run it in another machine with the above installation, it gives me a segfault after a CEGUI::GenericException. I used gdb to trace where it originated, and it pointed me to here:

Code: Select all

(gdb) up
#7  0xb78a7d60 in DynamicModule (this=0x84ffae8, name=@0xbfcef654)
    at CEGUIDynamicModule.cpp:85
85      CEGUIDynamicModule.cpp: No such file or directory.
        in CEGUIDynamicModule.cpp
Current language:  auto; currently c++
(gdb) up
#8  0xb78e6f22 in CEGUI::System::setupXMLParser (this=0x84ff448)
    at CEGUISystem.cpp:1504
1504    CEGUISystem.cpp: No such file or directory.
        in CEGUISystem.cpp
(gdb)

The line 85 of CEGUIDynamicModule.cpp has something like this:

Code: Select all

    d_handle = DYNLIB_LOAD(d_moduleName.c_str());

So I presume it is trying to load some dynamic library. Does anyone know which library it tries to load? If so, where is this library is specified? Is there a configuration file such a .xsd with this info?

Thanks in advance.

Posted: Fri Feb 08, 2008 09:17
by schnorr
I just found this bug report:
https://bugs.launchpad.net/ubuntu/+source/cegui-mk2/+bug/93961

It seems that it is a packaging problem with ubuntu .deb files. I installed the dev package (libcegui-mk2-dev) and the exception no longer occurs. Some dynamically libraries (loaded at DynamicModule.cpp:85) are not present in the libcegui-mk2-1 package.

Does anyone know which libraries are dynamicaly loaded when instantiating CEGUISystem ?

Posted: Fri Feb 08, 2008 09:38
by CrazyEddie
Hi,

The libs that get dynamically loaded will depend upon how the system was built. Basically it's possible to specify the default modules to load at configure time.

I think the only one that gets loaded when instantiating CEGUI::System in normal cases is an XML parser. The default for this will depend on the libs available on the build system - since it will not auto-default to a module that is not being built.

The default order of selection as used by the configure script in 0.5.x is: Xerces, Expat, LibXML2, TinyXML.

I guess the CEGUI.log is not created at this stage, so contains nothing useful?

Posted: Fri Feb 08, 2008 10:35
by schnorr
Yeah, unfortunately, the CEGUI.log is not created before the Exception.
These are the files that are present in the libcegui-mk2-1 package:

Code: Select all

/usr/lib/libCEGUIBase.so.1
/usr/lib/libCEGUIDevILImageCodec.so.0
/usr/lib/libCEGUIFalagardWRBase.so.1
/usr/lib/libCEGUIOpenGLRenderer.so.0
/usr/lib/libCEGUITGAImageCodec.so.0
/usr/lib/libCEGUITinyXMLParser.so.0
/usr/lib/libCEGUIXercesParser.so.0
/usr/lib/libCEGUIBase.so.1.0.0
/usr/lib/libCEGUIDevILImageCodec.so.0.0.0
/usr/lib/libCEGUIFalagardWRBase.so.1.0.0
/usr/lib/libCEGUIOpenGLRenderer.so.0.0.1
/usr/lib/libCEGUITGAImageCodec.so.0.0.0
/usr/lib/libCEGUITinyXMLParser.so.0.0.0
/usr/lib/libCEGUIXercesParser.so.0.0.0

So, the Xerces and TinyXML parsers are present. It should not give the error. What exactly is the filename that CEGUI tries to load in DynamicModule.cpp ? If it is, for example, /usr/lib/libCEGUIXercesParser.so (without the .0.0.0), the file will not be present.

But, if the development package is installed (libcegui-mk2-dev), it contains these files:

Code: Select all

/usr/lib/libCEGUIBase.so
/usr/lib/libCEGUIDevILImageCodec.so
/usr/lib/libCEGUIFalagardWRBase.so
/usr/lib/libCEGUIOpenGLRenderer.so
/usr/lib/libCEGUITGAImageCodec.so
/usr/lib/libCEGUITinyXMLParser.so
/usr/lib/libCEGUIXercesParser.so

For me, it is clear that is a packaging problem, since the binary package does not have files .so that are links to files .so.0.0.0. I removed the libcegui-mk2-dev package and made the links myself. It worked. :)

Who maintains the ubuntu deb packages for cegui?

Posted: Fri Feb 08, 2008 12:30
by CrazyEddie
schnorr wrote:For me, it is clear that is a packaging problem, since the binary package does not have files .so that are links to files .so.0.0.0. I removed the libcegui-mk2-dev package and made the links myself. It worked. :)

Yeah, that sounds about right anyway. We do indeed open the file with the plain .so extension.

schnorr wrote:Who maintains the ubuntu deb packages for cegui?

I'm not certain who it is at he moment. It's none of us lot, anyway :)