The OpenNET Project / Index page

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



"Утечка исходных текстов браузера Opera 12.15"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Отдельный RSS теперь доступен для каждого обсуждения в форуме и каждого минипортала.
. "Не работает jit на arm :(" +2 +/
Сообщение от arisu (ok), 17-Янв-17, 13:44 
> Что-то я туплю, но где именно оно там падает? Вруг можно без
> хака с флагом пофиксить?

оно падает где‐то во глубине сибирских руд^w^w delete, куда оно зачем‐то попадает с `data.attrs == NULL`, а попадать туда оно не должно, потому что delete должно быть толерантно к нулам.

причём падаем именно в этом одном конкретном месте, больше я нигде подобных падений не выловил. так что это не баг в оперном delete (я даже не уверен, что они его перекрывают — по‐моему, нет), это баг в оптимизаторе. дополнительно можно убедиться, что именно оптимизатор, если вспомнить, что -O0 не падает.

соответственно, компилятор у нас дохрена умный, и
if (data.attr) delete data.attr[];
не работает, потому что компилятор знает, что delete безопасно вызывать с нулами, и проверку нафиг аннигилирует.

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

дизасм я не смотрел, но судя по всему где‐то облажался register allocator.


p.s.: -O2 лажает точно так же, как и -O3. я всё равно на всякий случай понизил до -O2 — целее будем.

p.p.s.: я сильно подозреваю, что это очередной случай, когда компилятор тупо считает: «программ с UB нет и быть не может». там выше цикл, который снимает у attr атрибут внутренней очистки, и в принципе, он без охраны. поэтому компилятор вправе считать, что после цикла data.attr никогда не NULL, даже если цикл в принципе выполнился ноль раз (а после вызова функции, в которую компилятор не может заглянуть, он вынужден заново проверять). вполне возможно, что поэтому и беда. ибо новые компиляторы всё больше оптимизаций делают основываясь на идиотской идее про UB.

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

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

Оглавление
Утечка исходных текстов браузера Opera 12.15, opennews, 14-Янв-17, 00:58  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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