Доброго всем дня!
Интересная ошибка, не пойму как она возникает. А собственно происходить следующее. Машина стоит под Debian woody, на ней крутяться apache, ldap, mysql,pgsql,dns. После трех четырех дней работы, если например, стартую ftp localhost, в ответ выдает сабж. отдельно службы перестартовать не пробовал, делел всегда полную перезагрузку, после чего все становилось нормально. Будуть у Вас какие мнения по поводу вышеописанного. С уважением, Р. |
Ужас!! у меня этот Segmentation Fault везде и повсюду.
В Mandrake при работе возникает с любыми прогами. Ну а Debian я так и не смог нормально установить. После dselect начинаеться распаковка пакетов, и бац! dpkg received Segmentation Fault. От чего зависит это ошибка? Подскажите это имеет что либо общего с конфигурацией ПК? |
Интересно? А где вы его досталь, скачали?
|
Segmentation fault возникает тогда, когда прога выходит за пределы памяти, которые ей предоставила ОС. От конфигурации это не зависит, а зависит от программы (точнее ошибок в ней).
Код:
int main(int argc, char *argv[]) { |
Zur0
Раз ты залез немного в программирование, так вот что, у меня это не прокатывает я ввоже 7 символов молчит, а если ввести штук 12 то выдаст Segmentation fault. Как это обьяснить? |
glassMonk
Попробовал и я. Действительно в seg fault падает, не после 4, а после 8 (то есть на 8 мом). Дело в том, что при запуске некой проги (да и отдельной функции), она во-первых, сохраняет адрес возврата. Адрес она сохраняет в первых 4х байтах стека выделенного под эту прогу. Уже за этим участком выделеяется место для остальных переменных (Все локальные переменные хранятся в стеке). Т.е. чтобы выйти за границы стека нужно записать строку длинной размер буффера + 4 байта. Если в данный пример запустить с параметром 4 < x < 8, то просто мы гробим данные, которые пренадлежат адресному пространству функции. Скорее всего мы гробим argc,argv ЗЫ Извини если, что то криво объясняю. Просто сам только недавно увлекся данной темой, и еще много чего не понимаю/понимаю не до конца... [s]Исправлено: Zur0, 20:10 11-08-2003[/s] |
Zur0
Ты попробуй создать массив на 100 елементов и увидиш что переполнение происходит не тогда когда 104 а когда штук 130 и больше. Получается чем больше масив тем больше ты можеш писать в него до вывода этой ошибки. Вот это меня и удивляет. ps. пигиг ты понятно насчет этого не беспокойся. |
glassMonk
Тогда Х.З. ... Может в "програмировании" этот вопрос задать? |
Да понимаю, я через некоторое врямя, эту инфу узнаю точно. Сейчас не очень нужно.
Но спрошу. Слух я топик тогда перемещу в программирование ты разрешаеш? naka Ждем два дня после чего понимаю что НЕТ. И я спрашиваю. |
glassMonk
Кажись разобрался. ГЦЦ по умолчанию выравнивает память по 2 двойным словам (вроде как), отсюда и рост длинны строки с размером буфера, при не кратных 8 числах... [s]Исправлено: Zur0, 17:41 13-08-2003[/s] |
А у меня при запуке игрушки с ЮниксВарь.ру кидает это. Я до этого мою проблему тут описал http://forum.oszone.net/topic.cgi?forum=8&topic=481 более детально. просто чтобы не копировать зря инфу ссылку дал.
|
Время: 18:20. |
Время: 18:20.
© OSzone.net 2001-