Эта либа устанавливала хуки на системные вызовы, которые работают с диском.
And I was able to confirm (in some of the dumps, we don't collect the right heap information in all dumps) that Trend Micro code (one region is a DLL that seems to be called ApiHookStub.x64.dll, another is not a direct DLL copy) which has been allocated on our process heap without going through the loader, presumably via something like ::VirtualProtectEx and ::WriteProcessMemory. This is a pattern I see used broadly in Edge crashes we root cause to third-party software.
arch/x86/tools/insn_decoder_test: warning: Found an x86 instruction decoder bug, please report this.
arch/x86/tools/insn_decoder_test: warning: ffffffff81d68bb2: f2 0f 78 c0 08 08 insertq $0x8,$0x8,%xmm0,%xmm0
arch/x86/tools/insn_decoder_test: warning: objdump says 6 bytes, but insn_get_length() says 0
А что это значит? Компиляция с профилем привела к ошибочным оптимизациям, из-за которых сломался встроенный в ядро декодер длин инструкций? Выглядит опасно, тогда ведь могло сломаться и другое место, но не покрытое такой проверкой.
Если речь про Трансмету, то у меня сложилось впечатление что Бабаян говорил скорее с гордостью и уважением о том что они Дитцелом обсуждали бинарную трансляцию и прочие идеи, и что Дэвид смог реализовать это в реальном продукте.
Напишите, пожалуйста, в следующих статьях — когда вы узнали (и какая была реакция) что один из самых крутых авторов и редактор рубрики «взлом» является сотрудником ФСБ.
Если benchmark плохо написан, то да. Надо или возвращать результат вычислений из программы или говорить компилятору не делать оптимизаций. С этим сталкивался, наверное, автор любого бенчмарка, вот например AnTuTu.
Тут описан только недостижимый код, который является подмножеством мёртвого кода. В общем случае, мёртвый код — это любой код, который не имеет видимых результатов (он может быть как достижимом, так и не достижимым). Например, запись в регистр без последующего чтения из него.
Большая Parallels (которая бывшая SWSoft, которая купила маленькую компанию Parallels в 2004) была разделена на 3 части в 2015 году. Все эти части были куплены разными иностранными фирмами. Одна их них продолжила называться Parallels и стала подразделением канадской Corel, которая принадлежит американскому инвестиционному фонду Kohlberg Kravis Roberts. А зарегистрирована Parallels International GmbH в Швейцарии.
Эта либа устанавливала хуки на системные вызовы, которые работают с диском.
https://bugs.chromium.org/p/chromium/issues/detail?id=1218384#c81
А что это значит? Компиляция с профилем привела к ошибочным оптимизациям, из-за которых сломался встроенный в ядро декодер длин инструкций? Выглядит опасно, тогда ведь могло сломаться и другое место, но не покрытое такой проверкой.
Зато в 9x можно было попытаться открыть con\con по сети, что приводило к бсоду на обоих компьютерах.
Если речь про Трансмету, то у меня сложилось впечатление что Бабаян говорил скорее с гордостью и уважением о том что они Дитцелом обсуждали бинарную трансляцию и прочие идеи, и что Дэвид смог реализовать это в реальном продукте.
In the nineties, after incorporation, the company replaced “Acorn” with “Advanced” and the processor became known as an Advanced RISC Machine. In 1998, after the company’s IPO, their name became simply “ARM Holdings”, or “ARM” for short. The name of the architecture/processor followed suit, changing its name once again to simply “ARM.”
ARM это больше не акроним.
Напишите, пожалуйста, в следующих статьях — когда вы узнали (и какая была реакция) что один из самых крутых авторов и редактор рубрики «взлом» является сотрудником ФСБ.
>… добавляете к этому адресу смещение что бы получить указатель на адрес возврата из данной функции. Прописываете по этому указателю…
Уже в этот момент будет undefined behavior.
Как это можно сделать в C или C++ без undefined behavior?
Скорее всего такой код будет написан или в виде ассемблерной вставки или обложен volatile.
Если benchmark плохо написан, то да. Надо или возвращать результат вычислений из программы или говорить компилятору не делать оптимизаций. С этим сталкивался, наверное, автор любого бенчмарка, вот например AnTuTu.
А насчёт wipe data, зависит от того каких данных — если на диске, то это видимый результат, а если в памяти, то такой код тоже может быть удалён.
Тут описан только недостижимый код, который является подмножеством мёртвого кода. В общем случае, мёртвый код — это любой код, который не имеет видимых результатов (он может быть как достижимом, так и не достижимым). Например, запись в регистр без последующего чтения из него.
Подобное преобразование нелегально в C++, но т.к. многие его используют по привычке из C, то компиляторы предпочитают не ломать такой код: https://stackoverflow.com/questions/11373203/accessing-inactive-union-member-and-undefined-behavior
Звучит как трек «Кровостока»…
Большая Parallels (которая бывшая SWSoft, которая купила маленькую компанию Parallels в 2004) была разделена на 3 части в 2015 году. Все эти части были куплены разными иностранными фирмами. Одна их них продолжила называться Parallels и стала подразделением канадской Corel, которая принадлежит американскому инвестиционному фонду Kohlberg Kravis Roberts. А зарегистрирована Parallels International GmbH в Швейцарии.
Можно сделать анрол цикла, векторизовать и т.д.
Нет.
Его ютуб: https://www.youtube.com/c/Програмысли
Миллениалы изобрели Яндекс.Маркет.
https://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html
https://bcain-llvm.readthedocs.io/projects/clang/en/latest/LanguageExtensions/#extensions-for-selectively-disabling-optimization
Но это костыли, лучше писать правильный код.