Ошибка нарезки памяти в 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