IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Пингвинятник (ОС *NIX) (https://www.imho.ws/forumdisplay.php?f=76)
-   -   segmentation faild из-за gtk (https://www.imho.ws/showthread.php?t=47735)

aivs 05.01.2004 02:56

segmentation faild из-за gtk
 
(d4x:19802): Gdk-CRITICAL **: file gdkdraw.c: line 371 (gdk_draw_line): assertion `GDK_IS_GC (gc)' failed

(d4x:19802): Gdk-CRITICAL **: file gdkdraw.c: line 371 (gdk_draw_line): assertion `GDK_IS_GC (gc)' failed

(d4x:19802): Gdk-CRITICAL **: file gdkdraw.c: line 371 (gdk_draw_line): assertion `GDK_IS_GC (gc)' failed

(d4x:19802): Gdk-CRITICAL **: file gdkdraw.c: line 371 (gdk_draw_line): assertion `GDK_IS_GC (gc)' failed

(d4x:19802): Gdk-CRITICAL **: file gdkgc-x11.c: line 654 (gdk_gc_set_clip_rectangle): assertion `GDK_IS_GC (gc)' failed

(d4x:19802): Gdk-CRITICAL **: file gdkgc-x11.c: line 654 (gdk_gc_set_clip_rectangle): assertion `GDK_IS_GC (gc)' failed

(d4x:19802): Gdk-CRITICAL **: file gdkdraw.c: line 338 (gdk_draw_point): assertion `GDK_IS_GC (gc)' failed

(d4x:19802): Gdk-CRITICAL **: file gdkdraw.c: line 338 (gdk_draw_point): assertion `GDK_IS_GC (gc)' failed

(d4x:19802): Gdk-CRITICAL **: file gdkdraw.c: line 338 (gdk_draw_point): assertion `GDK_IS_GC (gc)' failed

(d4x:19802): Gdk-CRITICAL **: file gdkdraw.c: line 338 (gdk_draw_point): assertion `GDK_IS_GC (gc)' failed

(d4x:19802): Gdk-CRITICAL **: file gdkgc-x11.c: line 654 (gdk_gc_set_clip_rectangle): assertion `GDK_IS_GC (gc)' failed
Segmentation fault


че делать то

Bek 05.01.2004 12:26

чегото не хватает?
сейчас нет линукса под рукой - точнее сказать не могу.
Но в принципе assert'ы ставят для проверки обычно

ppiitt 05.01.2004 13:02

пересобери d4x.
:rolleyes:

aivs 05.01.2004 18:53

../config.h -O2 -g -pipe -march=i386 -mcpu=i686 -O2 -c -o prefs.o `test -f 'prefs.cc' || echo './'`prefs.cc
prefs.cc: In function `void d4x_prefs_search()':
prefs.cc:813: error: `gtk_radio_menu_item_group' undeclared (first use this
function)
prefs.cc:813: error: (Each undeclared identifier is reported only once for each
function it appears in.)
prefs.cc: In function `void d4x_prefs_apply_tmp()':
prefs.cc:1470: error: `gtk_radio_menu_item_group' undeclared (first use this
function)
make[3]: *** [prefs.o] Error 1
make[3]: Leaving directory `/usr/src/redhat/BUILD/d4x-2.4.1/main/face'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/src/redhat/BUILD/d4x-2.4.1/main'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/redhat/BUILD/d4x-2.4.1'
make: *** [all] Error 2
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.66418 (%build)


Ошибки сборки пакетов:
пользователь build не существует - используется root
группа build не существует - используется root
пользователь build не существует - используется root
группа build не существует - используется root
пользователь build не существует - используется root
группа build не существует - используется root
Неверный код возврата из /var/tmp/rpm-tmp.66418 (%build)
[root@localhost Desktop]#

Добавлено через 1 час и 31 минуту:
segmentation fault вознкает только в gtk2 приложеня
d4x
изредко audacity
gimp-1.3 вообще сдох

подскажте что нужно из gtk2 библиотек перекомпилировать чтоб все работало
а d4x несобирается

Добавлено через 1 час и 12 минут:
у кого никогда не возникал segmentation fault? какой дистр?

ppiitt 05.01.2004 21:42

Либо нет библиотек :
>prefs.cc:813: error: `gtk_radio_menu_item_group' undeclared (first use this
>function)
Либо непрописанны пути к ним. Что у тебя за дистр ?
segmentation fault - это не от дистра обычно зависит, а от проги. Очень вероятно, что ты уже устанавливал собраный бинарник(например из rpm), а нужных либ нет, т.к. d4x не собирается. Отсюда - он и вываливается.

Попробуй поставить все что связанно с gtk из дистра.
Может поможет :)
удачи.

Hubbitus 20.01.2004 04:52

Извините, а что вообще значит ошибка "segmentation fault"? (я так понимаю это распределение памяти!?)

ppiitt 20.01.2004 12:06

Пример:
Массив на char [10] элементов, ты запихиваешь туда 20-ть. Например 'B'.
Стек выглядит так: [наш массив 10 элементов][EIP]
EIP (4 байта) - так называемый адрес возврата.
Когда мы записали 20-ть элементов, буффер переполнился -> т.е. значение EIP перепишется, в нем теперь будет находится 0x42424242.
Теперь когда функция попытается вернуть управление, EIP востанавливается из стека и управление передастся
коду по адрессу 0x42424242 -> отсюда и появляется segmentation fault.

Посмотри в нете, там очень много на эту тему написанно :)
void.ru - есть статьи по написанию эксплоитов и там очень доходчиво все объясняется ;)

Hubbitus 20.01.2004 13:58

Цитата:

Hubbitus:
Теперь когда функция попытается вернуть управление, EIP востанавливается из стека и управление передастся
коду по адрессу 0x42424242 -> отсюда и появляется segmentation fault.
Так и предполагал что это ошибка распределения и/или перполнения. Спасибо за разъяснения, но тогда объясните как выдется эта ошибка?, ведь управление передали по несуществующему адресу (0x42424242) и приложение не может уже работать в нормальном режиме, в .т.ч. обрабатывать ошибки. Наверное это делается на уровне ядра, но откуда "оно знает" что это неправильный адрес? Или ошибка "segmentation fault" именно ошибка переполнения стека (но как же тогда Stack Overflaw)?

ppiitt 20.01.2004 16:27

Функция передает управление в ту часть памяти, куда не имеет досту, ялро увидев это, отсекает.

Hubbitus 21.01.2004 00:52

2ppiitt: спасибо за доходчивое объяснение, держи "пятерку"


Часовой пояс GMT +4, время: 15:54.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.