Ошибка нарезки памяти в glib-2.0

Я столкнулся с ошибкой в ​​моем приложении Gtkmm-3.0, которая, похоже, связана с памятью из моего быстрого поиска в Google, но я не смог выявить возможную причину. Приложение будет работать случайно, и я удалил весь код, который обновляется при каждом вызове signal_timeout() безрезультатно. Похоже, это не связано с нажатиями клавиш / кнопок.

Valgrind был менее чем полезен, так как GUI требуется много времени, чтобы раскрутиться. Будем весьма благодарны за любые советы от пользователей Gtk/Glib или от тех, кто сталкивался с этой ошибкой ранее. Ниже приведена трассировка стека из моего последнего файла ядра.

(gdb) bt
    #0  0x00007f4b5de27720 in magazine_cache_push_magazine () at /lib64/libglib-2.0.so.0
    #1  0x00007f4b5de278e2 in private_thread_memory_cleanup () at /lib64/libglib-2.0.so.0
    #2  0x00007f4b5a6b6c22 in __nptl_deallocate_tsd () at /lib64/libpthread.so.0
    #3  0x00007f4b5a6b6e33 in start_thread () at /lib64/libpthread.so.0
    #4  0x00007f4b5cabf34d in clone () at /lib64/libc.so.6

1 ответ

Решение

Это почти наверняка ошибка в куче в вашем приложении или в одной из используемых библиотек, а не ошибка в GLib. Единственный реальный способ устранения этих проблем - это использование Valgrind. Убедитесь, что вы запускаете его с G_SLICE=always-malloc установить в среде, так как это отключит GSlice и использовать malloc() вместо этого, какой Valgrind может лучше инструмент.

Если Valgrind действительно не будет работать для вашего приложения, вы можете попробовать более простые проверки согласованности кучи glibc, включенные настройкой MALLOC_CHECK_=1 в среде: https://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.html

Другие вопросы по тегам