История изменений
Исправление dimgel, (текущая версия) :
Поэтому компиляторы на практике по возможности располагают статические const данные в read-only секции, чтобы твоя программа при попытке их поменять вовсе упала. Это и произошло.
Не, я снимаю const
внутри g()
исключительно потому что C не умеет в const
. Сам сявый API-вызов эти данные не меняет. Кстати, даже если я этот API-вызов убирал, и вместо этого возвращал x
из g()
, всё равно падало. А если вручную инлайнил g()
в f()
, то не падало.
И кстати, падало как раз когда msg был не const.
Вот такие, панимаеш ли, чудеса. Никаких мыслей, кроме разве что что баг вообще в другом месте, а мои эксперименты косвенно его индуцируют, влияя на работу оптимизатора. Но я много попутно и в других местах правил, а тем не менее поведение сохраняется как я описал в ТС.
Исправление dimgel, :
Поэтому компиляторы на практике по возможности располагают статические const данные в read-only секции, чтобы твоя программа при попытке их поменять вовсе упала. Это и произошло.
Не, я снимаю const
внутри g()
исключительно потому что C не умеет в const
. Сам сявый API-вызов эти данные не меняет. Кстати, даже если я этот API-вызов убирал, и вместо этого возвращал x
из g()
, всё равно падало. А если вручную инлайнил g()
в f()
, то не падало.
Вот такие, панимаеш ли, чудеса. Никаких мыслей, кроме разве что что баг вообще в другом месте, а мои эксперименты косвенно его индуцируют, влияя на работу оптимизатора. Но я много попутно и в других местах правил, а тем не менее поведение сохраняется как я описал в ТС.
Исходная версия dimgel, :
Поэтому компиляторы на практике по возможности располагают статические const данные в read-only секции, чтобы твоя программа при попытке их поменять вовсе упала. Это и произошло.
Не, я снимаю const
внутри g()
исключительно потому что C не умеет в const
. Сам сявый API-вызов эти данные не меняет. Кстати, даже если я этот API-вызов убирал, и вместо этого возвращал x
из g()
, всё равно падало. А если вручную инлайнил g()
в f()
, то не падало.
Вот такие, панимаеш ли, чудеса. Никаких мыслей, кроме разве что что баг вообще в другом месте, а мои эксперименты косвенно его индуцируют, влияют на работу оптимизатора. Но я много попутно и в других местах правил, а тем не менее поведение сохраняется как я описал в ТС.