Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
458 - Telegram Web
Telegram Web
а попался он из-за того, что постил свои треки в страве!
😁13👍2
Вообще-то два года
17😢6🎃4👍2😁1
Хотите паззлер?

Вешают на меня ишуй, говорят: вот, смотри, тест зависает намертво, копай. Я смотрю: ишуй старый, месяц назад и правда зависал тест. Проверяю на ночной сборке - все работает!

Смотрю в асм (да, я сразу смотрю в асм), за месяц изменилось по факту одно место.

Было:

mov    QWORD PTR [rbp+0x10],r14
mov QWORD PTR [rbp+0x18],0x0


Стало:

mov    QWORD PTR [rcx+0x10],r14
mov r14d,0x0
mov QWORD PTR [rcx+0x18],r14


На этой ноте я говорю "ах ты сука", начинаю смеяться и зову компиляторщиков посмотреть на их труды.

Ваши идеи, в чем здесь проблема? Почему тест зависал? Почему перестал зависать? Подсказка: тест на некотором managed языке.

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

P.S. наши, кто уже видел описание ишуя или просто мой смех гиены в офисе, молчим.

#дух_машины
🤪91👍1🤡1👀1
Алло, это отладочная?
Хотите паззлер? Вешают на меня ишуй, говорят: вот, смотри, тест зависает намертво, копай. Я смотрю: ишуй старый, месяц назад и правда зависал тест. Проверяю на ночной сборке - все работает! Смотрю в асм (да, я сразу смотрю в асм), за месяц изменилось по…
Разгадка на самом деле очень простая.

Что за тест:

К сожалению это был один из тех откровенно ублюдочных тестов, которые проверяют, что объект, который стал недостижим, будет собран GC.

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



Почему тест ублюдочный:

Не существует никаких гарантий, что недостижимый объект будет собран. Про GC вообще почти ничего не говорится в спеке, например, языка Java. Это такое секретное внутреннее знание, что трассирующие GC вот так должны работать, но бывают исключения.

Например: обычно во время своей работы GC находит множество корневых объектов, используя информацию от компилятора. Дескать вот здесь, в этой точке на r14 лежит живая ссылка на объект, значит ты этот объект добавляй в корневое множество и размечай.

Но иногда GC может строить корневое множество поконсервативнее: смотреть на все регистры и слоты стека, находить там что-то похожее на ссылки и соответствующие объекты якорить. Это не очень надежно (как мы увидим чуть ниже), но все еще корректно.

Именно в этом методе была такая ситуация: корневое множество строилось консервативно.



Что произошло (почему зависало):

На r14 оставалась ссылка на объект, который на самом деле уже помер. Это мы в исходном коде перетерли ссылку на него, далеко не факт, что после всех оптимизация, она моментально ушла и из r14.

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

Что произошло (почему перестало зависать):

За этот месяц в компиляторе проделали большую работу, которая к сожалению в том числе привела к появлению ненужной пересылки. Вместо того, чтобы записать 0 сразу в [rbp+0x18], компилятор сначала услужливо сохранил его на r14. Имеет право, ведь r14 уже не используется, объект то мертв!

Это, конечно, пессимизация чистой воды, которую надо чинить. Но нашу то проблему это полечило! Ведь больше в r14 нет ссылки на мертвый объект, там нолик. Так что GC объект собирает, финализатор срабатывает, тест проходит.



Что было дальше:

Посмеялся, показал компиляторщикам, они очень возмутились, говорят, что надо срочно чинить! А я отвечаю: зачем, отличная работа, вы же баг починили 😂

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



Паззлер первым разгадал @sergey_kachkin, респект!

#дух_машины
😈10👍4🔥2
- Пойдешь ко мне в штат?
- Кем?
- Криэйтором.
- Это типа творцом? Если перевести?
- Криэйтором, Вава, криэйтором, — сказал он. — Творцы нам тут нахуй не нужны.



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

И в целом то все так, но со временем я стал гораздо больше ценить именно "творцов". Да, с ними бывает сложно; да, иногда чувствуешь себя воспитателем в детском садике; да, скучную рутину все еще нужно кому-то разбирать и да, их бывает трудно на это уговорить.

Зато какие-же крутые вещи они могут сделать, если им дать определенную степень свободы и хорошенько подтолкнуть в правильную сторону! Разве это менее ценно, чем монотонное закрытие мелких тасков по расписанию?

Понятно, что всем творцами не быть, кому-то и приземленные фичи надо криэйтить, но что тут скажешь, для того нам и дано разделение труда.
💯134
Действительно, какой? 😏
❤‍🔥20
Ну котики же)

Обожаю этих пацанов и девчат, абсолютно не жалко провести с ними все воскресенье, организовывая хакатон ☺️
35🔥14👍4
Это мы читаем! @conwor завел канал, наконец 🎉
6🔥3
Привет!

Меня зовут Конвор, писать в ВК стало как-то больно, поэтому я теперь здесь, и буду писать про:

1) Программирование. Пишу компиляторы, специализируюсь в оптимизирующей генерации машинного кода. Работал в компании Excelsior, принимал участие в создании Excelsior JET JVM, последние 6 лет - в команде Excelsior в компании Huawei. Писать о работе вряд ли буду из-за NDA, но мысли о программировании без контекста точно будут.

2) Преподавание программирования. Это хобби растянулось уже почти на 20 лет, занимался со школьниками и студентами, сейчас веду на СисПро ММФ НГУ курс по языку Си с уклоном в системное программирование и курс по созданию прототипов операционных систем. Мыслей о том, что хорошо и плохо в образовании, накопилось предостаточно, буду ими делиться и хвастаться студентами, конечно.

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

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

---

Цензуры нет и никогда не будет, ни на маты, ни на мнения в комментариях. Банить буду только за рекламу, оскорбления и всякие штуки, за которые меня посадить могут.

Погнали!
👍3🔥2👎1🤡1
Забавно, конечно, что с моим расписанием напиться в говно в баре можно только в тот же день, когда утром я бегаю небольшой кросс.
😢17🍾6
This media is not supported in your browser
VIEW IN TELEGRAM
Как же хорошо, что я теперь редко езжу по городу, т.к. сижу в Академе)

Здесь люди называют пробкой то, что в городе называется светофором.
😁2210
Не модуль с кучей багов, а…
😁33👏4
ну я
🙈13💯3👻1
Февраль-март для меня время (моих) конференций, расскажу по этому поводу постыдную историю, как меня как-то осрамили наши HR-ы в Ху.

---

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

И вот решил я как-то подойти к вопросу поиска решалы основательно: написал нашим HR-ам (русским), говорю: а кто у нас деврел? Они очень испугались, говорят: пиши китайцам, у нас нет полномочий такое обсуждать.

Написал знакомой китайской девочке HR, спрашиваю: родная, а кто у нас деврел? Она отвечает: хм, какое интересное слово, а объясни, кто это хоть такой то? Ну я объяснил, она вроде поняла, ушла узнавать выше по инстанциям.

Через два часа вернулась и говорит: я все узнала! Наш DevRel – это ты 🙈

Говорить такое в лицо инженеру вообще-то довольно оскорбительно, но откуда же ей, бедняжке, это знать, она абсолютно искренне хотела помочь. Хотя, кажется, все-таки даже она почувствовала иронию ситуации.

---

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

Такие дела.
😁21🤷‍♂5🔥1
я в феврале: интересно, могут ли камни покупать билеты на SnowOne?
😁11❤‍🔥44👍1
Первая пара в субботу - это прям жестоко.
💯16🤣6🫡4
Хехе, ну да
💯22
Для меня матлог всегда был пожалуй самым интересным предметом на чистом ММФ. Ох, даже скучаю по нему!
💯12👎6
На математической логике изучают доказательство логических высказываний, но есть одно но…
13👍3
О, это я
💯40
2025/07/10 08:45:15
Back to Top
HTML Embed Code: