Hi,
OK, so we have OIIO (v1.4) running fine under Windows and Linux, but have hit a
very odd crash in OIIO under OSX that I cannot get to the bottom of (and it
happens every time) - basically it crashes out in the texture system.
Here are 2 stack traces from GBD after it went pop
Program received signal SIGABRT, Aborted.
[Switching to process 98037 thread 0x9503]
0x00007fff8dbd2ce2 in __pthread_kill ()
(gdb) bt
#0 0x00007fff8dbd2ce2 in __pthread_kill ()
#1 0x00007fff8fa837d2 in pthread_kill ()
#2 0x00007fff8fa74a7a in abort ()
#3 0x00007fff8fad384c in free ()
#4 0x00007fff8908b702 in std::string::_Rep::_M_dispose ()
#5 0x00007fff8908c424 in std::string::reserve ()
#6 0x00007fff8908c7d9 in std::string::append ()
#7 0x00000001027d1f7a in OpenImageIO::v1_4::declare_imageio_format ()
#8 0x00000001027d2553 in OpenImageIO::v1_4::pvt::catalog_all_plugins ()
#9 0x00000001027d4810 in OpenImageIO::v1_4::ImageInput::create ()
#10 0x0000000102800c4e in OpenImageIO::v1_4::pvt::ImageCacheFile::open ()
#11 0x0000000102805a4d in OpenImageIO::v1_4::pvt::ImageCacheImpl::find_file ()
#12 0x00000001027ff807 in
OpenImageIO::v1_4::pvt::TextureSystemImpl::find_texturefile ()
#13 0x0000000102824d95 in
OpenImageIO::v1_4::pvt::TextureSystemImpl::get_texture_handle ()
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000010
[Switching to process 98059 thread 0x9603]
0x00007fff8906aa3f in std::_Rb_tree_rotate_left ()
(gdb) bt
#0 0x00007fff8906aa3f in std::_Rb_tree_rotate_left ()
#1 0x00007fff8906ab8b in std::_Rb_tree_insert_and_rebalance ()
#2 0x00000001027d6409 in std::_Rb_tree<std::string, std::pair<std::string
const, OpenImageIO::v1_4::ImageInput* (*)()>,
std::_Select1st<std::pair<std::string const, OpenImageIO::v1_4::ImageInput*
(*)()> >, std::less<std::string>, std::allocator<std::pair<std::string const,
OpenImageIO::v1_4::ImageInput* (*)()> > >::_M_insert ()
#3 0x00000001027d5212 in std::map<std::string, OpenImageIO::v1_4::ImageInput*
(*)(), std::less<std::string>, std::allocator<std::pair<std::string const,
OpenImageIO::v1_4::ImageInput* (*)()> > >::operator[] ()
#4 0x00000001027d1bab in OpenImageIO::v1_4::declare_imageio_format ()
#5 0x00000001027d276f in OpenImageIO::v1_4::pvt::catalog_all_plugins ()
#6 0x00000001027d4810 in OpenImageIO::v1_4::ImageInput::create ()
#7 0x0000000102800c4e in OpenImageIO::v1_4::pvt::ImageCacheFile::open ()
#8 0x0000000102805a4d in OpenImageIO::v1_4::pvt::ImageCacheImpl::find_file ()
#9 0x00000001027ff807 in
OpenImageIO::v1_4::pvt::TextureSystemImpl::find_texturefile ()
#10 0x0000000102824d95 in
OpenImageIO::v1_4::pvt::TextureSystemImpl::get_texture_handle ()
It can also report other areas, but seeing it all around std::string seems gets
me suspicious that somehow we're compiling/linking against the wrong libraries
somewhere along the line.
Perhaps debug and release, or perhaps in the versions of the c-runtime somehow.
Here is another stack trace:
imagecache.cpp:1233: failed assertion 'memsize() == 0 && size > 0'
Program received signal SIGABRT, Aborted.
[Switching to process 98099 thread 0x8803]
0x00007fff8dbd2ce2 in __pthread_kill ()
(gdb) bt
#0 0x00007fff8dbd2ce2 in __pthread_kill ()
#1 0x00007fff8fa837d2 in pthread_kill ()
#2 0x00007fff8fa74a7a in abort ()
#3 0x00000001028061f3 in OpenImageIO::v1_4::pvt::ImageCacheTile::read ()
#4 0x000000010280561f in
OpenImageIO::v1_4::pvt::ImageCacheImpl::add_tile_to_cache ()
#5 0x000000010280cf9c in
OpenImageIO::v1_4::pvt::ImageCacheImpl::find_tile_main_cache ()
#6 0x00000001028120f4 in OpenImageIO::v1_4::pvt::ImageCacheImpl::find_tile ()
#7 0x000000010281f4c8 in
OpenImageIO::v1_4::pvt::TextureSystemImpl::accum_sample_bilinear ()
#8 0x000000010281e098 in
OpenImageIO::v1_4::pvt::TextureSystemImpl::texture_lookup ()
#9 0x000000010281d7e2 in OpenImageIO::v1_4::pvt::TextureSystemImpl::texture ()
I was wondering if there was an easy way to see what we are linking to, and
work out if we were somehow mixing release and debug code together.
The thing is though, we are dynamically linking to everything (from boost
through to OIIO, libpng/jpeg/tiff etc) so I would expect it to try to load
multiple versions of the same library, or give me some sort of error.
Anyway, as you can see I'm at a total loss here and hence asking if anyone here
has any input from either experience under OSX with OIIO.
As a last resort I will rebuild all the dependencies and on to OIIO from
scratch, but if I made an error somewhere in doing that originally, it is
likely that I could just make it again next time around.
I have a mix of creating XCode projects and building from there (OIIO for
example) through to just using make, which I assume might use GCC instead of
the LLVM in XCode - I'm not sure if this might be causing the issue.
Thanks in advance for any help in this one ….
Best Regards,
Simon
_______________________________________________
Oiio-dev mailing list
[email protected]
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org