Двойной связанный список glibc в RHEL 5

0

У меня есть код, написанный в C++, который генерирует файл sharedlib (.so), который, в свою очередь, используется в моем приложении, которое работает на RHEL3.

Теперь мне нужно перейти на RHEL5. Код для файла.so успешно компилируется, но когда я пытаюсь запустить мои службы, он показывает ** glibc поврежденный двойной список **, но службы запускаются успешно.

Может ли это быть из-за ОС, поскольку тот же код для того же.so, скомпилированного в RHEL3, работает нормально.

Также, если я копирую файл.so, скомпилированный в RHEL3, на машину RHEL5, все работает отлично.

    This is what i got by running valgrind :
==19845== Invalid read of size 4
==19845==    at 0x453F4EC: std::_Rb_tree<int, std::pair<int const, key>, std::_Select1st<std::pair<int const, key> >, std::less<int>, std::allocator<std::pair<int const, key> > >::_S_right(std::_Rb_tree_node_base*) (in /home/test/examplesofile1.so)
==19845==    by 0x45408AA: std::_Rb_tree<int, std::pair<int const, key>, std::_Select1st<std::pair<int const, key> >, std::less<int>, std::allocator<std::pair<int const, key> > >::_M_erase(std::_Rb_tree_node<std::pair<int const, key> >*) (in /home/test/examplesofile1.so)
==19845==    by 0x4540918: std::_Rb_tree<int, std::pair<int const, key>, std::_Select1st<std::pair<int const, key> >, std::less<int>, std::allocator<std::pair<int const, key> > >::~_Rb_tree() (in /home/test/examplesofile1.so)
==19845==    by 0x4540974: std::map<int, key, std::less<int>, std::allocator<std::pair<int const, key> > >::~map() (in /home/test/examplesofile1.so)
==19845==    by 0x48235FB: (within /home/test/examplesofile2.so)
==19845==    by 0xAA5058: __cxa_finalize (in /lib/libc-2.5.so)
==19845==    by 0x477BC03: (within /home/test/examplesofile2.so)
==19845==    by 0x4A2FDEB: (within /home/test/examplesofile2.so)
==19845==    by 0xA697CD: _dl_fini (in /lib/ld-2.5.so)
==19845==    by 0xAA4DA8: exit (in /lib/libc-2.5.so)
==19845==    by 0x8086F57: vMakeDaemon (commonfunctions.c:438)
==19845==    by 0x8067F9A: Initialize (mngr.c:360)
  • 0
    Используйте valgrind для устранения утечек памяти.
  • 0
    Ошибка, вероятно, внутри вашего кода .... Сообщение "glibc поврежденный двойной связанный список" помогает найти его.
Теги:
rhel5

1 ответ

1

В большинстве случаев это означает, что некоторая память освобождается дважды. Так что ошибка, скорее всего, в вашем коде.

Попробуйте перекомпилировать вашу библиотеку в новой системе и использовать valgrind, чтобы найти причину проблемы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню