anonymous@RULINUX.NET~# Last login: 2024-04-19 12:19:29
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

Интересная бага

Обнаружилась очень интересная бага. Суть такова:

Имеется консольная программка(циклическая при определенном вводе); если запустить её в долфине(т.е она будет выполняться в фоне), то после его закрытия родительским процессом становится init и этой программке что-то постоянно попадает на ввод. Следствием из этого является распухание ~/.xsession-errors до неимоверных размеров. У товарища /home забился под завалку.

Проверено на мандриве и генте. Не знаю специфично ли это для кде или долфина.

Проявляется ли данный баг у вас?

Так же возникает вопрос: Зачем stdout фигачить в .xsession-errors? Возможно это специфично только для КДЕ.

Вобщем дискас.

anonymous(*) (2010-01-30 00:21:00)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7

[Ответить на это сообщение]
[#] [Добавить метку] [Редактировать] Ответ на: Интересная бага от anonymous 2010-01-30 00:21:00
avatar
Скрыть

Re: Интересная бага

>Зачем stdout фигачить в .xsession-errors?

а ты уверен что это stdout а не stderr?

//почему вместо багтрекера ты ты решил рассказать об этой теме тут?

anonymous(*)(2010-01-30 00:33:02)

Googlebot/2.1 (+http://www.googlebot.com/bot.html)
[#] [Добавить метку] [Редактировать] Ответ на: Интересная бага от anonymous 2010-01-30 00:21:00
avatar
Скрыть

Re: Интересная бага

А что за прога, как она к иниту удщеряется - это демон что-ли?

HEBECTb_KTO(*)(2010-01-30 00:41:55)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 00:33:02
avatar
Скрыть

Re: Интересная бага

> а ты уверен что это stdout а не stderr?
Да уверен.

> //почему вместо багтрекера ты ты решил рассказать об этой теме тут?
Потому что не знаю в какой багтракер это надо слать. И у меня сложилось впечатление, что "так задумано".

anonymous(*)(2010-01-30 00:49:50)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 00:41:55
avatar
Скрыть

Re: Интересная бага

> А что за прога, как она к иниту удщеряется - это демон что-ли?
Нет не демон, обычная прога с текстовым интерфейсом. После смерти родителя(долфина), её родителем становится инит. разве нет?

Собственно после смены родителя к программе на стандартный ввод сыплется какая-то хренотень, и она забивает .xsession-errors своим выводом. Алсо, кирилическая часть вывода в .xsession-errors отсутствует.

Если нужно могу приложить исходник проги.

anonymous(*)(2010-01-30 00:54:51)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 00:54:51
avatar
Скрыть

Re: Интересная бага

> После смерти родителя(долфина), её родителем становится инит. разве нет?
Дети по идее должны быть убиты в случае смерти их родителя.

> Алсо, кирилическая часть вывода в .xsession-errors отсутствует
А asciiтичная присутствует?

> Если нужно могу приложить исходник проги.
А что, они ещё не выложены нигде?

HEBECTb_KTO(*)(2010-01-30 01:09:15)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 01:09:15
avatar
Скрыть

Re: Интересная бага

> Дети по идее должны быть убиты в случае смерти их родителя.
Вопреки этому прога остается живой, и даже каким-то чудесным образом получает данные на стандартный ввод.

> А asciiтичная присутствует?
Да.

> А что, они ещё не выложены нигде?
Это моя студенческая поделка. Вот ссылка  http://pastebin.ca/1771240

Но думаю тут дело не в качестве кода. На другой системе этот баг воспроизвели с другой программой.

anonymous(*)(2010-01-30 01:22:55)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 01:22:55
avatar
Скрыть

Re: Интересная бага

>> А asciiтичная присутствует?
> Да.
И чо пишет?

Я у себя попробовал программку попроще:

c
#include <stdio.h>
#include <stdlib.h>

void main(void){
long int x=0;
  while(1){
    fprintf(stdout,">> <STDOUT> %d \n",x);
    fprintf(stderr,">> <STDERR> %d \n",x++);
    sleep(1);
  }
}
 

При запуске конком, долфином, круннером и закрытии или прибитии родителя, программка действителбно перевешивается почему-то на init (интересно, если Х-ы закрыть оно продолжит крутиться, видимо?). Видимо так уж положено (типа закрыл долфин - это не значит что всё, что из него пускали должно быть прибито).. Но в .xsession-errors срёт строго только fprintf(stderr,..).

HEBECTb_KTO(*)(2010-01-30 02:41:32)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 02:41:32
avatar
Скрыть

Re: Интересная бага

ну ежели известно то как ядро работает ... после кончины предка, ядро определяет предком незавершенного потомка (а ежели он зациклился, то как завершиться?) процесс инициализации - init. следовательно все переменные окружения и другие специфичные вещи процесс (неприбитый потомок) получает от init. только вот как он получает на вход мусор???

anonymous(*)(2010-01-30 02:56:43)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 02:56:43
avatar
Скрыть

Re: Интересная бага

> после кончины предка, ядро определяет предком незавершенного потомка (а ежели он зациклился, то как завершиться?) процесс инициализации - init.
Да, действительно, блин. Но мне это не нравится..

> как он получает на вход мусор??
Он не получает на вход мусор. Он ловит EOF на попытке чтения stdin и возвращает управление не инициализировав перемунную selection.

Т.е. проверяй не возвращает ли EOF вызов scanf() в функции displayMenu(). Если EOF - видимо надо завешать программу..

HEBECTb_KTO(*)(2010-01-30 03:52:31)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 03:52:31
avatar
Скрыть

Re: Интересная бага

похоже на то. надо будет протестировать :) и если так, то баг все же в программе :) но гадский файл занулить все же стоит :)

anonymous(*)(2010-01-30 04:55:09)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 03:52:31
avatar
Скрыть

Re: Интересная бага

> Он ловит EOF на попытке чтения stdin и возвращает управление не инициализировав перемунную selection.
Остался только 1 вопрос, почему это происходит при смене родителя? Мне на ум приходит, что инит пытается таким образом прибить зациклившегося бедолагу %)

anonymous(*)(2010-01-30 10:37:55)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 10:37:55
avatar
Скрыть

Re: Интересная бага

stdout и stderr направленны в .xsession_errors. stdin направлен в pipe очевидно который заканчивается при кончине предка. наверное как то так? есть еще мнения? кто нибудь в курсе как процесс в линуксе создает потомка, какие вещи наследуются потомком от предка? ну а впрочем проблема решена :) классный форум :)

anonymous(*)(2010-01-30 14:30:12)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 14:30:12
avatar
Скрыть

Re: Интересная бага

> stdout и stderr направленны в .xsession_errors
А у меня почему stdout не перенаправился в .xsession_errors ?

HEBECTb_KTO(*)(2010-01-30 15:37:38)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 15:37:38
avatar
Скрыть

Re: Интересная бага

не знаю с чем это связанно, меня больше интересует куда ведет pipe[:XXX]

anonymous(*)(2010-01-30 15:54:14)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 15:37:38
avatar
Скрыть

Re: Интересная бага

не знаю с чем это связанно, меня больше интересует куда ведет pipe[:XXX]

anonymous(*)(2010-01-30 15:57:35)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 15:57:35
avatar
Скрыть

Re: Интересная бага

> куда ведет pipe[:XXX]
Эт что за пайп?

В любом случае lsof может тебе помочь.

HEBECTb_KTO(*)(2010-01-30 16:22:40)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 15:37:38
avatar
Скрыть

Re: Интересная бага

> А у меня почему stdout не перенаправился в .xsession_errors ?
хз. Я для надежности запускал таким образом ps и vi. Их выхлоп в .xsession_errors присутсвует.

anonymous(*)(2010-01-30 16:25:53)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 16:25:53
avatar
Скрыть

Re: Интересная бага

>> А у меня почему stdout не перенаправился в .xsession_errors ?
> хз. Я для надежности запускал таким образом ps и vi. Их выхлоп в .xsession_errors присутсвует.
Что качается твоей проги, присутствует только stderr.

anonymous(*)(2010-01-30 16:51:27)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 16:22:40
avatar
Скрыть

Re: Интересная бага

user@host ~ $ ls -lai /proc/6573/fd итого 0 46387 dr-x------ 2 user users 0 Янв 30 15:43 . 46069 dr-xr-xr-x 6 user users 0 Янв 30 15:43 .. 46392 lr-x------ 1 user users 64 Янв 30 15:43 0 -> pipe:[46055] 46393 l-wx------ 1 user users 64 Янв 30 15:43 1 -> /home/kaspar/.xsession-errors 46396 lrwx------ 1 user users 64 Янв 30 15:43 11 -> socket:[44993] 46397 lrwx------ 1 user users 64 Янв 30 15:43 16 -> socket:[45092] 46398 lrwx------ 1 user users 64 Янв 30 15:43 17 -> socket:[45044] 46399 lrwx------ 1 user users 64 Янв 30 15:43 18 -> socket:[45045] 46394 l-wx------ 1 user users 64 Янв 30 15:43 2 -> /home/kaspar/.xsession-errors 46395 lr-x------ 1 user users 64 Янв 30 15:43 7 -> /proc/2021/status

id 2021 соответствует kdeinit4: kdeinit4 Running...

насчет pipe это канал связи родительского и дочернего процесса, т.е. у нашей испытуемой программы на вход подается нечто от предка, на мой взгляд так это косяк кедов, почему на stdin не идет /dev/null, а поступает какая то кака от предка, после завершения этого предка, потомок ясен пень будет ловить EOF.

кто согласен что кеды ведут себя в этом плане несколько не адекватно?

anonymous(*)(2010-01-30 17:18:37)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 16:51:27
avatar
Скрыть

Re: Интересная бага

А, я понял куда вывод делся..

Но сперва про пайп. Я программку ту тестовую которую приводил выше, назвал "test_output_program_nah" - ну, по привычке что бы ни с чем не перепутать. Запустил из конка:

  1.  [x3_kto@desktop config]$ ps -efl | grep test_output_program_nah
  2.  0 S x3_kto 13105 13084 0 80 0 - 951 hrtime 12:35 ? 00:00:00 /home/x3_kto/temp/test_output_program_nah
  3.  

Смотрим какие файлы у неё открыты:

  1.  [x3_kto@desktop config]$ lsof -p 13105
  2.  COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  3.  test_outp 13105 x3_kto cwd DIR 8,82 4096 16728085 /home/x3_kto/Documents
  4.  test_outp 13105 x3_kto rtd DIR 9,0 4096 2 /
  5.  test_outp 13105 x3_kto txt REG 8,82 7134 18498071 /home/x3_kto/temp/test_output_program_nah
  6.  test_outp 13105 x3_kto mem REG 9,0 184984 132080 /lib64/ld-2.11.1.so
  7.  test_outp 13105 x3_kto mem REG 9,0 2410232 136530 /lib64/libc-2.11.1.so
  8.  test_outp 13105 x3_kto 0r FIFO 0,6 0t0 5004901 pipe
  9.  test_outp 13105 x3_kto 1w REG 8,82 255598 16728076 /home/x3_kto/.xsession-errors
  10.  test_outp 13105 x3_kto 2w REG 8,82 255598 16728076 /home/x3_kto/.xsession-errors
  11.  test_outp 13105 x3_kto 13u unix 0xffff8801c36f9e00 0t0 5004540 /tmp/ksocket-x3_kto/konquerorW13084.slave-socket
  12.  test_outp 13105 x3_kto 15u unix 0xffff8800a8139e00 0t0 5004794 socket
  13.  test_outp 13105 x3_kto 16u unix 0xffff880126a5fc00 0t0 5004625 /tmp/ksocket-x3_kto/konquerorb13084.slave-socket
  14.  test_outp 13105 x3_kto 17u unix 0xffff8800bbb08000 0t0 5004648 /tmp/ksocket-x3_kto/konquerora13084.slave-socket
  15.  ...
  16.  ...
  17.  

Нулевой дескриптор подключен к пайпу. Это единственный пайп, который она юзает. Смотрим кто юзает FIFO на ус-ве 0,6 которому соответствует inode 5004901:

  1.  [x3_kto@desktop config]$ lsof | grep 'FIFO 0,6' | grep '5004901'
  2.  konqueror 13084 x3_kto 33w FIFO 0,6 0t0 5004901 pipe
  3.  test_outp 13105 x3_kto 0r FIFO 0,6 0t0 5004901 pipe
  4.  

Неудивительно, что на другом конце пайпа болтается конк. Закрываем конк, тестовая программка переходит в собственность инита:

  1.  [x3_kto@desktop config]$ ps -efl | grep test_output_program_nah
  2.  0 S x3_kto 13105 1 0 80 0 - 951 hrtime 12:35 ? 00:00:00 /home/x3_kto/temp/test_output_program_nah
  3.  

Смотрим кто теперь владеет пайпом:

  1.  [x3_kto@desktop config]$ lsof | grep 'FIFO 0,6' | grep '5004901'
  2.  test_outp 13105 x3_kto 0r FIFO 0,6 0t0 5004901 pipe
  3.  

А пайп другим концом ни к чему не подключен. Конк умер, а больше никому и не надо.

Но вот чего непонятно - так это то, что согласно выхлопу lsof выше - у тестовой проги оба дескриптора 1 и 2 подключены к .xsession-errors - т.е. вывод должен идти от обоих fprintf'ов, но я у себя вижу только строчки с <STDERR>. Куда деваются <STDOUT> - видимо буферизуются. Добавил вызов "fflush(stdout);" в тестовый код и теперь вывод обоих fprintf'ов пошёл в .xsession-errors.

Делаю man stdout и читаю там: "The stream stderr is unbuffered. The stream stdout is line-buffered when it points to a terminal. Partial lines will not appear until fflush(3) or exit(3) is called, or a newline is printed." Ничего не понимаю - newline же вроде как printed, а не печатало без флуша. Так что твоя система правильнее работает :)

HEBECTb_KTO(*)(2010-01-30 17:24:20)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 17:18:37
avatar
Скрыть

Re: Интересная бага

> почему на stdin не идет /dev/null, а поступает какая то кака от предка
При жизни предка кака поступает?

HEBECTb_KTO(*)(2010-01-30 17:26:39)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 17:24:20
avatar
Скрыть

Re: Интересная бага

скорее всего такое поведение возникает из-за glibc, кто его разберет как оно срабатывает.

ну, думаю проблема разрешилась окончательно.

ну а коли мы все так дружно к этому приложили усилия, теперь думаю имеет смысл подумать что с этим делать - забить, решить (написать патч) или написать кому-нибудь челобитную. как считаете?

и все же как по мне, так это бага кед. на мой взгляд на stdin проги, должен вешаться /dev/null, что собственно и происходит в dolphin (с предком исследуемой программы). но по какому то разумению, dolphin вешает pipe на вход запускаемой программы. почему??? с какой целью??? вряд ли он мог что то туда послать или нет?

anonymous(*)(2010-01-30 17:44:05)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 17:24:20
avatar
Скрыть

Re: Интересная бага

Интересная тема, пошел экспериментировать.

Id(*)(2010-01-30 17:51:06)

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.6) Gecko/20091216 Iceweasel/3.5.6 (like Firefox/3.5.6; Debian-3.5.6-1)
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 17:26:39
avatar
Скрыть

Re: Интересная бага

несколько не верно выразился. но наличие pipe, который подразумевает обмен информацией, вместо /dev/null вызывает вопросы. у вас нет? может у вас есть ответы на них?

anonymous(*)(2010-01-30 17:54:55)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 17:24:20
avatar
Скрыть

Re: Интересная бага

> оба дескриптора 1 и 2 подключены к .xsession-errors
Вот только зачем это делается мне не понятно, зачем туда направлять stdout. С этого же никакого профита нет, а вот неприятность произойти успела :)

Хотя согласен, что при написании программ стоит учитывать подобное поведение. Только откудаж было об этом узнать..

anonymous(*)(2010-01-30 17:57:20)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 17:44:05
avatar
Скрыть

Re: Интересная бага

> и все же как по мне, так это бага кед. на мой взгляд на stdin проги, должен вешаться /dev/null
Да нет, это как раз не бага. Закрыл родитель пайп - прога твоя получила EOF. Всё по честному. А мусор у тебя потому, что у тебя EOF не обрабатывается - но ведь это легко пофиксить.

И пробуй на упрощённых тесткейсах, типа такого:

c
#include <stdio.h>
#include <stdlib.h>

void main(void){
  char c;
  if(EOF==scanf("%c", &c))printf("-> EOF\n");
  printf("-> %x\n", c);
  fflush(stdout);
  exit(0);
}
 

И увидишь, что у тебя выход из scanf осуществляется при получении EOF, что правильно. А переменная c будет содержать то, что в ней до этого было или мусор - не важно, это по смыслу всё равно мусор раз вместо ввода получен EOF.

HEBECTb_KTO(*)(2010-01-30 17:58:56)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 17:54:55
avatar
Скрыть

Re: Интересная бага

> несколько не верно выразился. но наличие pipe, который подразумевает обмен информацией, вместо /dev/null вызывает вопросы. у вас нет? может у вас есть ответы на них?
Ну тогда программа просто сразу же получит EOF и скорее всего завершится. Зачем это надо, откуда родителю знать - может твоя прога что-то делает в отдельном потоке ожидая ввода с консоли?

HEBECTb_KTO(*)(2010-01-30 18:06:54)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 17:57:20
avatar
Скрыть

Re: Интересная бага

> Вот только зачем это делается мне не понятно, зачем туда направлять stdout.
А куда его девать?

HEBECTb_KTO(*)(2010-01-30 18:08:46)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 18:08:46
avatar
Скрыть

Re: Интересная бага

> А куда его девать?
В /dev/null конечно же. Если кому-нибудь понадобится этот самый stdout, то он его направит куда надо. А так только логи засорять. Тем более из названия .xsession-errrors следует, что там должны хранится всяческие ошибки.

anonymous(*)(2010-01-30 18:14:02)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 17:58:56
avatar
Скрыть

Re: Интересная бага

пофиксилось как только об этом узналось :) но все же несколько не логично с этим stdin. есть какой нибудь материал разъясняющий принципы и механизмы функционирования, а то у себя я таки ни чего не нашел :(

anonymous(*)(2010-01-30 18:28:36)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Интересная бага от anonymous 2010-01-30 00:21:00
avatar
Скрыть

Re: Интересная бага

Странно, что никто до сих пор не сказал, что пользователю в графической оболочке негоже мышью в бинарники тыкать - для этого должен быть приготовлен файл с расширением .desktop и всего-то :)

А вот пихать под нос пользователю бинарники - это windows-way какой-то.

anonymous(*)(2010-01-30 18:31:13)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 18:06:54
avatar
Скрыть

Re: Интересная бага

а так лучше бы она сразу завершилась как только получит EOF, чем на пол пути выполнения каких то операций, какого то потока, лишь от того что предок скончался :) глуповато как то выходит. не считаете?

anonymous(*)(2010-01-30 18:35:41)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 18:31:13
avatar
Скрыть

Re: Интересная бага

психоделика началась :) вот она воля случая. чисто случайно угодив мышью в бинарник хапнул горя, засрал весь хом :)))) и оголились несколько не очевидные но весьма занятные факты :)

anonymous(*)(2010-01-30 18:39:29)

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.14) Gecko/2009110807 Gentoo GranParadiso/3.0.14
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 18:14:02
avatar
Скрыть

Re: Интересная бага

> В /dev/null конечно же. Если кому-нибудь понадобится этот самый stdout, то он его направит куда надо. А так только логи засорять. Тем более из названия .xsession-errrors следует, что там должны хранится всяческие ошибки.
ИМХО выглядит разумно. Или сделать дефолтный редирект конфигурируемым хотя бы. Хотя вопрос почему это сделано именно так, как сделано - остаётся открытым..

HEBECTb_KTO(*)(2010-01-30 18:52:24)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 18:35:41
avatar
Скрыть

Re: Интересная бага

> а так лучше бы она сразу завершилась как только получит EOF, чем на пол пути выполнения каких то операций, какого то потока, лишь от того что предок скончался :) глуповато как то выходит. не считаете?
Не, не считаю.

У проги есть выбор когда завершиться - по скончанию конка/долфина или по какому-то другому событию если ей насрать на EOF. Лог ошибок для того и служит что бы определить что что-то пошло не так (хотя при этом не совсем логично делать файл скрытым, т.е. с именем, начинающимся с точки..) и стандартный вывод тоже должен куда-то протоколироваться, при этом лучше что бы туда же, куда и stderr - а то потом замучаешься определять в какой последовательности у тебя происходил нормальный вывод и вывод ошибок (хотя буферизация, как мы видели выше, тут тоже подкладывает своё западло в моём случае). И надо учитывать, что дочерняя консольная прога может быть небесполезной при запуске таким способом. Консолльная программа может что-то там делать в фоне как например какой-нибудь бэкапный скрипт - тебе с ним не о чем разговаривать, всё что от него нужно - это успешно завершиться. Если этого не произошло - как узнать почему? Смотришь в тот самый файл. И чем больше информации будет в логе - тем легче изолировать проблему. В общем, я бы оставил всё как есть...

HEBECTb_KTO(*)(2010-01-30 19:03:39)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 19:03:39
avatar
Скрыть

Re: Интересная бага

> У проги есть выбор когда завершиться - по скончанию конка/долфина или по какому-то другому событию если ей насрать на EOF.
Сам факт запуска пользователем не графической программы из того же долфина мне кажется не совсем нормальным, т.к является бессмысленным -- пользователь не может в этом случае проконтролировать ход работы программы и даже судить о верном/не верном её завершении. Благо все спроектировано так, что вероятность этого стремится к нулю.

> Лог ошибок для того и служит что бы определить что что-то пошло не так
> и стандартный вывод тоже должен куда-то протоколироваться, при этом лучше что бы туда же, куда и stderr
Мне кажется, там все таки должны храниться ошибки. А для тестирования работы не графической проги(вот только может ли это понадобиться?) stderr и stdout можно направить вместе куда захочется тестеру.

Вкратце: не кошерное поведение пользователя влечет не кошерный отклик системы %)

anonymous(*)(2010-01-30 19:24:18)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 19:03:39
avatar
Скрыть

Re: Интересная бага

> бэкапный скрипт - тебе с ним не о чем разговаривать, всё что от него нужно - это успешно завершиться.
И чтобы знать о ходе работы скрипта, ты бы все равно его запустил в терминале, чем постоянно заглядывать в .xsession-errors :)

Мое мнение такое: не должно происходить вызова не графических прог из графики _пользователем_

anonymous(*)(2010-01-30 19:41:35)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 19:24:18
avatar
Скрыть

Re: Интересная бага

> Сам факт запуска пользователем не графической программы из того же долфина мне кажется не совсем нормальным, т.к является бессмысленным -- пользователь не может в этом случае проконтролировать ход работы программы и даже судить о верном/не верном её завершении. Благо все спроектировано так, что вероятность этого стремится к нулю.
Казалось бы это идеально - одна кнопка (ну иконка) с подписью "сделать зашибись". Ткнул - сделалось зашибись. Никаких тебе окон, никаких лишних отвлекающих внимание от других задач факторов. Если всё не сделалось зашибись - всегда можно узнать причину из протокола. Хочешь "конролировать" строчки, летящие со скоростью 20 экранов в секунду - запускай в терминале. А виндовый подход когда тебе терминальное окошко принудительно открывается на каждый чих - мне меньше нравится. Хотя с другой стороны, так хоть видно, что прога запустилась :)

> Мне кажется, там все таки должны храниться ошибки. А для тестирования работы не графической проги(вот только может ли это понадобиться?) stderr и stdout можно направить вместе куда захочется тестеру.
Ошибки встречаются не только при тестировании системы, а по единственному выхлопу stderr понять что делала прога когда данная ошибка произошла не всегда возможно.

> Вкратце: не кошерное поведение пользователя влечет не кошерный отклик системы %)
Да, это плохо. В идеале система должна как-то обозначить, что она команду поняла и приступила к исполнению, а при возникновении ошибок - как-то привлечь внимание пользователя к ним. Мне кажется, что голосовая озвучка событий тут идеально подошла бы. Ну что стоит сказать в динамики "бэкап запущен", "бэкап успешно завершён", "тоарищ пользователь, разрешите доложить, что при выполнении бэкапа произошла непредвиденная ошибка" и т.п.

> И чтобы знать о ходе работы скрипта, ты бы все равно его запустил в терминале, чем постоянно заглядывать в .xsession-errors :)
А зачем за ним следить? Ну он работает там себе и работает. А оператор должен заниматься своим делом.

> Мое мнение такое: не должно происходить вызова не графических прог из графики _пользователем_
Как минимум для этого должен сначала воскреснуть ОН и разделить проги на графические и неграфические, а проги которые подобно мэплееру могут работать так и так - ниспослать в адЪ.

HEBECTb_KTO(*)(2010-01-30 20:19:05)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 20:19:05
avatar
Скрыть

Re: Интересная бага

> Хочешь "конролировать" строчки, летящие со скоростью 20 экранов в секунду - запускай в терминале
Вот так .xsession-errors и толстеет до неимоверных размеров.

>> Мое мнение такое: не должно происходить вызова не графических прог из графики _пользователем_
> Как минимум для этого должен сначала воскреснуть ОН и разделить проги на графические и неграфические, а проги которые подобно мэплееру могут работать так и так - ниспослать в адЪ.
Никому воскресать для этого не надо, и так вызова пользователем не графических прог из граф. оболочки не происходит. Многие не графические проги уже распиханы по менюхам и запускаются сразу в терминале(htop, octave, etc). И на виду у пользователя бинарники не валяются, чтобы тыкать в них ненароком.

anonymous(*)(2010-01-30 20:45:22)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 20:45:22
avatar
Скрыть

Re: Интересная бага

> Никому воскресать для этого не надо, и так вызова пользователем не графических прог из граф. оболочки не происходит. Многие не графические проги уже распиханы по менюхам и запускаются сразу в терминале(htop, octave, etc). И на виду у пользователя бинарники не валяются, чтобы тыкать в них ненароком.
Ну да. А если пользователю надо запускать неграфическую прогу через меню - он конфигурит меню. Или запускает из конка/долфена, или кладёт на десктоп ссылку на эту прогу. Чо не так?

HEBECTb_KTO(*)(2010-01-30 20:53:11)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 20:45:22
avatar
Скрыть

Re: Интересная бага

психоделы ваш м... начали флудить. трепаться может хватит? решают тут что кашерно, что не очень. решалка не выросла молодые люди :) сами по ходу не вкурсе делов то :)

anonymous(*)(2010-01-30 21:02:31)

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 20:53:11
avatar
Скрыть

Re: Интересная бага

> Чо не так?
Не так только одно: Когда прога в менюхе и запускается в терминале - её активность у пользователя перед глазами. А когда пользователь запускает из конка/долфина её активность не видна и вообще она может вырубиться при закрытии конка/долфина(словить EOF). Даже не факт, что запустилась. И за её активностью придется следить с помощью доп. средств: проверить запущен ли процесс, а потом отслеживать выхлоп в .xsession-errors.

Скрипты без взаимодействия с пользователем хороши для автоматизации(те же бэкапы по крону), но не для пользовательских задач.

anonymous(*)(2010-01-30 21:08:11)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 21:08:11
avatar
Скрыть

Re: Интересная бага

Ну так принудиловки же нет - прогу можно запускать множеством разных способов как тебе удобнее. Нет резона ограничивать в этом пользователей.

HEBECTb_KTO(*)(2010-01-30 21:19:20)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 21:19:20
avatar
Скрыть

Re: Интересная бага

> Нет резона ограничивать в этом пользователей.
Ты просто не совсем правильно меня понял. Я говорил не об ограничении пользователя, а о логическом разделении графики и не графики. И что вероятность проявления сабжевой проблемы(переполнения /home логами) благодаря этому очень мала.

anonymous(*)(2010-01-30 21:41:44)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 21:41:44
avatar
Скрыть

Re: Интересная бага

А логической разницы между ними нет.

HEBECTb_KTO(*)(2010-01-30 22:02:12)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 22:02:12
avatar
Скрыть

Re: Интересная бага

> А логической разницы между ними нет.
Логическое разделение по принципу взаимодействия с пользователем: одни используют терминал, другие - графический интерфейс. И пользователь работает не с бинарниками, а с .desktop-файлами, где уже заранее позаботились о запуске в терминале не графических программ => проблем со взаимодействием с этими программами у пользователя не будет.

anonymous(*)(2010-01-30 22:24:03)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 22:24:03
avatar
Скрыть

Re: Интересная бага

> Логическое разделение по принципу взаимодействия с пользователем: одни используют терминал, другие - графический интерфейс.
А если они и то и другое могут использовать? Например, если $DISPLAY определён и открывается, то какой-нибудь инсталлятор мог бы показывать юзеру графический диалог в то время как будучи запущен в текстовом терминале или с какими-то опциями для работы через консоль - то обеспечивать интерактив в текстовом режиме, а то и вовсе в автоматическом молчаливом. К какой логической группе ты отнёс бы такую программу, гы-гы-гы?

HEBECTb_KTO(*)(2010-01-30 22:37:33)

[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 21:41:44
avatar
Скрыть

Re: Интересная бага

>а о логическом разделении графики и не графики. И что вероятность проявления сабжевой проблемы(переполнения /home логами)
почему я не вижу никакой связи между первым и вторым, и почему у меня в хомяке нет логов(варлог для кого придумали?), а выводы перенаправляются в девнуль? может стоит выпрямить руки? //слака

anonymous(*)(2010-01-30 22:48:56)

Googlebot/2.1 (+http://www.googlebot.com/bot.html)
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от HEBECTb_KTO 2010-01-30 22:37:33
avatar
Скрыть

Re: Интересная бага

> К какой логической группе ты отнёс бы такую программу, гы-гы-гы?
Если можно отнести к обоим группам, то почему бы и нет?

Я, видимо, сегодня очень туманно излагаю мысли. Смысл всех моих опусов сводится вот к чему: Сабжевая проблема была вызвана тем. что пользователь ткнул мышью в не графическую программу и та загадила ему .xsession-errors. Так вот, эта проблема для линукса не актуальна т.к. у сферического пользователя в вакууме не валяются где-попало бинарники и вызов программ осуществляется через .desktop-файлы, а не графические программы лежат на своих местах подальше от шаловливых ручонок пользователя. Вот такое вот разделение.

Утверждение, что "пользователь не должен запускать бинарники напрямую" стоит понимать как "у пользователя не должно возникнуть такой необходимости". Больше не знаю, как разжевать свою мысль :)

anonymous(*)(2010-01-30 23:00:38)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
[#] [Добавить метку] [Редактировать] Ответ на: Re: Интересная бага от anonymous 2010-01-30 22:48:56
avatar
Скрыть

Re: Интересная бага

> и почему у меня в хомяке нет логов(варлог для кого придумали?), а выводы перенаправляются в девнуль?
"Не читал, но осуждаю" (с)

anonymous(*)(2010-01-30 23:03:28)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100110 Mandriva Linux/1.9.1.7-0.1mdv2010.0 (2010.0) Firefox/3.5.7
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!