Получение ошибок сегментации изнутри 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 System Log Viewer после настройки фильтров
  • Как установить переменную среды glib: g_slice
  • Ошибки компоновщика при компиляции против glib ...?
  • Gentoo: пакет `glib-2.0` не найден
  • Как проверить скрытые данные GIO / GVFS?
  • OpenSuse 13.2 mysql-workbench отказывается запускать
  • Проблема GTK + GLib :: Bindings
  • как отключить тестовые программы в кросс-компиляции 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

    Войдите в систему как пользователь unix, используя пароль, хранящийся в htpasswd

    Обычный мост против открытого vSwitch

    Распечатайте файл с отменой определенного символа и перейдите в другой существующий файл

    Резервное копирование в Linux с возобновлением поддерживает только последнюю версию

    Обнаружение X-сессии в сценарии bash (.bashrc и т. Д.)

    Mailto не работает с пользовательским файлом .desktop

    Где я могу найти документацию EVOOCGRAB?

    Как отображать каждое сообщение в потоке с хотя бы одним новым сообщением?

    В чем разница между «расширением» и «замещением» в терминах терминологии оболочки?

    Проблема с вставкой новой строки между странными html-символами в html-файле – UTF-8

    Вставка палитры Vim с символами, отличными от ASCII

    видимость переменной bash в подзаголовке подстановки команд

    tmux перестала нормально работать с zsh и oh-my-zsh

    Попытка заполнить Project Euler # 5, передает все синтаксические проверки, но не работает

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