Получение ошибок сегментации изнутри glib и gobject – Я ДУМАЮ, Я хочу построить / статически связать с независимой версией glib2

Я еще не совсем понимаю, как работают segfaults и backtraces, но создается впечатление, что если функция в верхней части списка ссылается на «glib» или «gobject», у вас есть «Плохие проблемы» (TM) с библиотеками, Неправильно.

Ну, вот что я получаю здесь, от двух совершенно разных программ.

Первая – это последняя сборка irssi, скомпилированная (без ошибок и ошибок) непосредственно с github.com.

Program received signal SIGSEGV, Segmentation fault. 0xb7cf77ea in g_ascii_strcasecmp () from /usr/lib/libglib-2.0.so.0 (gdb) bt #0 0xb7cf77ea in g_ascii_strcasecmp () from /usr/lib/libglib-2.0.so.0 #1 0x08103455 in config_node_section_index () #2 0x081036b0 in config_node_traverse () #3 0x080fb674 in settings_get_bool () #4 0x08090bce in command_history_init () #5 0x08093d81 in fe_common_core_init () #6 0x0805a60d in main () 

Вторая программа, с которой я столкнулся, – это веб-браузер NetSurf (который также компилируется на 100% чисто) при построении на GTK (когда он не построен для использования GTK, он работает нормально):

 Program received signal SIGSEGV, Segmentation fault. 0xb7c1bace in g_type_check_instance_cast () from /usr/lib/libgobject-2.0.so.0 (gdb) bt #0 0xb7c1bace in g_type_check_instance_cast () from /usr/lib/libgobject-2.0.so.0 #1 0x080cd31c in nsgtk_scaffolding_set_websearch () #2 0x080d05da in nsgtk_new_scaffolding () #3 0x080dafd8 in gui_create_browser_window () #4 0x0809e806 in browser_window_create () #5 0x080c2fa9 in ?? () #6 0x0807c09d in main () 

Я на 99,99% уверен, что проблемы, которые я рассматриваю, – это своего рода сбой с glib2. Остальная часть моей системы работает на 100% отлично, только эти две программы делают странные вещи.
Я также уверен, что если бы я попытался создать другие программы, которые использовали эти библиотеки, они, скорее всего, тоже потерпели неудачу.

Очевидно, что выкапывание glib и друзей – и принятие хотя бы одной крошечной маленькой ошибки – это мгновенный рецепт, чтобы практически каждая программа в системе катастрофически ломалась (и я говорю по опыту с другой системой, давно: P).
Учитывая, что я совершенно не знаю, что я делаю с этим, и я знаю это, я не хочу идти туда; Я бы хотел, чтобы моя текущая конфигурация системы была функциональной 🙂

Я думал о компиляции новой версии glib2 (и co.), А затем статически связывал эти программы с ней. Я просто не знаю, как это сделать – какие шаги мне нужно выполнить?

Альтернативной идеей я был ./configure --prefix=/usr; make; make install ./configure --prefix=/usr; make; make install ./configure --prefix=/usr; make; make install точно такая же версия glib. Я сейчас «вернусь» в свою систему, чтобы переустановить ее. Я вижу, что связанные базовые библиотеки заканчиваются на « 0.3200.4 »:

 -rwxr-xr-x 1 root root 1.4M Aug 9 2012 /usr/lib/libgio-2.0.so.0.3200.4 -rwxr-xr-x 1 root root 1.2M Aug 9 2012 /usr/lib/libglib-2.0.so.0.3200.4 -rwxr-xr-x 1 root root 11K Aug 9 2012 /usr/lib/libgmodule-2.0.so.0.3200.4 -rwxr-xr-x 1 root root 308K Aug 9 2012 /usr/lib/libgobject-2.0.so.0.3200.4 -rwxr-xr-x 1 root root 3.7K Aug 9 2012 /usr/lib/libgthread-2.0.so.0.3200.4 

Возможно, это сработает или сломает вещи ужасно? : S
Если это возможно, какая версия «0.3200.4» переводится?

Какие еще идеи я могу попробовать?

Я не обязательно ищу исправления для glib, которые исправляют любую фундаментальную ошибку – это не влияет на меня так плохо. Я просто хочу, чтобы irssi и NetSurf работали правильно.

  • gnome-terminal сломан из-за gsettings + libglib
  • проблема с glib при установке Midnight Commander на centOS
  • OpenSuse 13.2 mysql-workbench отказывается запускать
  • glib-ошибки на cygwin
  • Не удалось запустить Gnome System Log Viewer после настройки фильтров
  • GTK3 + и C ++ на OSX - «Нет установок GSettings установлены»
  • Не удалось удалить libglib2.0-0 из Software Center
  • как отключить тестовые программы в кросс-компиляции glib
  • One Solution collect form web for “Получение ошибок сегментации изнутри glib и gobject – Я ДУМАЮ, Я хочу построить / статически связать с независимой версией glib2”

    У меня создается впечатление, что если функция в верхней части списка ссылается на «glib» или «gobject», у вас есть «Плохие проблемы» (TM) с библиотеками, которые обычно не должны ошибаться.

    Вы получаете неправильное впечатление, если вы имеете в виду это указывает на недостаток, вероятно, в этих библиотеках. Это не значит, что; это, скорее всего, означает, что в этом случае произошла преждевременная ошибка. По своей природе C не имеет в ней много средств защиты от выполнения, поэтому вы можете легко передать аргументы, которые будут компилироваться, но не будут проверяться дальше (если вы не сделаете это самостоятельно). Простой пример:

     int main (void) { char whoops[3] = { 'a', 'b', 'c' }; if (strcmp(whoops, "abcdef")) puts(whoops); 

    Передает неисчерпаемую строку нескольким строковым функциям. Это не скомпрометирует проблему и, скорее всего, будет работать нормально, потому что нарушение памяти будет очень незначительным, но это может привести к strcmp() в strcmp() или puts() . Это не означает, что реализация strcmp() ошибочна; ошибка явно прямо там в main() .

    Такие функции не могут логически определить, правильно ли передан аргумент (это то, что я имел в виду проверки времени выполнения WRT и C «по своей природе»). Не так много смысла в том, что компилятор должен проверить, потому что большую часть времени данные не будут жестко закодированы.

    Материал в середине backtrace не обязательно играет роль, хотя это возможно. Как правило, местом для начала является последняя запись; вот где проблема была прослежена .

    Но ошибка всегда была где угодно. Часто сравнивая обратную трассировку с ошибками, сообщаемыми с помощью mem checker, например valgrind может помочь уменьшить сужение. WRT ваши примеры могут быть много, чтобы просеять через; последний я проверил valgrind и gtk не были счастливыми товарищами по игре.

    Я думал о компиляции новой версии glib2 (и co.), А затем статически связывал эти программы с ней.

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

    Скорее всего, вы просто будете тратить много времени и разочаровывать себя.

    Я на 99,99% уверен, что проблемы, которые я рассматриваю, – это своего рода сбой с glib2.

    Я на 99% уверен, что вы там слишком самоуверенный.

    В то время как снова ошибка могла быть где угодно, как правило, считать наиболее широко проверенные части наименее вероятными виновниками. В этом случае glib довольно вездесущий, тогда как irssi и NetSurf относительно неясны.

    Лучшее, что вам нужно сделать, это, вероятно, файл отчета об ошибке. Выводы обычно очень ценятся там. Начните с irssi и NetSurf; если вы поймете, что они будут достаточно гладкими, они будут достаточно разумны, просто скажите, что у них нет оснований полагать, что это их проблема, если вы не можете продемонстрировать это (чего у всех этого нет). Если, с другой стороны, люди irssi определяют, что это похоже, они, вероятно, захотят продолжить это сами.

    Interesting Posts

    Rsync передает больше данных, чем разница между источником и получателем, почему?

    Не удалось загрузить libGLESv2.so.2: libGLESv2.so.2: невозможно открыть файл общих объектов: нет такого файла или каталога

    копирование удаленных корневых файлов, когда «PermitRootLogin no»

    Выбрать строки, используя диапазоны в Vim?

    Конфигурация пользователя IRC для irssi / ircd-hybrid на Debian

    Как я могу получить DVD-диски в Debian?

    Solaris 10 – Является ли изоляция зоны достаточной для разделения серверов с высоким и низким уровнем безопасности?

    Настройте Centos 6.3, чтобы направлять весь трафик через прокси-сервер

    Баш для пользователя. Лучший в том же или отдельном скрипте?

    Печать строки с заданным смещением в файле

    Почему SIGUSR1 приводит к прекращению процесса?

    Нет пароля для запуска команды как root для фиксированной команды?

    Редактирование Ubuntu ISO

    Fedora 23 устанавливает проблемы (конфигурация хранилища + сбой сканирования диска sda)

    Yocto Linux на Atom Z3735G Baytrail – Инициализация i915 дает пустой экран

    Linux и Unix - лучшая ОС в мире.