Notice: file_put_contents(): Write of 21196 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50
Алло, это отладочная?@gdb_dbg P.209
GDB_DBG Telegram 209
Подумалось: насколько фаззинг (в данном контексте - генерация случайным образом корректных входных программ) хорош для поиска компиляторных багов, но настолько же он бесполезен для поиска проблем в рантайме (багов в GC, синхронизации и т.д.).

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

Рантайм же по своей сути работает со случайными событиями. Как именно операционная система выдавала вашим тредам кванты для работы? Кто из потоков в результате выиграл гонку за lock? Как это повлияло на скорость аллокации объектов? А это в свою очередь на момент, в которой случилась сборка мусора, и на расположение объектов в памяти к этому моменту. Это я еще не говорю про влияние других процессов, которое, конечно, тоже есть: GC вполне может ориентироваться на общее потребление памяти в системе, да и опять таки, кванты то им тоже выдаются, т.е. общая загруженность системы может радикально повлиять на всю картину происходящего в рантайме.

Конечно же, можно сказать, что все это в конце концов детерминировано, просто влияющих факторов очень много. Но какая разница, если при каждом новом запуске мы получаем все новые события? Все это напоминает старый, как жизнь, спор: "существует ли у человека свобода выбора или любой наш выбор предрешен, пусть и огромным количеством факторов?". Лично для меня здесь нет никакого противоречия: глобальный детерминизм логичен, но в условиях невозможности наблюдения всех первопричин это не имеет никакого значения, а значит можно считать, что свобода выбора существует. Вот и получается, что GC с рантаймом - тоже в определенном смысле наделены такой свободой, характером и удачей.

Ну и какой же тут может быть толк от фаззера? Случайность, которую он порождает на порядок меньше той, с которой мы сталкиваемся в рантайме при прокачке гигабайтов памяти средним таким приложением на спринге. Гораздо полезнее для нас варировать паттерны поведения операционной системы, например, рандомно менять приоритеты тредам, как в chaos mode чудесного отладчика rr, или же полностью подменить планировщик на свой, как это сделано в Hermit, и уже в него добавлять свою, контролируемую случайность. Вот это и правда может вскрыть очень сложные, спорадичные баги в рантайме, т.к. путь исполнения будет максимально нетипичен, даже для такой хаотичной системы.

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

#дух_машины
🔥16



tgoop.com/gdb_dbg/209
Create:
Last Update:

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

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

Рантайм же по своей сути работает со случайными событиями. Как именно операционная система выдавала вашим тредам кванты для работы? Кто из потоков в результате выиграл гонку за lock? Как это повлияло на скорость аллокации объектов? А это в свою очередь на момент, в которой случилась сборка мусора, и на расположение объектов в памяти к этому моменту. Это я еще не говорю про влияние других процессов, которое, конечно, тоже есть: GC вполне может ориентироваться на общее потребление памяти в системе, да и опять таки, кванты то им тоже выдаются, т.е. общая загруженность системы может радикально повлиять на всю картину происходящего в рантайме.

Конечно же, можно сказать, что все это в конце концов детерминировано, просто влияющих факторов очень много. Но какая разница, если при каждом новом запуске мы получаем все новые события? Все это напоминает старый, как жизнь, спор: "существует ли у человека свобода выбора или любой наш выбор предрешен, пусть и огромным количеством факторов?". Лично для меня здесь нет никакого противоречия: глобальный детерминизм логичен, но в условиях невозможности наблюдения всех первопричин это не имеет никакого значения, а значит можно считать, что свобода выбора существует. Вот и получается, что GC с рантаймом - тоже в определенном смысле наделены такой свободой, характером и удачей.

Ну и какой же тут может быть толк от фаззера? Случайность, которую он порождает на порядок меньше той, с которой мы сталкиваемся в рантайме при прокачке гигабайтов памяти средним таким приложением на спринге. Гораздо полезнее для нас варировать паттерны поведения операционной системы, например, рандомно менять приоритеты тредам, как в chaos mode чудесного отладчика rr, или же полностью подменить планировщик на свой, как это сделано в Hermit, и уже в него добавлять свою, контролируемую случайность. Вот это и правда может вскрыть очень сложные, спорадичные баги в рантайме, т.к. путь исполнения будет максимально нетипичен, даже для такой хаотичной системы.

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

#дух_машины

BY Алло, это отладочная?


Share with your friend now:
tgoop.com/gdb_dbg/209

View MORE
Open in Telegram


Telegram News

Date: |

It’s easy to create a Telegram channel via desktop app or mobile app (for Android and iOS): Matt Hussey, editorial director of NEAR Protocol (and former editor-in-chief of Decrypt) responded to the news of the Telegram group with “#meIRL.” You can invite up to 200 people from your contacts to join your channel as the next step. Select the users you want to add and click “Invite.” You can skip this step altogether. Telegram Android app: Open the chats list, click the menu icon and select “New Channel.” Click “Save” ;
from us


Telegram Алло, это отладочная?
FROM American