* [Comm] Падение программы под 2.6.3x @ 2011-02-28 8:15 Vladimir Karpinsky 2011-02-28 8:30 ` Damir 2011-02-28 8:38 ` REAL 0 siblings, 2 replies; 19+ messages in thread From: Vladimir Karpinsky @ 2011-02-28 8:15 UTC (permalink / raw) To: community Здравствуйте! Случилась такая проблема: есть некая программы, которая компилируется без ошибок, при этом нормально работает под ядрами 2.6.2x (альт 4.x), но падает под 2.6.3x (p5). Причём и то и другое поведение проверено на двух компьютерах: в первом случае --- Десктопы 4.0. и 4.1, а во втором --- АркСервер и какой-то из 5-х десктопов (его сейчас нет под рукой --- точную версию не знаю). Падает так: $ ../BIN/bin2sac par=./b2s.par npts=1024 dt=0.05 < tmp3 > tss > *** stack smashing detected ***: ../BIN/bin2sac terminated > ======= Backtrace: ========= > /lib/libc.so.6(__fortify_fail+0x40)[0xb77110a0] > /lib/libc.so.6(+0xde05a)[0xb771105a] > ../BIN/bin2sac[0x8048e06] > /lib/libc.so.6(__libc_start_main+0xe6)[0xb7649c66] > ../BIN/bin2sac[0x8048731] > ======= Memory map: ======== > 08048000-0804b000 r-xp 00000000 09:03 8345 > /var/srv/home/karp/MTPACKAGE/BIN/bin2sac > 0804b000-0804c000 r-xp 00002000 09:03 8345 > /var/srv/home/karp/MTPACKAGE/BIN/bin2sac > 0804c000-0804d000 rwxp 00003000 09:03 8345 > /var/srv/home/karp/MTPACKAGE/BIN/bin2sac > 0804d000-0806e000 rwxp 00000000 00:00 0 [heap] > b7613000-b7630000 r-xp 00000000 09:01 60881 /lib/libgcc_s.so.1 > b7630000-b7631000 r-xp 0001c000 09:01 60881 /lib/libgcc_s.so.1 > b7631000-b7632000 rwxp 0001d000 09:01 60881 /lib/libgcc_s.so.1 > b7632000-b7633000 rwxp 00000000 00:00 0 > b7633000-b7785000 r-xp 00000000 09:01 58278 /lib/libc-2.11.2.so > b7785000-b7787000 r-xp 00152000 09:01 58278 /lib/libc-2.11.2.so > b7787000-b7788000 rwxp 00154000 09:01 58278 /lib/libc-2.11.2.so > b7788000-b778b000 rwxp 00000000 00:00 0 > b7794000-b7795000 rwxp 00000000 00:00 0 > b7795000-b7796000 r-xp 00000000 00:00 0 [vdso] > b7796000-b77b1000 r-xp 00000000 09:01 58014 /lib/ld-2.11.2.so > b77b1000-b77b2000 r-xp 0001b000 09:01 58014 /lib/ld-2.11.2.so > b77b2000-b77b3000 rwxp 0001c000 09:01 58014 /lib/ld-2.11.2.so > bfc9f000-bfcb4000 rw-p 00000000 00:00 0 [stack] Я не программист чтобы в этом разобраться, более того, автор тоже ничего толком сказать не может. Единственно, что он смог сказать, что у него под Федорой 14 эта программа, скомпилированная gcc 4.5.1, работает нормально, а скомпилировать её gcc весий 3.3.2, 3.3.9 и 4.1.2 он без ошибок не смог. В p5 gcc 4.5.1 нет, поэтому проверить, является ли это проблемой gcc я не могу. В среду-четверг попробую загрузиться на том же компьютере с ядром помладше, чтобы проверить зависимость именно от ядра. На что ещё стоит обратить внимание, какие тесты провести? Программа очень нужна, буду благодарен за любые советы. -- С уважением, Владимир. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 8:15 [Comm] Падение программы под 2.6.3x Vladimir Karpinsky @ 2011-02-28 8:30 ` Damir 2011-02-28 9:48 ` Vladimir Karpinsky 2011-02-28 8:38 ` REAL 1 sibling, 1 reply; 19+ messages in thread From: Damir @ 2011-02-28 8:30 UTC (permalink / raw) To: ALT Linux Community general discussions > Случилась такая проблема: есть некая программы, которая компилируется без > ошибок, при этом нормально работает под ядрами 2.6.2x (альт 4.x), но падает > под 2.6.3x (p5). Причём и то и другое поведение проверено на двух > компьютерах: в первом случае --- Десктопы 4.0. и 4.1, а во втором --- > АркСервер и какой-то из 5-х десктопов (его сейчас нет под рукой --- точную > версию не знаю). Падает так: > Я не программист чтобы в этом разобраться, более того, автор тоже ничего > толком сказать не может. Единственно, что он смог сказать, что у него под > Федорой 14 эта программа, скомпилированная gcc 4.5.1, работает нормально, а > скомпилировать её gcc весий 3.3.2, 3.3.9 и 4.1.2 он без ошибок не смог. В p5 > gcc 4.5.1 нет, поэтому проверить, является ли это проблемой gcc я не могу. В > среду-четверг попробую загрузиться на том же компьютере с ядром помладше, > чтобы проверить зависимость именно от ядра. > > На что ещё стоит обратить внимание, какие тесты провести? Программа очень > нужна, буду благодарен за любые советы. Попробуйте запуститься под valgrind-ом, может он более развернутую информацию покажет. apt-get install valgrind valgrind -v ../BIN/bin2sac par=./b2s.par npts=1024 dt=0.05 < tmp3 > tss Ну и программу желательно собрать с отладочной информацией. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 8:30 ` Damir @ 2011-02-28 9:48 ` Vladimir Karpinsky 0 siblings, 0 replies; 19+ messages in thread From: Vladimir Karpinsky @ 2011-02-28 9:48 UTC (permalink / raw) To: community [-- Attachment #1: Type: text/plain, Size: 233 bytes --] 28.02.2011 11:30, Damir пишет: > Попробуйте запуститься под valgrind-ом, может он более развернутую > информацию покажет. Он действительно дал развёрнутую информацию, но она для меня --- "тёмный лес" -- С уважением, Владимир. [-- Attachment #2: valgrind.log.bz2 --] [-- Type: application/octet-stream, Size: 2536 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 8:15 [Comm] Падение программы под 2.6.3x Vladimir Karpinsky 2011-02-28 8:30 ` Damir @ 2011-02-28 8:38 ` REAL 2011-02-28 9:16 ` Vladimir Karpinsky 1 sibling, 1 reply; 19+ messages in thread From: REAL @ 2011-02-28 8:38 UTC (permalink / raw) To: ALT Linux Community general discussions 28.02.2011 14:15, Vladimir Karpinsky пишет: > $ ../BIN/bin2sac par=./b2s.par npts=1024 dt=0.05 < tmp3 > tss > > *** stack smashing detected ***: ../BIN/bin2sac terminated > > ======= Backtrace: ========= > > /lib/libc.so.6(__fortify_fail+0x40)[0xb77110a0] > На что ещё стоит обратить внимание, какие тесты провести? Программа > очень нужна, буду благодарен за любые советы. Попробуйте задать флаг препроцессора -U_FORTIFY_SOURCE -- REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 8:38 ` REAL @ 2011-02-28 9:16 ` Vladimir Karpinsky 2011-02-28 9:36 ` REAL 2011-02-28 9:38 ` Damir 0 siblings, 2 replies; 19+ messages in thread From: Vladimir Karpinsky @ 2011-02-28 9:16 UTC (permalink / raw) To: ALT Linux Community general discussions 28.02.2011 11:38, REAL пишет: > 28.02.2011 14:15, Vladimir Karpinsky пишет: >> $ ../BIN/bin2sac par=./b2s.par npts=1024 dt=0.05 < tmp3 > tss >> > *** stack smashing detected ***: ../BIN/bin2sac terminated >> > ======= Backtrace: ========= >> > /lib/libc.so.6(__fortify_fail+0x40)[0xb77110a0] > >> На что ещё стоит обратить внимание, какие тесты провести? Программа >> очень нужна, буду благодарен за любые советы. > > Попробуйте задать флаг препроцессора -U_FORTIFY_SOURCE То же самое. Обратил сейчас внимание на различия при компиляции: 4.1, gcc 4.1 $ make cc sac2helm.c -c cc getpar.c -c ... p5, gcc 4.4 $ make cc sac2helm.c -c cc getpar.c -c getpar.c: In function ‘getpar’: getpar.c:518: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘int *’ ... Здесь не могла собака порыться? -- С уважением, Владимир. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 9:16 ` Vladimir Karpinsky @ 2011-02-28 9:36 ` REAL 2011-02-28 9:44 ` Vladimir Karpinsky 2011-02-28 10:08 ` REAL 2011-02-28 9:38 ` Damir 1 sibling, 2 replies; 19+ messages in thread From: REAL @ 2011-02-28 9:36 UTC (permalink / raw) To: ALT Linux Community general discussions 28.02.2011 15:16, Vladimir Karpinsky пишет: >>> $ ../BIN/bin2sac par=./b2s.par npts=1024 dt=0.05 < tmp3 > tss >>> > *** stack smashing detected ***: ../BIN/bin2sac terminated >>> > ======= Backtrace: ========= >>> > /lib/libc.so.6(__fortify_fail+0x40)[0xb77110a0] >> >>> На что ещё стоит обратить внимание, какие тесты провести? Программа >>> очень нужна, буду благодарен за любые советы. >> >> Попробуйте задать флаг препроцессора -U_FORTIFY_SOURCE > > То же самое. Дайте url на исходники. > $ make > cc sac2helm.c -c > cc getpar.c -c > getpar.c: In function ‘getpar’: > getpar.c:518: warning: format ‘%s’ expects type ‘char *’, but argument > 3 has type ‘int *’ > > Здесь не могла собака порыться? Вряд ли, хотя кто знает... -- REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 9:36 ` REAL @ 2011-02-28 9:44 ` Vladimir Karpinsky 2011-02-28 18:46 ` Sergey Vlasov 2011-02-28 10:08 ` REAL 1 sibling, 1 reply; 19+ messages in thread From: Vladimir Karpinsky @ 2011-02-28 9:44 UTC (permalink / raw) To: community 28.02.2011 12:36, REAL пишет: > Дайте url на исходники. http://plkv.gsras.ru/~karp/mtpackage.tar.gz Дальше я пытаюсь выполнить процедуру, описанную в example2/readme. -- С уважением, Владимир. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 9:44 ` Vladimir Karpinsky @ 2011-02-28 18:46 ` Sergey Vlasov 2011-03-01 7:43 ` Vladimir Karpinsky 0 siblings, 1 reply; 19+ messages in thread From: Sergey Vlasov @ 2011-02-28 18:46 UTC (permalink / raw) To: community [-- Attachment #1: Type: text/plain, Size: 2900 bytes --] On Mon, Feb 28, 2011 at 12:44:38PM +0300, Vladimir Karpinsky wrote: > 28.02.2011 12:36, REAL пишет: > > Дайте url на исходники. > > http://plkv.gsras.ru/~karp/mtpackage.tar.gz > > Дальше я пытаюсь выполнить процедуру, описанную в example2/readme. make CFLAGS="-g -O2" немедленно указывает на место ошибки: cc bin2sac.c -c -g -O2 In file included from /usr/include/stdio.h:912:0, from bin2sac.c:2: In function ‘sprintf’, inlined from ‘main’ at bin2sac.c:20:8: /usr/include/bits/stdio2.h:34:3: error: call to __builtin___sprintf_chk will always overflow destination buffer In function ‘sprintf’, inlined from ‘main’ at bin2sac.c:21:8: /usr/include/bits/stdio2.h:34:3: error: call to __builtin___sprintf_chk will always overflow destination buffer make: *** [bin2sac.o] Ошибка 1 char chd[8][24], ename[16], sname[8]; ... for(i=0;i<8;i++) sprintf(chd[i],"-12345 -12345 -12345 "); sprintf(ename,"-12345 -12345 "); sprintf(sname,"-12345 "); ... sprintf(chd[0],"%-8s%-16s",sname,ename); При выделении места под строки забыли про завершающий '\0'. Затычка: --- bin2sac.c.orig 2011-02-09 04:16:23.000000000 +0300 +++ bin2sac.c 2011-02-28 21:24:11.179999993 +0300 @@ -10,7 +10,7 @@ main(ac,av) int i, npts, year, jday, hour, min, sec, msec, ihd[40]; float dt, B=0.0, E, fhd[70], *tr, evla, evlo, stla, stlo, dist; float azi, bazi, cmpaz, cmpinc; - char chd[8][24], ename[16], sname[8]; + char chd[8+1][24], ename[16+1], sname[8+1]; /* Initialize Header */ Однако это не избавляет от попадания '\0' в chd[1][0] после выполнения sprintf(chd[0],"%-8s%-16s",sname,ename); - это лечится только переписыванием кода, как и возможность переполнения буферов ename и sname в случае неверных входных данных. К сожалению, такие переполнения буферов в стеке (на 1 байт) valgrind не ловит - срабатывает только проверка при возврате из функции, включаемая опцией -fstack-protector (в ALT эта опция включена по умолчанию), когда уже сложно установить, в каком именно месте функции произошло переполнение буфера. Однако при включении оптимизации (-O2) начинает работать опция -D_FORTIFY_SOURCE=2 (также используется в ALT по умолчанию); в данном случае проблема обнаруживается ещё при компиляции, в других случаях возможен аварийный останов при выполнении. Добавление exit(0) просто отключает проверку при возврате из main(), поскольку этот возврат уже не выполняется. Лучше вместо этого написать хотя бы return 0 (о проверке результатов write() в данном случае, похоже, мечтать уже не приходится). Ну и стоило бы ткнуть авторов носом в результаты сборки с CFLAGS="-g -O2 -Wall -W" - наличие предупреждений вида warning: 'quiet' is used uninitialized in this function (даже не may be used uninitialized, а именно is used uninitialized) не внушает уверенности в правильности работы этого кода. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 18:46 ` Sergey Vlasov @ 2011-03-01 7:43 ` Vladimir Karpinsky 0 siblings, 0 replies; 19+ messages in thread From: Vladimir Karpinsky @ 2011-03-01 7:43 UTC (permalink / raw) To: community 28.02.2011 21:46, Sergey Vlasov пишет: > make CFLAGS="-g -O2" немедленно указывает на место ошибки: ... Спасибо! Теперь мне надо как-то это перевести на английский, да так чтобы втолковать авторам. Буду пробовать... К сожалению даже это не всё. Судя по всему они ещё где-то с математикой накосячили, потому что ответ не сходится :-(. Ничего умнее, как скомпилировать gcc 4.5.1 посоветовать не могут --- мол только с этим компилятором у них всё хорошо. Вопрос следующий: насколько я вижу 4.5.1 есть только в Сизифе, насколько сложно его оттуда поставить, много ли потянет, надо ли пересобирать? -- С уважением, Владимир. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 9:36 ` REAL 2011-02-28 9:44 ` Vladimir Karpinsky @ 2011-02-28 10:08 ` REAL 2011-02-28 10:31 ` Vladimir Karpinsky 1 sibling, 1 reply; 19+ messages in thread From: REAL @ 2011-02-28 10:08 UTC (permalink / raw) To: ALT Linux Community general discussions 28.02.2011 15:36, REAL пишет: > 28.02.2011 15:16, Vladimir Karpinsky пишет: >>>> $ ../BIN/bin2sac par=./b2s.par npts=1024 dt=0.05 < tmp3 > tss >>>> > *** stack smashing detected ***: ../BIN/bin2sac terminated >>>> > ======= Backtrace: ========= >>>> > /lib/libc.so.6(__fortify_fail+0x40)[0xb77110a0] Скачал файл, сделал ему make, перешёл в example2, ошибок нет. В файле tss собрались всяческие бинарные данные. -- REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 10:08 ` REAL @ 2011-02-28 10:31 ` Vladimir Karpinsky 2011-02-28 11:37 ` REAL 0 siblings, 1 reply; 19+ messages in thread From: Vladimir Karpinsky @ 2011-02-28 10:31 UTC (permalink / raw) To: community 28.02.2011 13:08, REAL пишет: > 28.02.2011 15:36, REAL пишет: >> 28.02.2011 15:16, Vladimir Karpinsky пишет: >>>>> $ ../BIN/bin2sac par=./b2s.par npts=1024 dt=0.05 < tmp3 > tss >>>>> > *** stack smashing detected ***: ../BIN/bin2sac terminated >>>>> > ======= Backtrace: ========= >>>>> > /lib/libc.so.6(__fortify_fail+0x40)[0xb77110a0] > > Скачал файл, сделал ему make, перешёл в example2, ошибок нет. В файле tss > собрались всяческие бинарные данные. "Всё страньше и страньше" (с). Пойдём с другой стороны: может ли моя проблема вылезти из слобосильности компьютеров? В обоих случаях, где я наблюдаю проблемы стоят компьютеры с 0.5Гб оперативной памяти, с процессором Sempron или Celeron, т.е. оба процессора слегка неполноценные. Это, конечно, странно, но я теперь совсем не понимаю за что хвататься... Если нетрудно, выложите, пожалуйста куда-нибудь получившиеся бинарники (или в личку). -- С уважением, Владимир. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 10:31 ` Vladimir Karpinsky @ 2011-02-28 11:37 ` REAL 2011-02-28 11:39 ` REAL 2011-02-28 12:04 ` Vladimir Karpinsky 0 siblings, 2 replies; 19+ messages in thread From: REAL @ 2011-02-28 11:37 UTC (permalink / raw) To: ALT Linux Community general discussions 28.02.2011 16:31, Vladimir Karpinsky пишет: >>>>>> $ ../BIN/bin2sac par=./b2s.par npts=1024 dt=0.05 < tmp3 > tss >>>>>> > *** stack smashing detected ***: ../BIN/bin2sac terminated >>>>>> > ======= Backtrace: ========= >>>>>> > /lib/libc.so.6(__fortify_fail+0x40)[0xb77110a0] >> >> Скачал файл, сделал ему make, перешёл в example2, ошибок нет. В >> файле tss >> собрались всяческие бинарные данные. > > "Всё страньше и страньше" (с). > > Пойдём с другой стороны: может ли моя проблема вылезти из > слобосильности компьютеров? Не, это я на автомате добавил недостающее, и как-то сразу забыл (сейчас со всех сторон моего внимания требуют). В общем, попробуйте в конец функции main добавить exit(0); потом make потом пробуйте пример -- REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 11:37 ` REAL @ 2011-02-28 11:39 ` REAL 2011-02-28 12:04 ` Vladimir Karpinsky 1 sibling, 0 replies; 19+ messages in thread From: REAL @ 2011-02-28 11:39 UTC (permalink / raw) To: ALT Linux Community general discussions 28.02.2011 17:37, REAL пишет: > Не, это я на автомате добавил недостающее, и как-то сразу забыл > (сейчас со всех сторон моего внимания требуют). > > В общем, попробуйте в конец функции main добавить exit(0); Речь про bin2sac.c -- REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 11:37 ` REAL 2011-02-28 11:39 ` REAL @ 2011-02-28 12:04 ` Vladimir Karpinsky 2011-02-28 12:55 ` REAL 1 sibling, 1 reply; 19+ messages in thread From: Vladimir Karpinsky @ 2011-02-28 12:04 UTC (permalink / raw) To: community 28.02.2011 14:37, REAL пишет: > 28.02.2011 16:31, Vladimir Karpinsky пишет: >>>>>>> $ ../BIN/bin2sac par=./b2s.par npts=1024 dt=0.05 < tmp3 > tss >>>>>>> > *** stack smashing detected ***: ../BIN/bin2sac terminated >>>>>>> > ======= Backtrace: ========= >>>>>>> > /lib/libc.so.6(__fortify_fail+0x40)[0xb77110a0] >>> >>> Скачал файл, сделал ему make, перешёл в example2, ошибок нет. В >>> файле tss >>> собрались всяческие бинарные данные. >> > Не, это я на автомате добавил недостающее, и как-то сразу забыл (сейчас со > всех сторон моего внимания требуют). > > В общем, попробуйте в конец функции main добавить exit(0); > потом make > потом пробуйте пример Спасибо! Я бы с этим до конца дней своих бы ковырялся... Действительно вылет не случился, сейчас со смыслом результата буду разбираться. Пока вижу, что Файлы tss получились в обоих случаях идентичными. Вопрос на будущее: почему в разных системах ЭТО обрабатывается по-разному? Повторюсь я не программист, поэтому не в курсе, но хотелось бы понять: отсутствие exit --- это ошибка? Почему она проявляется в одних условиях, и не проявляется в других? Ещё раз огромное спасибо! -- С уважением, Владимир. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 12:04 ` Vladimir Karpinsky @ 2011-02-28 12:55 ` REAL 2011-02-28 13:01 ` Vladimir Karpinsky 2011-02-28 14:03 ` Yura Kalinichenko 0 siblings, 2 replies; 19+ messages in thread From: REAL @ 2011-02-28 12:55 UTC (permalink / raw) To: ALT Linux Community general discussions 28.02.2011 18:04, Vladimir Karpinsky пишет: > Действительно вылет не случился, сейчас со смыслом результата буду > разбираться. Пока вижу, что Файлы tss получились в обоих случаях > идентичными. > > Вопрос на будущее: почему в разных системах ЭТО обрабатывается > по-разному? Это уже к создателям программы. > Повторюсь я не программист, поэтому не в курсе, но > хотелось бы понять: отсутствие exit --- это ошибка? Почему она > проявляется в одних условиях, и не проявляется в других? Программа должна корректно завершаться, а это exit. Без него приходит злобный segfault. А если функция не main, тогда exit нужно использовать осторожно, если это действительно нужно (например, ошибка в самой программе, и тут её нужно лечить). -- REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 12:55 ` REAL @ 2011-02-28 13:01 ` Vladimir Karpinsky 2011-02-28 14:57 ` REAL 2011-02-28 14:03 ` Yura Kalinichenko 1 sibling, 1 reply; 19+ messages in thread From: Vladimir Karpinsky @ 2011-02-28 13:01 UTC (permalink / raw) To: community 28.02.2011 15:55, REAL пишет: > 28.02.2011 18:04, Vladimir Karpinsky пишет: >> Вопрос на будущее: почему в разных системах ЭТО обрабатывается >> по-разному? > > Это уже к создателям программы. Это я им отпишу, конечно. >> Повторюсь я не программист, поэтому не в курсе, но >> хотелось бы понять: отсутствие exit --- это ошибка? Почему она >> проявляется в одних условиях, и не проявляется в других? > > Программа должна корректно завершаться, а это exit. Без него приходит > злобный segfault. А если функция не main, тогда exit нужно использовать > осторожно, если это действительно нужно (например, ошибка в самой > программе, и тут её нужно лечить). Понятно, т.е. имеется явная ошибка программиста. А насчёт разного поведения на разных ядрах: правильно ли я понимаю, что на более новых ядрах таким образом усилена защита от возможного segfault'а? -- С уважением, Владимир. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 13:01 ` Vladimir Karpinsky @ 2011-02-28 14:57 ` REAL 0 siblings, 0 replies; 19+ messages in thread From: REAL @ 2011-02-28 14:57 UTC (permalink / raw) To: ALT Linux Community general discussions 28.02.2011 19:01, Vladimir Karpinsky пишет: >> Программа должна корректно завершаться, а это exit. Без него приходит >> злобный segfault. А если функция не main, тогда exit нужно использовать >> осторожно, если это действительно нужно (например, ошибка в самой >> программе, и тут её нужно лечить). > > Понятно, т.е. имеется явная ошибка программиста. да. код возврата отличный от 0 имеет смысл при использовании в shell-скриптах. в иных случаях нужно в консерватории дезинфекцию проводить. -- REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 12:55 ` REAL 2011-02-28 13:01 ` Vladimir Karpinsky @ 2011-02-28 14:03 ` Yura Kalinichenko 1 sibling, 0 replies; 19+ messages in thread From: Yura Kalinichenko @ 2011-02-28 14:03 UTC (permalink / raw) To: ALT Linux Community general discussions REAL пишет: > > Программа должна корректно завершаться, а это exit. Неправда. Программа не обязана явно завершаться exit(). Имеется рекомендация завершать по return(0), но она не обязательна. См., напр., Википедия "Си (язык программирования)" > Без него приходит злобный segfault. Если он приходит по выходу - скорее всего накосячено было раньше где-то со стеками/буферами/кучами. А это - лишь симптом болезни, лечить надо в другом месте. -- SY, Yura Kalinichenko ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Comm] Падение программы под 2.6.3x 2011-02-28 9:16 ` Vladimir Karpinsky 2011-02-28 9:36 ` REAL @ 2011-02-28 9:38 ` Damir 1 sibling, 0 replies; 19+ messages in thread From: Damir @ 2011-02-28 9:38 UTC (permalink / raw) To: ALT Linux Community general discussions > Обратил сейчас внимание на различия при компиляции: > > 4.1, gcc 4.1 > > $ make > cc sac2helm.c -c > cc getpar.c -c > ... > > > > p5, gcc 4.4 > > $ make > cc sac2helm.c -c > cc getpar.c -c > getpar.c: In function ‘getpar’: > getpar.c:518: warning: format ‘%s’ expects type ‘char *’, but argument 3 has > type ‘int *’ > ... > > Здесь не могла собака порыться? Вполне могла, смотря куда пишется этот самый printf - если используется что-то вроде sprintf, то вполне может и переполнение буфера произойти. ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2011-03-01 7:43 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-02-28 8:15 [Comm] Падение программы под 2.6.3x Vladimir Karpinsky 2011-02-28 8:30 ` Damir 2011-02-28 9:48 ` Vladimir Karpinsky 2011-02-28 8:38 ` REAL 2011-02-28 9:16 ` Vladimir Karpinsky 2011-02-28 9:36 ` REAL 2011-02-28 9:44 ` Vladimir Karpinsky 2011-02-28 18:46 ` Sergey Vlasov 2011-03-01 7:43 ` Vladimir Karpinsky 2011-02-28 10:08 ` REAL 2011-02-28 10:31 ` Vladimir Karpinsky 2011-02-28 11:37 ` REAL 2011-02-28 11:39 ` REAL 2011-02-28 12:04 ` Vladimir Karpinsky 2011-02-28 12:55 ` REAL 2011-02-28 13:01 ` Vladimir Karpinsky 2011-02-28 14:57 ` REAL 2011-02-28 14:03 ` Yura Kalinichenko 2011-02-28 9:38 ` Damir
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