* [Comm] Segmentation fault @ 2005-12-20 1:36 Dmitry A. Kharitonov 2005-12-19 23:50 ` spider 2005-12-20 8:41 ` [Comm] Re: [Hardware] " Michael Shigorin 0 siblings, 2 replies; 9+ messages in thread From: Dmitry A. Kharitonov @ 2005-12-20 1:36 UTC (permalink / raw) To: Hardware, Community Segmentation fault - что это такое и как с этим бороться? [user@dima Salut_TK]$ ./salut_tk Salut_TK 2.4 (c) AIC 1994-2000 Modifyed by Kharititonov A. Dmitry 2005 usage: salut_tk <Source/slt> <Dest/asm> [user@dima Salut_TK]$ ./salut_tk test.slt test.out Salut_TK 2.4 (c) AIC 1994-2000 Modifyed by Kharititonov A. Dmitry 2005 Segmentation fault [user@dima Salut_TK]$ sudo kudzu Password: Segmentation fault ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Comm] Segmentation fault 2005-12-20 1:36 [Comm] Segmentation fault Dmitry A. Kharitonov @ 2005-12-19 23:50 ` spider 2005-12-20 7:14 ` Dmitry A. Kharitonov ` (2 more replies) 2005-12-20 8:41 ` [Comm] Re: [Hardware] " Michael Shigorin 1 sibling, 3 replies; 9+ messages in thread From: spider @ 2005-12-19 23:50 UTC (permalink / raw) To: ALT Linux Community Dmitry A. Kharitonov wrote: > Segmentation fault - что это такое и как с этим бороться? > Обращение к тем участкам адресного пространства, которое не отображено на реальную память, вызывает исключение процессора SIGSEGV. Это происходит исключительно из-за небрежного программирования. Чаще всего встречается при залезании за границу запрошенного участка памяти, например, при обработке массивов. Есть тулза в дистрибутиве AM 2.4 -- valgrind. Она позволяет оттрассировать программу на предмет небрежного программирования. Бороться в С с SIGSEGV очень просто: -- проверять в обязательном порядке возврат от *всех* системных вызовов; -- это же делать и для своих вызовов: -- аккуратно работать с памятью -- каждому malloc() надо дать по free(). Никогда не вставайте из-за компьютера, если для каждого malloc() не написан его free(), даже поссать не вставайте и даже гуще:-). -- если работаете с массивами, тщательно проверяйте работу на их краях под отладчиком, записывайте адреса, которые Вы виите в отладчике на бумажку, не ленитесь. -- есть дурная манера запустить наскоро собранную программу и получив SIGSEGV лезть в отладчик -- надот в обязательном порядке начать с отладчика -- в этом случае Вы можете не получить SIGSEGV совсем. Вспомним, как от первого в жизни стакана водки или от первой цигарки нас валило на забор и тошнило, так и с программированием -- надо пересилить себя поначалу и получать потом кайф по полной программе от работы под отладчиком. -- часто бывает, что под отладчиком все работает, а без него валится -- это 100 % вылет за границу массива, просто всегда есть запас от нуля до нескольких байт сзади нашего массива, ведь аллокатор нам наливает округляя по машинное слово в большую сторону, за счет чего можно и незаметить как последний байт залетел за линию; -- используйте тулзы типа valgrind для контроля сформированного кода на предмет состояния кучи -- если какая либо библиотека имеет проблемы, что часто бывает, используйте ее очень осторожно, а лучше найдите замену. -- пишите на С в стиле фортрана -- не выпендривайтесь и не экономьте на нажатиях клавиш. Не пишите if((bits=malloc(...))!=NULL). Разбейте это на внятные части, и напишите каждую в своей строке. Не лепите в одну строку скобки, возвраты, брики -- каждому оператору по своей строчке. -- в каждой строке не более одного выражения или оператора -- отладчик работает с отдельными строками исходного кода, а не элементами языка, и Вы просто не сможете остановиться там, где хотите. -- самое главное правило -- ни кусочка кода, который бы Вы не прокачали через отладчик. -- 2 опции -W -Walll -- обязательны. Добейтесь абсолютно чистой компиляции. -- никогда не опускайте того, что язык С позволяет опустить -- всегда все определяйте явно. Особенно это важно для деклараций. Неявные возвраты -- еще одна причина проблем. Все определяйте явно и отдельно. Если у вас даже сотня целых, не перечисляйте их за одним int, а запишите каждый в отдельной строке. Если это Вам трудно -- это просто у Вас плохой редактор. -- забудьте навсегда про оптимизацию -- за всю историю компиляторов для C эта фича работала без ошибок на PC только в Watcom и TopSpeed. Для gcc это вообще не светит. Да и на PC с ее тремя все время занятыми регистрами оптимизация -- просто обман. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Comm] Segmentation fault 2005-12-19 23:50 ` spider @ 2005-12-20 7:14 ` Dmitry A. Kharitonov 2005-12-20 8:49 ` Gleb Stiblo 2005-12-20 15:22 ` [Comm] " Alexey Morsov 2 siblings, 0 replies; 9+ messages in thread From: Dmitry A. Kharitonov @ 2005-12-20 7:14 UTC (permalink / raw) To: ALT Linux Community ..... > не светит. Да и на PC с ее тремя все время занятыми регистрами > оптимизация -- > просто обман. Спасибо за разъяснения. С моей программой все помятно - буду работать над ошибками. А как быть с кудзу? Раньше работало, а теперь нет. Переустаноика ничего не дала. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Comm] Segmentation fault 2005-12-19 23:50 ` spider 2005-12-20 7:14 ` Dmitry A. Kharitonov @ 2005-12-20 8:49 ` Gleb Stiblo 2005-12-20 9:44 ` Genix 2005-12-22 18:58 ` Michael Shigorin 2005-12-20 15:22 ` [Comm] " Alexey Morsov 2 siblings, 2 replies; 9+ messages in thread From: Gleb Stiblo @ 2005-12-20 8:49 UTC (permalink / raw) To: ALT Linux Community On Tue, Dec 20, 2005 at 01:50:31AM +0200, spider wrote: [ skipped ] DAK>>Segmentation fault - что это такое и как с этим бороться? DAK>> s> Обращение к тем участкам адресного пространства, которое не s> отображено на реальную память, вызывает исключение процессора s> SIGSEGV. Это происходит исключительно из-за небрежного s> программирования. Чаще всего встречается при залезании за границу s> запрошенного участка памяти, например, при обработке массивов. s> Есть тулза в дистрибутиве AM 2.4 -- valgrind. Она позволяет оттрассировать s> программу на предмет небрежного программирования. s> Бороться в С с SIGSEGV очень просто: s> -- проверять в обязательном порядке возврат от *всех* системных вызовов; s> -- это же делать и для своих вызовов: s> -- аккуратно работать с памятью -- каждому malloc() надо дать по free(). s> Никогда не вставайте из-за компьютера, если для каждого malloc() не s> написан его free(), даже поссать не вставайте и даже гуще:-). Супер! Всё письмо нужно резать на фортунки! [ skipped много интересного ] Всего, Глеб. -- Gleb Stiblo AKA UlfR <g.stiblo@sam-solutions.net> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Comm] Segmentation fault 2005-12-20 8:49 ` Gleb Stiblo @ 2005-12-20 9:44 ` Genix 2005-12-22 18:58 ` [Comm] " Michael Shigorin 2005-12-22 18:58 ` Michael Shigorin 1 sibling, 1 reply; 9+ messages in thread From: Genix @ 2005-12-20 9:44 UTC (permalink / raw) To: ALT Linux Community Gleb Stiblo wrote: > Супер! Всё письмо нужно резать на фортунки! закинул пока сюда http://wiki.sisyphus.ru/devel/SegmentationFault -- У каждого в башке свои тараканы... ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Comm] Re: Segmentation fault 2005-12-20 9:44 ` Genix @ 2005-12-22 18:58 ` Michael Shigorin 0 siblings, 0 replies; 9+ messages in thread From: Michael Shigorin @ 2005-12-22 18:58 UTC (permalink / raw) To: ALT Linux Community On Tue, Dec 20, 2005 at 12:44:46PM +0300, Genix wrote: > >Супер! Всё письмо нужно резать на фортунки! > закинул пока сюда > http://wiki.sisyphus.ru/devel/SegmentationFault О, спасибо :) -- ---- WBR, Michael Shigorin <mike@altlinux.ru> ------ Linux.Kiev http://www.linux.kiev.ua/ ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Comm] Re: Segmentation fault 2005-12-20 8:49 ` Gleb Stiblo 2005-12-20 9:44 ` Genix @ 2005-12-22 18:58 ` Michael Shigorin 1 sibling, 0 replies; 9+ messages in thread From: Michael Shigorin @ 2005-12-22 18:58 UTC (permalink / raw) To: ALT Linux Community On Tue, Dec 20, 2005 at 10:49:05AM +0200, Gleb Stiblo wrote: > Супер! Всё письмо нужно резать на фортунки! Не, на wiki.sisyphus.ru/devel целиком. -- ---- WBR, Michael Shigorin <mike@altlinux.ru> ------ Linux.Kiev http://www.linux.kiev.ua/ ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Comm] Segmentation fault 2005-12-19 23:50 ` spider 2005-12-20 7:14 ` Dmitry A. Kharitonov 2005-12-20 8:49 ` Gleb Stiblo @ 2005-12-20 15:22 ` Alexey Morsov 2 siblings, 0 replies; 9+ messages in thread From: Alexey Morsov @ 2005-12-20 15:22 UTC (permalink / raw) To: community [-- Attachment #1: Type: text/plain, Size: 705 bytes --] On Tue, Dec 20, 2005 at 01:50:31AM +0200, spider wrote: > Обращение к тем участкам адресного пространства, которое не > отображено на реальную память, вызывает исключение процессора > SIGSEGV. Это происходит исключительно из-за небрежного В мемориз! +1 -- С уважением, Алексей Морсов системный администратор ЗАО "ИК "Риком-Траст" ICQ: 196-766-290 Jabber: samurai@www.fondmarket.ru www.ricom.ru www.fondmarket.ru NP: Music is over :( * svd совсем с ума сошёл.. для отсылки мессаги по асе нажимает C-c C-c <mouse> svd: самое тяжёлое, когда приходится что-то делать в виндах. Самое тяжёлое, что нужно нажимать всякие там C-C, C-V вместо средней кнопки мыши... [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 481 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Comm] Re: [Hardware] Segmentation fault 2005-12-20 1:36 [Comm] Segmentation fault Dmitry A. Kharitonov 2005-12-19 23:50 ` spider @ 2005-12-20 8:41 ` Michael Shigorin 1 sibling, 0 replies; 9+ messages in thread From: Michael Shigorin @ 2005-12-20 8:41 UTC (permalink / raw) To: Hardware, Community On Tue, Dec 20, 2005 at 01:36:08AM +0000, Dmitry A. Kharitonov wrote: > Segmentation fault - что это такое и как с этим бороться? http://www.bitwizard.nl/sig11/ -- ---- WBR, Michael Shigorin <mike@altlinux.ru> ------ Linux.Kiev http://www.linux.kiev.ua/ ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2005-12-22 18:58 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2005-12-20 1:36 [Comm] Segmentation fault Dmitry A. Kharitonov 2005-12-19 23:50 ` spider 2005-12-20 7:14 ` Dmitry A. Kharitonov 2005-12-20 8:49 ` Gleb Stiblo 2005-12-20 9:44 ` Genix 2005-12-22 18:58 ` [Comm] " Michael Shigorin 2005-12-22 18:58 ` Michael Shigorin 2005-12-20 15:22 ` [Comm] " Alexey Morsov 2005-12-20 8:41 ` [Comm] Re: [Hardware] " Michael Shigorin
ALT Linux Community general discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 community community/ http://lore.altlinux.org/community \ mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com public-inbox-index community Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.community AGPL code for this site: git clone https://public-inbox.org/public-inbox.git