The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Локальная root-уязвимость в подсистеме inotify ядра Linux, opennews (??), 04-Авг-17, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


1. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  –22 +/
Сообщение от Аноним (-), 04-Авг-17, 23:02 
Енжой ёр Си.
Ответить | Правка | Наверх | Cообщить модератору

4. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +17 +/
Сообщение от Вареник (?), 04-Авг-17, 23:07 
Не все уязвимости сводятся к переполнению стека/массива. Гораздо больше логических ошибок, от которых эти ваши ржавчины никак не спасут, только создадут излишние надежды у молодежи - что компиллятор подумает за них.
Ответить | Правка | Наверх | Cообщить модератору

6. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +4 +/
Сообщение от Аноним (-), 04-Авг-17, 23:10 
> Не все уязвимости сводятся к переполнению стека/массива. Гораздо больше логических ошибок,
> от которых эти ваши ржавчины никак не спасут, только создадут излишние
> надежды у молодежи - что компиллятор подумает за них.

На самом деле желание молодежи меньше работать и больше зарабатывать вполне понятно.
В идеале (для программиста), код должен фигак-фигак и в продакшен, и чтобы не надо было поддерживать.

Ответить | Правка | Наверх | Cообщить модератору

12. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +4 +/
Сообщение от Онтон (?), 04-Авг-17, 23:45 
Офигенный идеал, зачем тогда погромист, платить ему 200 баксов за весь фигак-фигак, пусть радуется.
Ответить | Правка | Наверх | Cообщить модератору

35. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  –1 +/
Сообщение от 564625145 (?), 05-Авг-17, 08:02 
программисты против языков которые упрощают программирование, так как им платить будут меньше
Ответить | Правка | Наверх | Cообщить модератору

40. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от Анонс (?), 05-Авг-17, 09:10 
Давайте, все настоящие программисты кодят только на асме и ниже.
Ответить | Правка | Наверх | Cообщить модератору

65. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +1 +/
Сообщение от Старый одмин (?), 05-Авг-17, 20:29 
В мои времена программистам платили с доходов компании, и соответственно, чем больше и быстрее работы сделано - тем больше зарплата.
Совсем я старый стал...
Ответить | Правка | К родителю #35 | Наверх | Cообщить модератору

66. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +1 +/
Сообщение от Аноним (-), 05-Авг-17, 20:46 
В мои времена им платили по ~120 руб/мес. Белые халаты бесплатно!
Ответить | Правка | Наверх | Cообщить модератору

81. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от kerneliq (ok), 07-Авг-17, 09:48 
Это сразу после института? Тогда верю
Ответить | Правка | Наверх | Cообщить модератору

87. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +1 +/
Сообщение от _ (??), 08-Авг-17, 16:10 
В СССР вообще ИТР-ы получали меньше работяг. Глупость - но факт. Не везде и не всегда, но в среднем по больнице ...
Ответить | Правка | Наверх | Cообщить модератору

34. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от Аноним (-), 05-Авг-17, 07:53 
> В идеале (для программиста), код должен фигак-фигак и в продакшен, и чтобы
> не надо было поддерживать.

Написан непограммист. Ты забыл третий ключевой пункт в сфере разработки ПО. Поскольку ты непрограммист ты до него никогда в жизни не догадаешься. А называется он просто -- сопровождение. И как непрограммист ты скорее всего спутаешь это с поддержкой. Вон из профессии!

Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

67. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +4 +/
Сообщение от Аноним (-), 05-Авг-17, 20:49 
- Что это вы эту кривую двуногую табуретку везде с собою носите?
- Я её не ношу, а сопровождаю!

Ответить | Правка | Наверх | Cообщить модератору

82. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  –1 +/
Сообщение от Аноним (-), 07-Авг-17, 10:53 
Это приводит к уменьшению заработка
Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

41. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +2 +/
Сообщение от Orduemail (ok), 05-Авг-17, 10:17 
> Гораздо больше логических ошибок,

"А у них негров линчуют", да? Здесь речь про race condition и переполнение буфера, то есть про ошибки которых можно избегать чисто механически, следуя определённым правилам программирования, типа "не использовать unsafe".

> только создадут излишние надежды у молодежи

Меня вот до сих пор удивляет то, с какой настырностью люди лезут в абсолютно неквалифицированные воспитатели, причём полагая себя умнее воспитуемых. Почему ты полагаешь, что подрастающие поколения настолько тупые, что они не смогут исследовать те ошибки, которые они совершают при написании кода на rust'е и не испытывать бесплодных надежд? То есть вот Вареник может даже не заглядывая в rust осознать, что rust не панацея, а вот подрастающие поколения такие тупые, что понять этого не смогут даже изучая rust, и даже реальное совершение ошибок их ничему не научит. Ну да, поколение ЕГЭ, я знаю. Все умные люди уже родились, Вареник был последним.

Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

46. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +2 +/
Сообщение от Crazy Alex (ok), 05-Авг-17, 12:24 
Смогли бы... Если пришли к расту, предварительно изучив ассемблер и поработав год-другой на си (и потыкавшись в несколько прежних "серебряных пуль"). Но они ж напрямую норовят лезть, и те вещи, который для сишника очевидны, относят к магии компилятора. Ровно так же нормальный вменяемый джавист, начинавший с более низкого уровня, отлично знает, что именно ему может в джаве прилететь, а тот, который кроме VM ничегоне нюхал - два слова не свяжет о том, какие у той же сборки мусора будут нюансы просто в силу архитектуры.

Раст ещё молод, чтобы это было с ним на практике видно, но у нас уже есть PHP, Python, Javascript и Java - там очень наглядно, что используемый язык на количество ошибок влияет очень слабо.

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

Ответить | Правка | Наверх | Cообщить модератору

70. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +6 +/
Сообщение от Orduemail (ok), 05-Авг-17, 22:37 
> Смогли бы... Если пришли к расту, предварительно изучив ассемблер и поработав год-другой
> на си (и потыкавшись в несколько прежних "серебряных пуль"). Но они
> ж напрямую норовят лезть, и те вещи, который для сишника очевидны,
> относят к магии компилятора.

Я не могу говорить определённо в силу отсутствия фактов -- раст действительно молодой язык, -- но всё же мне кажется, что растового понимания указателей, ссылок и памяти вполне достаточно для того, чтобы реально понимать происходящее. В том смысле, что можно изучать как это всё работает, кувыркаясь с C и заглядывая в асм код, и создать в своей голове понимание достойное какого-нибудь там Линуса Торвальдса, а можно достигнуть того же самого, заменив C на rust.

Rust реально очень недалеко ушёл от C в том смысле, что именно он делает за программиста. Он далеко ушёл в объёмах того, что он _не_позволяет_ делать программисту. Правда это с моей точки зрения, то есть с точки зрения человека, который многие вещи давным давно считает самоочевидными и не заслуживающими внимания. Эти вещи при этом могут быть неочевидными и требующими весьма пристального внимания в процессе обучения.

> прежних "серебряных пуль"

Мне не очень нравится сравнение rust'а с серебряной пулей. Мне он больше напоминает серебряную очередь из пулемёта. В том смысле, что там нельзя выделать какую-то одну идею, которая может претендовать на роль серебряной пули, там очень много чего есть, начиная естественно с системы типов, продолжая, например, типами Result и Carrier для структурной обработки ошибок, и заканчивая тем как организован процесс исследования путей дальнейшего развития rust'а, разработка rust'а и его документирование. Не последнюю роль играет и пакетный менагер при rust: одна из вещей, которую людям приходящим из C/C++ приходится менять в своей голове, для того чтобы освоить rust -- это отношение к депендансам. В C/C++ принято всё писать вручную, подключая дополнительные библиотеки только тогда, когда это сэкономит больше недели напряжённого кодинга, иначе овчинка выделки не стоит. В rust'е я могу засунуть в депендансы пакет содержащий один макрос, который я бы сам написал за час-два, и нисколько не париться на этот счёт. Излишняя увлечённость тем, чтобы писать максимум своими руками, тоже ведёт к повышению количества ошибок.

> Раст ещё молод, чтобы это было с ним на практике видно, но
> у нас уже есть PHP, Python, Javascript и Java - там
> очень наглядно, что используемый язык на количество ошибок влияет очень слабо.

Я не уверен, что такое сравнение имеет смысл, без глубокой рефлексии на предмет того, чего пытались достичь, отливая ту или иную серебряную пулю, что они получили на самом деле и что было упущено, какие ошибки были совершены, что пуля оказалась не серебряной.
Да, все предыдущие попытки сделать более безопасный язык оказались провальными, из чего напрашивается сделать вывод по индукции, что и все будущие ошибки кончат тем же. Но из этого напрашивается ещё один вывод: не стоит даже заморачиваться разрабатывать новые языки, ни в практическом плане, ни в теоретическом. А это уже пахнет для меня махровым консерватизмом и всепроникающей духовностью. И я вижу единственный способ примирить логику с обонянием: считать что индукция в данном случае -- неверный способ рассуждений. В конце-концов, индукция стопроцентов работает только в математике, в виде матиндукции. Даже в физике, которая ближе всего остального к математике, индукция работает не всегда, и иногда выясняется, что уже открытые законы физики надо исправлять. Нассим Талеб даже своего Чёрного Лебедя написал специально для того, чтобы обозначить проблему. Поэтому я не вижу ничего плохого в том, чтобы иногда положить на индукцию с прибором.

А если я кладу на индукцию с прибором, то rust -- это лучший сегодняшний кандидат на создание безопасной замены для C. Более того, я ужасно раздасадован самонадеянными разработчиками D, которые свой язык назвали этой самой буквой. Потому что если глянуть на последовательность
B -> C -> C++ -> ???,
то rust отлично вписывается на роль того, кого надо было бы поставить следом за C++, если рассмотреть C++ как процесс выполнения инкремента. Но эти любители высокоуровневого кодинга всё испортили. С другой стороны ржавчина, корродирующая мозги людей так, что вылезает наружу и начинает корродировать[1] всё остальное, вплоть до ls[2], тоже довольно метафорична. Меня это тоже заразило, я тоже сижу и переписываю избранную мною C'шную программу на rust -- это настолько fun, что меня даже не волнует бессмысленность этого процесса и ненужность программы.

[1] https://github.com/jameysharp/corrode
[2] https://the.exa.website/

Ответить | Правка | Наверх | Cообщить модератору

91. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  –1 +/
Сообщение от pripolz (?), 11-Авг-17, 17:20 
> считать что индукция в данном случае -- неверный способ рассуждений

Тут верный способ рассуждений такой: а кому ВЫГОДНО вкладываться в развитие Rust/Go/D ?

Приведу пример: MS Visual Studio принципиально не поддерживает стандарт C11 до сих пор.

Ответить | Правка | Наверх | Cообщить модератору

92. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от Orduemail (ok), 11-Авг-17, 19:46 
> Тут верный способ рассуждений такой: а кому ВЫГОДНО вкладываться в развитие Rust/Go/D ?

Не совсем так. Выгодно всем, кто хоть немного в теме. Вопрос в том, кто вкладывается.

> Приведу пример: MS Visual Studio принципиально не поддерживает стандарт C11 до сих
> пор.

А майкрософтовский C++ компилятор ещё жив? Ну, в смысле, есть gcc, есть llvm, зачем кому-нибудь может быть нужен майкрософтовский компилятор? Если нужен MSVS, то проще ведь воткнуть llvm в MSVS и не париться на этот счёт больше никогда. То есть, я не в курсе на самом деле, писать какой-либо код под венду я не пытался очень давно и очень давно не интересовался как это надо делать. Может быть там все давно перешли писать на паскале, а я и не заметил.

Вообще же это майкрософт в её стиле. Если MS занимается поддержкой какой-нибудь не своей технологии, то исключительно с целью перетянуть одеяло на себя. С C++ им особо ничего не светит в их понимании света. Поэтому они не будут заморачиваться поддерживать какие-то там стандарты C++. MS никогда особо с C++ не дружила: win32api наваян на C, а не на C++. Они потом пытались MFC протолкнуть, но это был один из самых неудачных их экспериментов, на мой взгляд, там даже маркетинг не особо помог, и они переключились на .NET и C#.

Если же попытаться предсказывать будущее... У меня чай так себе (я чёт последнее время расслабился, и меня жаба душит покупать действительно хороший чай) я не уверен, что принцессе нури можно доверять. Но её чаинки говорят... Ща, очки одену... Да, они говорят, что MS ещё несколько лет понаблюдает за тем, что сегодня творится с языками программирования, выберет те перки, которые ей понравятся и выкатит либо новый язык для .NET, либо даже объявит .NET устаревшим и выкатит совершенно новый стек технологий, и скажет, что это самая распоследняя и наисовременнейшая технология, которой нет аналогов в мировом производстве.

Ответить | Правка | Наверх | Cообщить модератору

50. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от eganru (?), 05-Авг-17, 15:05 
[i]чисто механически, следуя определённым правилам программирования, типа "не использовать unsafe"[/i] - не могу осознать, каким образом unsafe связан c состоянием гонки в данном случае?
я не знаю rust и интересно, каким образом он помогает избегать состояний гонки.
Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

54. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +1 +/
Сообщение от pda (?), 05-Авг-17, 16:03 
Rust не позволить написать код, который одложит указатель в событие inotigy и одновременно даст другому куску кода владеть им с правом на запись.
Ответить | Правка | Наверх | Cообщить модератору

55. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +2 +/
Сообщение от Orduemail (ok), 05-Авг-17, 17:06 
> [i]чисто механически, следуя определённым правилам программирования, типа "не использовать
> unsafe"[/i] - не могу осознать, каким образом unsafe связан c состоянием
> гонки в данном случае?
> я не знаю rust и интересно, каким образом он помогает избегать состояний
> гонки.

Я сейчас потратил полчаса пытаясь изобрести краткое объяснение. Мне не удалось это. Там вся магия сокрыта в системе типов с лайфтаймами и borrowing'е, и мне кажется, что единственный способ понять как это работает -- это взять и попытаться создать race condition в rust'е. Если потратить несколько дней на борьбу с borrow checker'ом, пробуя объехать его на кривой козе и так, и эдак, то в голове начинает зарождаться понимание, почему race condition невозможен. Если потратить ещё месяц на то, чтобы читать статьи и чужой код, то можно понять как, несмотря на всё это, возможно писать какой-нибудь рабочий и полезный код. Но так или иначе, чтобы понять как это работает, надо рассмотреть десяток примеров с потенциальным race condition, разбирая каждый на предмет "а если попытаться так, то ничего не получиться потому-то и потому-то", и завершая это сентенцией типа "таким образом у нас есть такие-то пути справится с проблемой, этот лучше в таких-то ситуациях, а этот в таких-то".

Но чтобы не звучать совсем абстрактно, я приведу один пример. Если у меня есть

struct Dummy {
    a: u32,
    b: u32,
}

Допустим я хочу чтобы для этой структуры всегда выполнялся бы какой-нибудь инвариант, например, a = 2*b.

Допустим, я напишу функцию:

fn double_this_dummy(dummy: &mut Dummy) {
    dummy.a *= 2;
    dummy.b *= 2;
}

Инвариант сохраняется. Можно предположить, что параллельный поток в это время изменит именно этот объект, вот ровно между удвоением a и b он возьмёт и уменьшит a на 3 и b на 6. Тогда инвариант будет нарушен. Но rust не позволит мне создать две mutable ссылки на этот объект, поэтому если внутри этой функции у меня есть ссылка на dummy, то у параллельного потока её не будет. А значит никакого race condition'а не случится.

Если мы попытаемся таки создать две mutable ссылки на один и тот же объект, так чтобы одна была в одном потоке, а другая в другом, то это выльется в долгий сеанс переругивания с borrow-checker'ом, и кончится либо использованием unsafe кода, либо осознанием своей глупости и нахождением safe пути достичь наших целей. Сложно объяснить как это происходит -- это надо испытать на себе.

Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

60. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от egan_ru (?), 05-Авг-17, 18:05 
спасибо. в общих чертах понял.
Ответить | Правка | Наверх | Cообщить модератору

94. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  –1 +/
Сообщение от Аноним (-), 15-Авг-17, 12:33 
Это все простейшие примеры. А логические гонки, когда, например (первое что пришло, сильно надуманно, но думаю степень можно опять), мы сохраняем на диск, а второй поток начинает читать от туда, но первый ещё не досохранял. Такое вот rust никак не отследит.

А то что у вас, это просто переменная в памяти, которая в двух потоках трогается. Такое "ещё в школе проходят", хотя не спорю, случайно где-нибудь наступить можно.

Ответить | Правка | К родителю #55 | Наверх | Cообщить модератору

95. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от Аноним (-), 15-Авг-17, 12:35 
> Это все простейшие примеры. А логические гонки, когда, например (первое что пришло,
> сильно надуманно, но думаю степень можно опять), мы сохраняем на диск,
> а второй поток начинает читать от туда, но первый ещё не
> досохранял. Такое вот rust никак не отследит.
> А то что у вас, это просто переменная в памяти, которая в
> двух потоках трогается. Такое "ещё в школе проходят", хотя не спорю,
> случайно где-нибудь наступить можно.

При всём при этом, возникает вопрос, придется ли мучится, если реально логикой эти потоки разделены, то есть одновременное выполнение кода не возможно, потому что второй поток уснул в ожидание. Я так понял, rust за такое будет пинать

Ответить | Правка | Наверх | Cообщить модератору

97. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +1 +/
Сообщение от Orduemail (ok), 15-Авг-17, 19:29 
>[оверквотинг удален]
>> сильно надуманно, но думаю степень можно опять), мы сохраняем на диск,
>> а второй поток начинает читать от туда, но первый ещё не
>> досохранял. Такое вот rust никак не отследит.
>> А то что у вас, это просто переменная в памяти, которая в
>> двух потоках трогается. Такое "ещё в школе проходят", хотя не спорю,
>> случайно где-нибудь наступить можно.
> При всём при этом, возникает вопрос, придется ли мучится, если реально логикой
> эти потоки разделены, то есть одновременное выполнение кода не возможно, потому
> что второй поток уснул в ожидание. Я так понял, rust за
> такое будет пинать

На такие случаи есть RefCell. RefCell сам по себе immutable объект (а значит можно одновременно иметь много ссылок на него), но если его попросить, то он выдаст mutable ссылку на содержащийся в нём объект. При этом он выполнит в рантайме проверки того, что в любой момент времени существует только одна mutable ссылка на объект. По сути, этот RefCell -- это те же проверки, которые выполняет компилятор, отличие в том, что они выполняются в рантайме, а не во время компиляции. Если логические допущения о том, что одновременное выполнение кода невозможно, окажутся неверными, то поток вывалится в панику.

Ответить | Правка | Наверх | Cообщить модератору

96. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +1 +/
Сообщение от Orduemail (ok), 15-Авг-17, 19:24 
> Это все простейшие примеры. А логические гонки, когда, например (первое что пришло,
> сильно надуманно, но думаю степень можно опять), мы сохраняем на диск,
> а второй поток начинает читать от туда, но первый ещё не
> досохранял. Такое вот rust никак не отследит.

Чем эта гонка "логическая"? Чтобы читать в или писать из File нужна mutable ссылка на этот File. Но rust запрещает иметь две mutable ссылки. В зависимости от того, каким образом вы попытаетесь создать две такие ссылки в разных потоках, вы получите либо ошибку компиляции, либо падение одного из потока в панику в описываемой ситуации, либо блокирование одного потока до завершения операции в другом.

Другое дело, что потоки могут независимо придти к выводу, что файл надо открыть и что-то с ним сделать, и у них будет два разных объекта File. И да, от этого rust не защитит. Но в этом случае, race происходит _вне_ rust'а. Здесь же речь идёт о _memory_ safety.

> А то что у вас, это просто переменная в памяти, которая в
> двух потоках трогается. Такое "ещё в школе проходят", хотя не спорю,
> случайно где-нибудь наступить можно.

Да, проходят в школе. И здесь я изложил самые-самые азы и то не полностью. О чём я кстати даже предупредил. Совершенно не удивительно, что тот единственный пример, который я привёл, оказался таким, который "проходят в школе". Или вы всё же полагаете, что мне следовало написать здесь целую книгу, сопроводив её десятком искусственных примеров, и несколькими десятками реальных, надёрганных из разных проектов на github'е?

Ответить | Правка | К родителю #94 | Наверх | Cообщить модератору

5. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +8 +/
Сообщение от Аноним (-), 04-Авг-17, 23:07 
Что-то по поделкам на пыхе статистика не лучше. Пожалуй, даже хуже. Эдак на пару порядков.
Хотя казалось бы - автоматическое управление памятью, GC, все дела.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

83. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от Аноним (-), 07-Авг-17, 10:58 
> Что-то по поделкам на пыхе статистика не лучше. Пожалуй, даже хуже. Эдак
> на пару порядков.
> Хотя казалось бы - автоматическое управление памятью, GC, все дела.

М... а с какой версии пых стал многопоточным?

Ответить | Правка | Наверх | Cообщить модератору

11. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от Аноним (-), 04-Авг-17, 23:43 
Давай, расскажи нам, какие языки позволяют избежать гонки.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

17. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +2 +/
Сообщение от анонимус (??), 05-Авг-17, 00:15 
хаскель с STM
Ответить | Правка | Наверх | Cообщить модератору

21. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +5 +/
Сообщение от irinat (ok), 05-Авг-17, 00:54 
Как ни странно, Rust. Концепция владения и заимствования нацелена на разделение ресурсов и предотвращение гонок. Но если хочется, всегда есть unsafe.
Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

26. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +3 +/
Сообщение от angra (ok), 05-Авг-17, 03:36 
Правильнее было бы сказать, что Rust позволяет предотвратить больше вариантов race condition, чем C. Но защитить от вобще всех вариантов race condition он само собой не может.
Ответить | Правка | Наверх | Cообщить модератору

51. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от Crazy Alex (ok), 05-Авг-17, 15:33 
По идее он только от чего-то совсем тривиального сможет защитить - ценой довольно основательных неудобств для программиста. Стоит ли оно того - лет через пять-семь увидим...
Ответить | Правка | Наверх | Cообщить модератору

61. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от irinat (ok), 05-Авг-17, 18:40 
Просто не нужно писать Си-код на Rust. Так-то программисты могут писать фортран-программы на любом языке программирования. Просто так делать не стоит.
Ответить | Правка | Наверх | Cообщить модератору

64. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от Аномномномнимус (?), 05-Авг-17, 19:58 
yet another "просто не нужно писать код, если он не идеальный", только со своей колокольней, куликами и болотом, ага
Ответить | Правка | Наверх | Cообщить модератору

48. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от Crazy Alex (ok), 05-Авг-17, 12:27 
Те, которые многопоточность толкмо не могут, конечно. В остальных - в крайнем случае для гонки понадобится ошибка в реализации среды. Чудес не бывает.
Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

98. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  +/
Сообщение от Очередной аноним (?), 18-Авг-17, 11:26 
> Давай, расскажи нам, какие языки позволяют избежать гонки.

Тот же D. Все "обычные" переменные локальны для потоков. Т.е. если ты объявишь "int a;" то в D это будет не глобальная переменная, которую может крутить каждый поток, конкурируя с соперниками. В D каждый поток получит свою копию этой переменной, которая будет храниться в TLS (thread-local storage). Если же тебе кровь из носу понадобится разделять её между потоками, то ты ее объявляешь разделяемой - "shared int a;". И компилятор теперь знает, что она разделяется между потоками и запретит тебе совершать над ней опасные, не синхронизированные, действия. Т.е. ты не сможешь тупо сделать "++a;", компилятор ругнется. Для этого  тебе придется использовать специальные атомарные примитивы из модуля std.concurrency для исключения одновременного незащищенного доступа. И вообще, там (в D) для взаимодействия потоков побуждают использовать подсистему сообщений, максимально локализуя, обособляя потоки друг от друга. Взаимодействие через разделяемые данные (которые с квалификатором shared и конечно с помощью мьютексов и прочего из std.concurrency)  оправданно только если объемы этих данных большие и копирование их в виде сообщений накладно.

Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

93. "Локальная root-уязвимость в подсистеме inotify ядра Linux"  –1 +/
Сообщение от Аноним (-), 13-Авг-17, 18:48 
>  Енжой ёр Си.

А что, есть ЯП где гонки невозможно сделать принципиально?

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру