Hello, this issue is the same as described here.
https://github.com/openexr/openexr/issues/86
In your case,the problem stems from the members of the base exception being 
exported, not the class definition.
The correct fix is to follow through the work in progress on that github thread 
and commit it to the repo.
I have appended your note to the issue on github for documentation. The issue 
you reference from the alembic mailing list is the same issue.
Unfortunately, that thread has not been updated in a little while, but it 
should be possible for anyone with a Windows development set up to pick up the 
work and send a pull request. At the moment, I personally don't have a windows 
dev set up, which is why I'm appealing to the list to complete the work.
Regards,
- Nick

Date: Wed, 12 Feb 2014 18:50:21 +1100
From: federi...@al.com.au
To: openexr-devel@nongnu.org
CC: federi...@al.com.au
Subject: [Openexr-devel] pyilmbase problems importing imath


  

    
  
  
    Hi

    

    Hope this is the forum to ask.

    

    I'm building pyilmbase 1.0.0  under llinux Centos 6.2, with ilmbase 
    1.0.3,  gcc4.1.2 and boost 1.44.0 (also tried all combinations of
    the newer version of pyilmbase 2.0.0/1 against ilmbase 2.0 with
    newer compiler gcc446, and several flavours boost.

    

    In all cases I can build  successfully and import iex just
    fine, but importing imath does SegFault, it does crashed on
    line 241 of PyIex.h

    

    240│     const
    TypeTranslator<IEX_NAMESPACE::BaseExc>::ClassDesc *baseDesc =
    baseExcTranslator().template
    findClassDesc<ExcBase>(baseExcTranslator().firstClassDesc());

    241├>    std::string baseName = baseDesc->typeName();

    242│     std::string baseModule = baseDesc->moduleName();

    

    baseDesc ends up with a nullPointer (const
    PyIex::TypeTranslator<Iex_2_0::BaseExc>::ClassDesc *) 0x0

    

    

    As importing iex works fine, I changed the code in
    imathmodule.cpp to kind of copy how the Exception gets registered.

    

    <    
PyIex::registerExc<Imath::NullVecExc,Iex::MathExc>("NullVecExc","imath");

    <    
PyIex::registerExc<Imath::NullQuatExc,Iex::MathExc>("NullQuatExc","imath");

    <    
PyIex::registerExc<Imath::SingMatrixExc,Iex::MathExc>("SingMatrixExc","imath");

    <    
PyIex::registerExc<Imath::ZeroScaleExc,Iex::MathExc>("ZeroScaleExc","imath");

    <    
PyIex::registerExc<Imath::IntVecNormalizeExc,Iex::MathExc>("IntVecNormalizeExc","imath");

    ---

    >    
PyIex::registerExc<Imath::NullVecExc,Iex::BaseExc>("NullVecExc","iex");

    >    
PyIex::registerExc<Imath::NullQuatExc,Iex::BaseExc>("NullQuatExc","iex");

    >    
PyIex::registerExc<Imath::SingMatrixExc,Iex::BaseExc>("SingMatrixExc","iex");

    >    
PyIex::registerExc<Imath::ZeroScaleExc,Iex::BaseExc>("ZeroScaleExc","iex");

    >    
PyIex::registerExc<Imath::IntVecNormalizeExc,Iex::BaseExc>("IntVecNormalizeExc","iex");

    

    This way I can import imath, and in python land I can see
    that the imath module contains the registered exceptions and
    I can raise/try/catch them. but this code change seems fishy since
    nothing else seems to have reported and the code in the latest
    version remains the same.

    

    I saw someone else did the same change (back in 2012)
https://groups.google.com/forum/#!searchin/alembic-discussion/Cannot$20build$20windows/alembic-discussion/OMOvhg0Nv7o/VnJRrByVv10J

    

    but I'm pretty sure I am missing something more obvious

    

    also it caught my attention that I get this warning on gdb 

    

    PyIex::TypeTranslator<Iex_2_0::BaseExc>::findClassDesc<Iex_2_0::MathExc>
      (this=0x6e6510, cd=0x6eaa00) at
/scratch/federicon/git/rezExternalPackages/pyilmbase/2.0.0/build/2/pyilmbase-prefix/src/pyilmbase/PyIex/Py

    IexTypeTranslator.h:262

    (gdb) print cd->typeInfo()

    warning: RTTI symbol not found for class
'PyIex::TypeTranslator<Iex_2_0::BaseExc>::ClassDescT<Iex_2_0::BaseExc>'

      

    could it be related to the realtime type info? I made sure that
    ilmbase and pyilmbase were compiled wihout the -fno-rtti so it
    should be on by default

    

    Hope someone can help me find the issue

    

    Thanks in advance

    Fede

    

    

  



_______________________________________________
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel                         
                  
_______________________________________________
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel

Reply via email to