Начало пути Windows, история, конкуренты, термины, флуд.

Перенос из темы «Google Android как средство завоевания мира»
 
1 2 3 4

Mishka

модератор
★★★
digger> CD.CDBurner XP при всовывании уже записанного диска вешает весь ГУЙ.Другой способ - манипуляции с сетью , точно не помню,но таймаут сети в некоторых случаях тоже вешает ось.

Это что ты имеешь ввиду? Имеено такую программку? Или дефолтную программку из ХРюши? Или вообще прожигалку?

В общем случае причина проста — там в драйвере наляпано. Вышли на какой уровень IRQL и ждут. А все нижние не могут пробится. Но это от того, что на уровне защиты 0 можно делать всё, что захочешь. В том числе и маски закрыть, и выдать cli; halt.

Кстати, у меня с Нейрой таких проблем не было ни разу. Суй любой, считывай данные по диску (общие, сессионные и т.д.). Если он писать собрался, то ругается сразу, что диск не пустой и выбрасывает.
 7.0.17.0.1

Mishka

модератор
★★★
AXT> Захомячить все хэндлы, например. Пул-то общий, а не индивидуальный для каждой программы.
Хм, линь тоже повисает (практически), если захомячит всю память со свопом. Делается на ура — в программке хомячишь память, пока дают. Потом запускаешь изнутри ещё раз свой образ. И так без конца. Лимиты только на юзверя помогают. На процесс — нет. Можно вообще, как daemon-у сработать — отрубиться от терминалов и лидеров, запустить себя в цепочке два раза, а предыдущим родителям выйти. :)
 7.0.17.0.1
Это сообщение редактировалось 02.12.2011 в 00:34
+
-
edit
 

HolyBoy

аксакал

Mishka> Лимиты только на юзверя помогают. На процесс — нет.

Ты про ulimit? Пробовал cgroups?
 

AXT

инженер вольнодумец
★☆
AXT>> Захомячить все хэндлы, например. Пул-то общий, а не индивидуальный для каждой программы.
Mishka> Хм, не повисает, вроде.

Да не, дохнет. Вот пример:

code python
  1. print "Здесь рыбы нет"


Код косячный, но я под винапи уже лет 7 не писал, не помню, как там правильно жрать хендлы.

Запустил — винда жила несколько секунд, потом скозявило.
... так пускай наступает на нас холодным рассветом новый день ...  8.0.18.0.1
Это сообщение редактировалось 02.12.2011 в 23:55

AXT

инженер вольнодумец
★☆
Mishka> Лимиты только на юзверя помогают. На процесс — нет.

Хех, дырка :) Чесслово, чем дальше, тем больше убеждаюсь в том, что любую программу надо исполнять в песочнице. Ибо нефиг.
... так пускай наступает на нас холодным рассветом новый день ...  8.0.18.0.1
+
-
edit
 

Mishka

модератор
★★★
HolyBoy> Ты про ulimit? Пробовал cgroups?

Хм, у меня всегда было ощущение, что это поддержка виртуализации через лёгкие нити. Или сейчас уже можно создать произвольную группу и ей ограничить?
 7.0.17.0.1

Mishka

модератор
★★★
AXT> Хех, дырка :) Чесслово, чем дальше, тем больше убеждаюсь в том, что любую программу надо исполнять в песочнице. Ибо нефиг.
Да я случайно вышел. :) У нас была проблемка по ulimit — клиент выставлял. Ну я и написал программку, которая хватает доступную память и говорит, когда облом наступает. Ни данные в скрипт, который собирал инфу типа посмортема. Ну и один раз скрип немного зациклило при отладке. :) Усё присело. И новую сессию ssh/telnet не создать, хотя пинговалось. Ну, а дальше понятно.
 7.0.17.0.1
+
-
edit
 

HolyBoy

аксакал

Mishka> Хм, у меня всегда было ощущение, что это поддержка виртуализации через лёгкие нити.

Не-а.
Т.е., раньше, может быть и было таковым, но сейчас…

CONFIG_CGROUPS:
This option adds support for grouping sets of processes together,for use with process control subsystems such as Cpusets, CFS, memory controls or device isolation.
 


Mishka> Или сейчас уже можно создать произвольную группу и ей ограничить?


Есть костыль:
dev-libs/libcgroup
Homepage: Libcg - Library for Control Groups
Description: Tools and libraries to configure and manage kernel control groups
 


В состав входит пара демонов. Один из них создаёт группы и точки монтирования для подключения соответствующим подсистемам:
code text
  1. group daemons/www {
  2.         perm {
  3.                 task {
  4.                         uid = root;
  5.                         gid = webmaster;
  6.                 }
  7.                 admin {
  8.                         uid = root;
  9.                         gid = root;
  10.                 }
  11.         }
  12.         cpu {
  13.                 cpu.shares = 1000;
  14.         }
  15. }
  16.  
  17. mount {
  18.   cpu = /cgroup/cpu;
  19. }


Второй, соответственно, распределяет по ним процессы:
code text
  1. #<user>         <controllers>   <destination>
  2. #
  3. john          cpu              daemons/www


В общем, неплохо.
 

digger

аксакал

Нечестно,это злонамеренно,даже проще сожрать память.У меня на VMWare таким способом вешается часто.CDBurner XP - так программа и называется.Неважно,что она криво написана, она незлонамеренная ,а вешает.
 3.6.83.6.8

AXT

инженер вольнодумец
★☆
digger> Нечестно,это злонамеренно,даже проще сожрать память.

Это демонстрация того, что винда укладывается любой программой с самыми зажатыми правами. НекоторуюФункциюВинАПИ имеют право вызывать все.
... так пускай наступает на нас холодным рассветом новый день ...  8.0.18.0.1
Это сообщение редактировалось 02.12.2011 в 23:56
RU D.Vinitski #02.12.2011 02:56  @Sandro#02.12.2011 02:38
+
-
edit
 

D.Vinitski

филин-стратег
★★
Чего реально бесит в Windows, так это придуманный с 95-го "горячий старт", когда нерабочая ещё по сути, система, выглядит запустившейся и готовой к работе.
 
EE Татарин #02.12.2011 07:48  @Sandro#01.12.2011 23:26
+
-
edit
 

Татарин

координатор
★★★★☆
digger>>> Не только так,и даже сейчас есть 101 сравнительно честный способ подвесить Windows.
Татарин>> Например?
AXT> Захомячить все хэндлы, например. Пул-то общий, а не индивидуальный для каждой программы.
Да, согласен, не подумал. Совсем уж плохой косяк у МС.
...А неубитые медведи делили чьи-то шкуры с шумом. Боюсь, мы поздно осознали, к чему всё это приведёт.  15.0.874.12115.0.874.121
+
-
edit
 

Balancer

администратор
★★★★★
Kuznets> Разве многозадачности у вин 3.1 не было? Имхо была. Какая же тогда "оболочка".

Многозадачность и у всяких DesqView была. Я даже пользовался :)

Kuznets> Пс имхо и виртуальная память была, фигасе "оболочка" :)

И своп у DV был.
 
RU Balancer #02.12.2011 08:35  @Татарин#01.12.2011 20:11
+
-
edit
 

Balancer

администратор
★★★★★
digger>> Не только так,и даже сейчас есть 101 сравнительно честный способ подвесить Windows.
Татарин> Например?

Вывести модальное окно и блокировать его события?

Не скажу про нарочно, но случайно такое регулярно бывает. Приходится время от времени перегружаться из-за "заклинивания" GUI...
 
+
-
edit
 

Balancer

администратор
★★★★★
Mishka> Хм, линь тоже повисает (практически), если захомячит всю память со свопом. Делается на ура — в программке хомячишь память, пока дают.

ulimits не используешь? ССЗБ :)

Mishka> Лимиты только на юзверя помогают. На процесс — нет.

Как это? Сожрал процесс больше памяти, чем выделено на него — умер. Регулярно такое бывает.

На Авиапорте приходится особо жёстко за этим следить. Там всего 8Гб ОЗУ и Апач. Одно время память быстро исчерпывалась из-за размножения процессов под нагрузкой, пока лимиты не подкрутил.
 
+
-
edit
 

Mishka

модератор
★★★
Balancer> ulimits не используешь? ССЗБ :)

Я же говорю — на процесс не помогает.

Balancer> Как это? Сожрал процесс больше памяти, чем выделено на него — умер. Регулярно такое бывает.

А бывает просто — когда просишь память, а тебе не дают, то умирать не обязательно, можно запустить другой процесс, который откушает ещё. Я н С++ писал, там try/catch или с no exeption запрашиваешь (в С можно malloc результат и сигналы перехватить). Если предварительно отсоединится от терминала и лидера группы с закрытием stdin, stdout, stderr(т.е. сделать полный daemon), то там ещё интереснее.
 
RU Спокойный_Тип #02.12.2011 23:24  @Mishka#02.12.2011 09:50
+
-
edit
 
интересный эффект
я правильно понял что max memory size в ulimit действует не на все процессы владельцем которых является пользователь, а на каждый по отдельности?
тогда темболее надо max user processes в ulimit ограничение ставить, не только для защиты от кривых скриптов - форкбомб, но и что бы
max user processes х max memory size не заваливало систему
 8.08.0
US Mishka #03.12.2011 05:20  @спокойный тип#02.12.2011 23:24
+
-
edit
 

Mishka

модератор
★★★
Спокойный_Тип> интересный эффект
Спокойный_Тип> я правильно понял что max memory size в ulimit действует не на все процессы владельцем которых является пользователь, а на каждый по отдельности?

Обычно per process. Смотри -v, -m, -d опции (ну или можно глянуть setrlimit/getrlimit — RLIMIT_RSS, ).
code text
  1. Gentoo-11 mnt # ulimit -a
  2. core file size          (blocks, -c) 0
  3. data seg size           (kbytes, -d) unlimited
  4. scheduling priority             (-e) 0
  5. file size               (blocks, -f) unlimited
  6. pending signals                 (-i) 31239
  7. max locked memory       (kbytes, -l) 64
  8. max memory size         (kbytes, -m) unlimited
  9. open files                      (-n) 1024
  10. pipe size            (512 bytes, -p) 8
  11. POSIX message queues     (bytes, -q) 819200
  12. real-time priority              (-r) 0
  13. stack size              (kbytes, -s) 8192
  14. cpu time               (seconds, -t) unlimited
  15. max user processes              (-u) 31239
  16. virtual memory          (kbytes, -v) unlimited
  17. file locks                      (-x) unlimited


Спокойный_Тип> тогда темболее надо max user processes в ulimit ограничение ставить, не только для защиты от кривых скриптов - форкбомб, но и что бы
Надо, но не всегда можно на практике.

Спокойный_Тип> max user processes х max memory size не заваливало систему
 
RU Спокойный_Тип #03.12.2011 15:29  @Mishka#03.12.2011 05:20
+
-
edit
 
Mishka> Надо, но не всегда можно на практике.
согласен, из того что я вижу постоянно -

если поднят оракл то кроме листенера и собстенно инстанцев - разработчики обязательно всяческих скриптов в кроне наклепают на перле\шелле реализующих интерфейсы с другими системами , и всё это под оракловыми правами запускают ,HTMLDB опять же
а попробуй наложи на оракловую учетку ограничения жесткие ))

code text
  1. root@emsslx02:~# su - oracle
  2. emsslx02:~$ ulimit -a
  3. core file size        (blocks, -c) 0
  4. data seg size         (kbytes, -d) unlimited
  5. file size             (blocks, -f) unlimited
  6. max locked memory     (kbytes, -l) 4
  7. max memory size       (kbytes, -m) unlimited
  8. open files                    (-n) 65536
  9. pipe size          (512 bytes, -p) 8
  10. stack size            (kbytes, -s) 10240
  11. cpu time             (seconds, -t) unlimited
  12. max user processes            (-u) 16384
  13. virtual memory        (kbytes, -v) unlimited
  14. emsslx02:~$
 8.08.0
RU Dem_anywhere #04.12.2011 13:14  @Mishka#02.12.2011 00:03
+
-
edit
 

Dem_anywhere

аксакал
★☆

Mishka> Кстати, у меня с Нейрой таких проблем не было ни разу. Суй любой, считывай данные по диску (общие, сессионные и т.д.). Если он писать собрался, то ругается сразу, что диск не пустой и выбрасывает.
Зато она на бедовых дисках виснет. Когда данные при считывании не читаются...
 3.6.243.6.24

Mishka

модератор
★★★
Dem_anywhere> Зато она на бедовых дисках виснет. Когда данные при считывании не читаются...
Не виснет. Читает долго. Только из-за того, что настройки такие. Убери возмозность медленного чтения и разреши игнорировать ошибки и всё в норме.
 
RU Dem_anywhere #05.12.2011 11:14  @Mishka#05.12.2011 01:25
+
-
edit
 

Dem_anywhere

аксакал
★☆

Mishka> Не виснет. Читает долго.
Дело не в том, что долго читает, а что во время этого вся система колом встаёт.
 3.6.243.6.24

Mishka

модератор
★★★
Dem_anywhere> Дело не в том, что долго читает, а что во время этого вся система колом встаёт.

А чего удивительного? Если драйвера почти везде имеют непрерываемое состояние? Немножко руки кривые у драйверописателей. Уж на что у фряшников и линуксистов это дело лучше поставлено, но и там есть такое. В более microlocking виде, но есть. Если интересно, можешь поиграться с NFS и некорыми параметрами монтировки. :)
 

digger

аксакал

>любой программой с самыми зажатыми правами. НекоторуюФункциюВинАПИ имеют право вызывать все.

В области количества ресурсов нет 100% решения : или давать попроцессно,тогда меньше ресурсов на процесс,или на всех, тогда зависание.А вдруг эта самая программа важная, требует реально много ресурсов и должна по замыслу бежать одна?
 3.6.83.6.8
+
+1
-
edit
 

Mishka

модератор
★★★
digger> В области количества ресурсов нет 100% решения : или давать попроцессно,тогда меньше ресурсов на процесс,или на всех, тогда зависание.А вдруг эта самая программа важная, требует реально много ресурсов и должна по замыслу бежать одна?

На самом деле есть приемлемые решения. В той DEC RT было понятие зелённой, жёлтой и красной зоны стека (там немного и с heap сверялось, но это понятно, т.к. они росли навстречу друг-другу). Так вот в жёлтой зоне отрабатывали только системные и критические задачи, а в красной только обработчик ситуации.
 7.0.17.0.1
1 2 3 4

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru