на удачу ?
Вот как у тебя на аватарке
Конечно даёт
странно. я включил все возможные варнинги, ничего не выдало. но -O2 делает программу неработоспособной
репа https://github.com/NekOSProject/nekos в каком именно месте проекта оптимизатор ломает не могу понять
С дебабером запускать пробовал?
может не в оптимизаторе дело?)
планировал под гдб глянуть. Но блин.. а как не допускать этих ситуаций ? Насколько я понял компилятор не настолько умный чтобы находить все УБ. Нужен какой то анализатор кода..
gcc никогда щедяще к коду как мсвк не относился
Ворнинги включил? С санитайзерами гонял?
>> а как не допускать этих ситуаций ? Никак, вас никто в том числе не застрахует и от ошибок в железе. Вы можете лишь постепенно снижать вероятность и объем вреда от ошибок
варнинги все врублены, да
Санитайзеры могут помочь. А вообще да - при написании кода на С++ нужно помнить обо всех UB (или хотя бы о большинстве)
санитайзер не взлетел, у меня ж под голое железо. ругается на неопределенные символы
так у тебя даже не рантайм ошибка?
запускаю в эмуляторе, прилетает исключение процессора GPF и уход в ребут. Без оптимизаций все ок
Проверь выравнивания
какие выравнивания? я просто хз как гуглить, гугл выравнивания в структурах мне выдает, но это не то. я же атрибут пакед юзаю где надо
Тут диалог будет длинный, надо код смотреть...
а как гуглить? alignment in c++ ?
Первое: SSE в коде юзается или компилишь без него? На каком вообще этапе краш? Без отладчика грустно это всё
-std=c++17 -ffreestanding -mno-mmx -mno-sse -mno-sse2 -mno-3dnow -fno-rtti -fno-exceptions -fno-threadsafe-statics -fno-strict-aliasing -fno-stack-protector -Wall -Wextra -g -DARCH_i686 --target=i686-unknown-linux-gnu
No thread safe statics - почему же может падать? 🤔
А какое они имеют отношение к падениям?)
так у меня же все в сингл треде
Я мог погорячиться, но разве это не может привести к падению при каких-либо обстоятельствах?
ржу, на другой версии кланга оптимизация не ломает код..
Мож это... Взять отладчик наконец?)
Предлагаю попробовать статический анализатор на код натравить. Они обычно UB неплохо находят.
Обсуждают сегодня