Тег

Raymond Chen

2 материалов

Загрузчик клянётся, что DLL закреплена, но память с её кодом исчезла (devblogs.microsoft.com)

Реймонд Чен загнал 100 свежих крэш-дампов одной сторонней программы в сводную таблицу. На вид это были четыре разных бага: 11 переполнений стека в shell32, 23 нарушения доступа в неизвестном компоненте, ещё переполнения в ctxapclient64. А причина у всех одна.

У инженера, который воспроизводит баги Windows под виртуализацией, был вопрос острее самого диагноза: какой уровень поддержки нужен, чтобы легендарный Чен вообще взглянул на твои дампы?

Не просто заголовок — разбор дискуссии

Главные треды HN: факты из обсуждений, разные стороны, голоса инсайдеров. Email, Telegram или RSS.

256 КБ кода, чтобы обнулить 64 КБ памяти — починили прямо в эмуляции (devblogs.microsoft.com)

Каждая инструкция записи байта занимала 4 байта. 65 536 штук — это 256 килобайт машинного кода ради инициализации 64 килобайт стека: соотношение кода к данным 4 к 1.

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

Оговорка из обсуждения: возможно, это вовсе не баг, и полностью развёрнутая версия на реальном железе работала быстрее.