LINUX.ORG.RU

История изменений

Исправление 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(), то не падало.

Вот такие, панимаеш ли, чудеса. Никаких мыслей, кроме разве что что баг вообще в другом месте, а мои эксперименты косвенно его индуцируют, влияют на работу оптимизатора. Но я много попутно и в других местах правил, а тем не менее поведение сохраняется как я описал в ТС.