Что такое ошибка сегментации?

В Ubuntu я много раз сталкивался с ошибкой сегментации. Что такое ошибка сегментации и когда она возникает?

25
задан 9 July 2012 в 19:20

26 ответов

Ошибка, связанная с ошибкой сегментации (или segfault, или SIGSEGV) в Ubuntu и других Unix-подобных операционных системах, или с ошибкой общей защиты в Windows, возникает, когда программа пытается получить доступ к части памяти, к которой нет доступа, или который программа запрещена для доступа. Ошибка сегментации - это своего рода сбой программы, то есть ненормальное завершение программы. См. Статьи Википедии о сбоях , защите памяти , сбое сегментации , сбое общей защиты и SIGSEGV для получения дополнительной информации (и более текстурированного понимания темы, чем представлено здесь).

Ошибка сегментации почти всегда возникает из-за ошибки в программе, где она возникает. Я предполагаю, что большинство или все ваши ошибки сегментации происходят из одного и того же приложения. Пожалуйста, предоставьте более подробную информацию об обстоятельствах, при которых происходят ошибки сегментации на вашем компьютере, и какая программа дает сбой. Также предоставьте полный и точный текст сообщения об ошибке, которое вы получаете, и любых других сообщений, которые появляются перед ним. Это должно позволить нам предоставить подробный совет, относящийся к вашей проблеме (а не просто общую информацию о том, что такое ошибка сегментации).

Лучший способ предоставить вам эту информацию - это отредактируйте свой вопрос, чтобы включить его . В качестве альтернативы, если вы хотите, чтобы этот вопрос касался только ошибок сегментации в целом, вы можете опубликовать новый вопрос, чтобы спросить о том, что конкретно является причиной ваших ошибок сегментации (если вы делаете это, обязательно предоставьте все эти детали в своем новом вопросе) .

22
ответ дан 25 July 2018 в 18:52

Ошибка, связанная с ошибкой сегментации (или segfault, или SIGSEGV) в Ubuntu и других Unix-подобных операционных системах, или с ошибкой общей защиты в Windows, возникает, когда программа пытается получить доступ к части памяти, к которой нет доступа, или который программа запрещена для доступа. Ошибка сегментации - это своего рода сбой программы, то есть ненормальное завершение программы. См. Статьи Википедии о сбоях , защите памяти , сбое сегментации , сбое общей защиты и SIGSEGV для получения дополнительной информации (и более текстурированного понимания темы, чем представлено здесь).

Ошибка сегментации почти всегда возникает из-за ошибки в программе, где она возникает. Я предполагаю, что большинство или все ваши ошибки сегментации происходят из одного и того же приложения. Пожалуйста, предоставьте более подробную информацию об обстоятельствах, при которых происходят ошибки сегментации на вашем компьютере, и какая программа дает сбой. Также предоставьте полный и точный текст сообщения об ошибке, которое вы получаете, и любых других сообщений, которые появляются перед ним. Это должно позволить нам предоставить подробный совет, относящийся к вашей проблеме (а не просто общую информацию о том, что такое ошибка сегментации).

Лучший способ предоставить вам эту информацию - это отредактируйте свой вопрос, чтобы включить его . В качестве альтернативы, если вы хотите, чтобы этот вопрос касался только ошибок сегментации в целом, вы можете опубликовать новый вопрос, чтобы спросить о том, что конкретно является причиной ваших ошибок сегментации (если вы делаете это, обязательно предоставьте все эти детали в своем новом вопросе) .

22
ответ дан 31 July 2018 в 10:33

Ошибка, связанная с ошибкой сегментации (или segfault, или SIGSEGV) в Ubuntu и других Unix-подобных операционных системах, или с ошибкой общей защиты в Windows, возникает, когда программа пытается получить доступ к части памяти, к которой нет доступа, или который программа запрещена для доступа. Ошибка сегментации - это своего рода сбой программы, то есть ненормальное завершение программы. См. Статьи Википедии о сбоях , защите памяти , сбое сегментации , сбое общей защиты и SIGSEGV для получения дополнительной информации (и более текстурированного понимания темы, чем представлено здесь).

Ошибка сегментации почти всегда возникает из-за ошибки в программе, где она возникает. Я предполагаю, что большинство или все ваши ошибки сегментации происходят из одного и того же приложения. Пожалуйста, предоставьте более подробную информацию об обстоятельствах, при которых происходят ошибки сегментации на вашем компьютере, и какая программа дает сбой. Также предоставьте полный и точный текст сообщения об ошибке, которое вы получаете, и любых других сообщений, которые появляются перед ним. Это должно позволить нам предоставить подробный совет, относящийся к вашей проблеме (а не просто общую информацию о том, что такое ошибка сегментации).

Лучший способ предоставить вам эту информацию - это отредактируйте свой вопрос, чтобы включить его . В качестве альтернативы, если вы хотите, чтобы этот вопрос касался только ошибок сегментации в целом, вы можете опубликовать новый вопрос, чтобы спросить о том, что конкретно является причиной ваших ошибок сегментации (если вы делаете это, обязательно предоставьте все эти детали в своем новом вопросе) .

22
ответ дан 2 August 2018 в 01:01

Ошибка, связанная с ошибкой сегментации (или segfault, или SIGSEGV) в Ubuntu и других Unix-подобных операционных системах, или с ошибкой общей защиты в Windows, возникает, когда программа пытается получить доступ к части памяти, к которой нет доступа, или который программа запрещена для доступа. Ошибка сегментации - это своего рода сбой программы, то есть ненормальное завершение программы. См. Статьи Википедии о сбоях , защите памяти , сбое сегментации , сбое общей защиты и SIGSEGV для получения дополнительной информации (и более текстурированного понимания темы, чем представлено здесь).

Ошибка сегментации почти всегда возникает из-за ошибки в программе, где она возникает. Я предполагаю, что большинство или все ваши ошибки сегментации происходят из одного и того же приложения. Пожалуйста, предоставьте более подробную информацию об обстоятельствах, при которых происходят ошибки сегментации на вашем компьютере, и какая программа дает сбой. Также предоставьте полный и точный текст сообщения об ошибке, которое вы получаете, и любых других сообщений, которые появляются перед ним. Это должно позволить нам предоставить подробный совет, относящийся к вашей проблеме (а не просто общую информацию о том, что такое ошибка сегментации).

Лучший способ предоставить вам эту информацию - это отредактируйте свой вопрос, чтобы включить его . В качестве альтернативы, если вы хотите, чтобы этот вопрос касался только ошибок сегментации в целом, вы можете опубликовать новый вопрос, чтобы спросить о том, что конкретно является причиной ваших ошибок сегментации (если вы делаете это, обязательно предоставьте все эти детали в своем новом вопросе) .

22
ответ дан 4 August 2018 в 16:32

Ошибка, связанная с ошибкой сегментации (или segfault, или SIGSEGV) в Ubuntu и других Unix-подобных операционных системах, или с ошибкой общей защиты в Windows, возникает, когда программа пытается получить доступ к части памяти, к которой нет доступа, или который программа запрещена для доступа. Ошибка сегментации - это своего рода сбой программы, то есть ненормальное завершение программы. См. Статьи Википедии о сбоях , защите памяти , сбое сегментации , сбое общей защиты и SIGSEGV для получения дополнительной информации (и более текстурированного понимания темы, чем представлено здесь).

Ошибка сегментации почти всегда возникает из-за ошибки в программе, где она возникает. Я предполагаю, что большинство или все ваши ошибки сегментации происходят из одного и того же приложения. Пожалуйста, предоставьте более подробную информацию об обстоятельствах, при которых происходят ошибки сегментации на вашем компьютере, и какая программа дает сбой. Также предоставьте полный и точный текст сообщения об ошибке, которое вы получаете, и любых других сообщений, которые появляются перед ним. Это должно позволить нам предоставить подробный совет, относящийся к вашей проблеме (а не просто общую информацию о том, что такое ошибка сегментации).

Лучший способ предоставить вам эту информацию - это отредактируйте свой вопрос, чтобы включить его . В качестве альтернативы, если вы хотите, чтобы этот вопрос касался только ошибок сегментации в целом, вы можете опубликовать новый вопрос, чтобы спросить о том, что конкретно является причиной ваших ошибок сегментации (если вы делаете это, обязательно предоставьте все эти детали в своем новом вопросе) .

22
ответ дан 6 August 2018 в 01:12

Ошибка, связанная с ошибкой сегментации (или segfault, или SIGSEGV) в Ubuntu и других Unix-подобных операционных системах, или с ошибкой общей защиты в Windows, возникает, когда программа пытается получить доступ к части памяти, к которой нет доступа, или который программа запрещена для доступа. Ошибка сегментации - это своего рода сбой программы, то есть ненормальное завершение программы. См. Статьи Википедии о сбоях , защите памяти , сбое сегментации , сбое общей защиты и SIGSEGV для получения дополнительной информации (и более текстурированного понимания темы, чем представлено здесь).

Ошибка сегментации почти всегда возникает из-за ошибки в программе, где она возникает. Я предполагаю, что большинство или все ваши ошибки сегментации происходят из одного и того же приложения. Пожалуйста, предоставьте более подробную информацию об обстоятельствах, при которых происходят ошибки сегментации на вашем компьютере, и какая программа дает сбой. Также предоставьте полный и точный текст сообщения об ошибке, которое вы получаете, и любых других сообщений, которые появляются перед ним. Это должно позволить нам предоставить подробный совет, относящийся к вашей проблеме (а не просто общую информацию о том, что такое ошибка сегментации).

Лучший способ предоставить вам эту информацию - это отредактируйте свой вопрос, чтобы включить его . В качестве альтернативы, если вы хотите, чтобы этот вопрос касался только ошибок сегментации в целом, вы можете опубликовать новый вопрос, чтобы спросить о том, что конкретно является причиной ваших ошибок сегментации (если вы делаете это, обязательно предоставьте все эти детали в своем новом вопросе) .

22
ответ дан 7 August 2018 в 18:38

Ошибка, связанная с ошибкой сегментации (или segfault, или SIGSEGV) в Ubuntu и других Unix-подобных операционных системах, или с ошибкой общей защиты в Windows, возникает, когда программа пытается получить доступ к части памяти, к которой нет доступа, или который программа запрещена для доступа. Ошибка сегментации - это своего рода сбой программы, то есть ненормальное завершение программы. См. Статьи Википедии о сбоях , защите памяти , сбое сегментации , сбое общей защиты и SIGSEGV для получения дополнительной информации (и более текстурированного понимания темы, чем представлено здесь).

Ошибка сегментации почти всегда возникает из-за ошибки в программе, где она возникает. Я предполагаю, что большинство или все ваши ошибки сегментации происходят из одного и того же приложения. Пожалуйста, предоставьте более подробную информацию об обстоятельствах, при которых происходят ошибки сегментации на вашем компьютере, и какая программа дает сбой. Также предоставьте полный и точный текст сообщения об ошибке, которое вы получаете, и любых других сообщений, которые появляются перед ним. Это должно позволить нам предоставить подробный совет, относящийся к вашей проблеме (а не просто общую информацию о том, что такое ошибка сегментации).

Лучший способ предоставить вам эту информацию - это отредактируйте свой вопрос, чтобы включить его . В качестве альтернативы, если вы хотите, чтобы этот вопрос касался только ошибок сегментации в целом, вы можете опубликовать новый вопрос, чтобы спросить о том, что конкретно является причиной ваших ошибок сегментации (если вы делаете это, обязательно предоставьте все эти детали в своем новом вопросе) .

22
ответ дан 10 August 2018 в 07:17

Ошибка, связанная с ошибкой сегментации (или segfault, или SIGSEGV) в Ubuntu и других Unix-подобных операционных системах, или с ошибкой общей защиты в Windows, возникает, когда программа пытается получить доступ к части памяти, к которой нет доступа, или который программа запрещена для доступа. Ошибка сегментации - это своего рода сбой программы, то есть ненормальное завершение программы. См. Статьи Википедии о сбоях , защите памяти , сбое сегментации , сбое общей защиты и SIGSEGV для получения дополнительной информации (и более текстурированного понимания темы, чем представлено здесь).

Ошибка сегментации почти всегда возникает из-за ошибки в программе, где она возникает. Я предполагаю, что большинство или все ваши ошибки сегментации происходят из одного и того же приложения. Пожалуйста, предоставьте более подробную информацию об обстоятельствах, при которых происходят ошибки сегментации на вашем компьютере, и какая программа дает сбой. Также предоставьте полный и точный текст сообщения об ошибке, которое вы получаете, и любых других сообщений, которые появляются перед ним. Это должно позволить нам предоставить подробный совет, относящийся к вашей проблеме (а не просто общую информацию о том, что такое ошибка сегментации).

Лучший способ предоставить вам эту информацию - это отредактируйте свой вопрос, чтобы включить его . В качестве альтернативы, если вы хотите, чтобы этот вопрос касался только ошибок сегментации в целом, вы можете опубликовать новый вопрос, чтобы спросить о том, что конкретно является причиной ваших ошибок сегментации (если вы делаете это, обязательно предоставьте все эти детали в своем новом вопросе) .

22
ответ дан 15 August 2018 в 19:18
  • 1
    К счастью, все ошибки сегментации были исправлены путем обновления OS :). Мой вопрос о сбое сегментации в целом. Не для конкретного приложения. – Tachyons 17 May 2012 в 19:16
  • 2
    @ Я не тот человек, я соответственно отредактировал свой ответ. (Я сохраняю инструкции по предоставлению дополнительной информации для других пользователей, испытывающих ошибки сегментации, хотя я знаю, что вам сейчас не нужна конкретная помощь с ними.) – Eliah Kagan 17 May 2012 в 19:18
  • 3
    Ну, это о сбое сегментации в приложении. Я хотел спросить о том, что это происходит в программе на C ++, где одна и та же программа прекрасно работает в Windows или Turbo C ++ (в Wine) (я использую anjuta в Linux). И это всего лишь базовые программы, а не приложения (такие как TREES). , гРАФЫ и т.д.) – Nirmik 17 May 2012 в 19:22
  • 4
    Спасибо. Но я боюсь, что в большинстве случаев задавать вопрос о сбое сегментации в приложении здесь не по теме :) – Tachyons 17 May 2012 в 19:26
  • 5
    @Nirmik: вероятно, это тема для stackoverflow :) – Tachyons 17 May 2012 в 19:28

Ошибка сегментации вызвана ошибкой в ​​приложении. Технически это означает, что приложение пытается читать или записывать часть памяти, которая ей не принадлежит (или не существует). Конечно, запрещено читать или писать в чужую память, и когда система (ядро) обнаруживает это, это заставит приложение выйти из игры.

4
ответ дан 25 May 2018 в 11:18

Прошли те времена, когда люди трассировали код сборки и отлаживали проблему. Abends, Dr Watson, Ошибка сегментации. Эти зеленые дни ушли.

Одна из причин ошибки сегментации - это отказ кода, который имеет прямой доступ к памяти. Когда кусок кода пытается получить доступ к сегменту памяти другого приложения, возникает ошибка сегментации. Выделения памяти несколько раз перемещаются, чтобы обеспечить выделение больших смежных блоков памяти. Пока он пытается восстановить, ядро ​​пытается сэкономить всю информацию о своей памяти в файле, текущее состояние всех приложений, запущенных на процессоре, и их состояние (последний запуск команды) в файл и просто умереть. Он также попытается сохранить как можно больше информации о восстановлении и закрыть как можно больше файлов, так что hdd не будет иметь неработающие ссылки.

Отлаживайте его и исправляйте, если вы можете часто его воспроизводить. Если вы не можете воспроизвести его, просто присоединитесь к своим рукам, встаньте на колени и молитесь, как ад, что вы не видите его «регулярно».

0
ответ дан 25 May 2018 в 11:18
  • 1
    Segfaults можно запускать в любой программе, написанной на языке, который обеспечивает прямой доступ к памяти. Как правило, они не будут разбивать ядро. – Alex L. 18 January 2013 в 12:05
  • 2
    @AlexL. это точно. Я отредактирую свой ответ. – Siddharth 18 January 2013 в 14:07
  • 3
    Надеюсь, я правильно представлял свои мысли. – Siddharth 18 January 2013 в 14:10
  • 4
    @AlexL. Не могли бы вы пересмотреть его еще раз. Я удалю его, если его все еще неточно. – Siddharth 6 February 2013 в 13:32
  • 5
    Это лучше. Тем не менее, (1) хотя это возможно, очень редко для программы устанавливать обработчик SIGSEGV на что-либо иное, кроме SIG_DFL (это дамп ядра и выход для SIGSEGV), поскольку, если вы получаете доступ к памяти, которую вы не должно быть, тогда что-то пошло очень неправильно, и восстановление, вероятно, невозможно. (2) Ядро будет сброшено только после прекращения процесса. (3) Дамп ядра включает только память и регистры процесса, который был сброшен. (4) Другие процессы, процессор и ядро ​​не зависят от segfault другого процесса. – Alex L. 7 February 2013 в 03:44

Прошли те времена, когда люди привыкли отслеживать ассемблерный код и устранять проблемы. Абендс, доктор Ватсон, Ошибка сегментации. Эти зеленые дни прошли.

Одна из причин ошибки сегментации - сбой кода, имеющего прямой доступ к памяти. Когда часть кода пытается получить доступ к сегменту памяти другого приложения, возникает ошибка сегментации. Выделение памяти иногда перемещается, чтобы позволить выделять большие непрерывные блоки памяти. Пока он пытается восстановиться, ядро ​​изо всех сил пытается сохранить всю информацию о своей памяти в файл, текущее состояние всех приложений, запущенных на процессоре, и их состояние (последний запуск инструкции) в файл и просто умереть. Он также попытается сохранить как можно больше информации для восстановления и закрыть как можно больше файлов, чтобы у hdd не было неработающих ссылок.

Отладьте и исправьте, если вы можете часто воспроизводить. Если вы не можете воспроизвести это, просто возьмите свои руки, встаньте на колени и молитесь, как черт, чтобы вы не видели это "регулярно".

0
ответ дан 25 July 2018 в 18:52

Ошибка сегментации вызвана ошибкой в ​​приложении. Технически это означает, что приложение пытается прочитать или записать часть памяти, которая ему не принадлежит (или не существует). Конечно, запрещено читать или записывать в чужую память, и когда система (ядро) обнаружит это, это заставит приложение выйти.

4
ответ дан 25 July 2018 в 18:52

Прошли те времена, когда люди привыкли отслеживать ассемблерный код и устранять проблемы. Абендс, доктор Ватсон, Ошибка сегментации. Эти зеленые дни прошли.

Одна из причин ошибки сегментации - сбой кода, имеющего прямой доступ к памяти. Когда часть кода пытается получить доступ к сегменту памяти другого приложения, возникает ошибка сегментации. Выделение памяти иногда перемещается, чтобы позволить выделять большие непрерывные блоки памяти. Пока он пытается восстановиться, ядро ​​изо всех сил пытается сохранить всю информацию о своей памяти в файл, текущее состояние всех приложений, запущенных на процессоре, и их состояние (последний запуск инструкции) в файл и просто умереть. Он также попытается сохранить как можно больше информации для восстановления и закрыть как можно больше файлов, чтобы у hdd не было неработающих ссылок.

Отладьте и исправьте, если вы можете часто воспроизводить. Если вы не можете воспроизвести это, просто возьмите свои руки, встаньте на колени и молитесь, как черт, чтобы вы не видели это "регулярно".

0
ответ дан 31 July 2018 в 10:33

Ошибка сегментации вызвана ошибкой в ​​приложении. Технически это означает, что приложение пытается прочитать или записать часть памяти, которая ему не принадлежит (или не существует). Конечно, запрещено читать или записывать в чужую память, и когда система (ядро) обнаружит это, это заставит приложение выйти.

4
ответ дан 31 July 2018 в 10:33

Прошли те времена, когда люди привыкли отслеживать ассемблерный код и устранять проблемы. Абендс, доктор Ватсон, Ошибка сегментации. Эти зеленые дни прошли.

Одна из причин ошибки сегментации - сбой кода, имеющего прямой доступ к памяти. Когда часть кода пытается получить доступ к сегменту памяти другого приложения, возникает ошибка сегментации. Выделение памяти иногда перемещается, чтобы позволить выделять большие непрерывные блоки памяти. Пока он пытается восстановиться, ядро ​​изо всех сил пытается сохранить всю информацию о своей памяти в файл, текущее состояние всех приложений, запущенных на процессоре, и их состояние (последний запуск инструкции) в файл и просто умереть. Он также попытается сохранить как можно больше информации для восстановления и закрыть как можно больше файлов, чтобы у hdd не было неработающих ссылок.

Отладьте и исправьте, если вы можете часто воспроизводить. Если вы не можете воспроизвести это, просто возьмите свои руки, встаньте на колени и молитесь, как черт, чтобы вы не видели это "регулярно".

0
ответ дан 2 August 2018 в 01:01

Ошибка сегментации вызвана ошибкой в ​​приложении. Технически это означает, что приложение пытается прочитать или записать часть памяти, которая ему не принадлежит (или не существует). Конечно, запрещено читать или записывать в чужую память, и когда система (ядро) обнаружит это, это заставит приложение завершить работу.

4
ответ дан 2 August 2018 в 01:01

Прошли те времена, когда люди привыкли отслеживать ассемблерный код и устранять проблемы. Абендс, доктор Ватсон, Ошибка сегментации. Эти зеленые дни прошли.

Одна из причин ошибки сегментации - сбой кода, имеющего прямой доступ к памяти. Когда часть кода пытается получить доступ к сегменту памяти другого приложения, возникает ошибка сегментации. Выделение памяти иногда перемещается, чтобы позволить выделять большие непрерывные блоки памяти. Пока он пытается восстановиться, ядро ​​изо всех сил пытается сохранить всю информацию о своей памяти в файл, текущее состояние всех приложений, запущенных на процессоре, и их состояние (последний запуск инструкции) в файл и просто умереть. Он также попытается сохранить как можно больше информации для восстановления и закрыть как можно больше файлов, чтобы у hdd не было неработающих ссылок.

Отладьте и исправьте, если вы можете часто воспроизводить. Если вы не можете воспроизвести это, просто возьмите свои руки, встаньте на колени и молитесь, как черт, чтобы вы не видели это "регулярно".

0
ответ дан 4 August 2018 в 16:32

Ошибка сегментации вызвана ошибкой в ​​приложении. Технически это означает, что приложение пытается прочитать или записать часть памяти, которая ему не принадлежит (или не существует). Конечно, запрещено читать или записывать в чужую память, и когда система (ядро) обнаружит это, это заставит приложение завершить работу.

4
ответ дан 4 August 2018 в 16:32

Прошли те времена, когда люди привыкли отслеживать ассемблерный код и устранять проблемы. Абендс, доктор Ватсон, Ошибка сегментации. Эти зеленые дни прошли.

Одна из причин ошибки сегментации - сбой кода, имеющего прямой доступ к памяти. Когда часть кода пытается получить доступ к сегменту памяти другого приложения, возникает ошибка сегментации. Выделение памяти иногда перемещается, чтобы позволить выделять большие непрерывные блоки памяти. Пока он пытается восстановиться, ядро ​​изо всех сил пытается сохранить всю информацию о своей памяти в файл, текущее состояние всех приложений, запущенных на процессоре, и их состояние (последний запуск инструкции) в файл и просто умереть. Он также попытается сохранить как можно больше информации для восстановления и закрыть как можно больше файлов, чтобы у hdd не было неработающих ссылок.

Отладьте и исправьте, если вы можете часто воспроизводить. Если вы не можете воспроизвести это, просто возьмите свои руки, встаньте на колени и молитесь, как черт, чтобы вы не видели это "регулярно".

0
ответ дан 6 August 2018 в 01:12

Ошибка сегментации вызвана ошибкой в ​​приложении. Технически это означает, что приложение пытается прочитать или записать часть памяти, которая ему не принадлежит (или не существует). Конечно, запрещено читать или записывать в чужую память, и когда система (ядро) обнаружит это, это заставит приложение выйти.

4
ответ дан 6 August 2018 в 01:12

Прошли те времена, когда люди привыкли отслеживать ассемблерный код и устранять проблемы. Абендс, доктор Ватсон, Ошибка сегментации. Эти зеленые дни прошли.

Одна из причин ошибки сегментации - сбой кода, имеющего прямой доступ к памяти. Когда часть кода пытается получить доступ к сегменту памяти другого приложения, возникает ошибка сегментации. Выделение памяти иногда перемещается, чтобы позволить выделять большие непрерывные блоки памяти. Пока он пытается восстановиться, ядро ​​изо всех сил пытается сохранить всю информацию о своей памяти в файл, текущее состояние всех приложений, запущенных на процессоре, и их состояние (последний запуск инструкции) в файл и просто умереть. Он также попытается сохранить как можно больше информации для восстановления и закрыть как можно больше файлов, чтобы у hdd не было неработающих ссылок.

Отладьте и исправьте, если вы можете часто воспроизводить. Если вы не можете воспроизвести это, просто возьмите свои руки, встаньте на колени и молитесь, как черт, чтобы вы не видели это "регулярно".

0
ответ дан 7 August 2018 в 18:38

Ошибка сегментации вызвана ошибкой в ​​приложении. Технически это означает, что приложение пытается прочитать или записать часть памяти, которая ему не принадлежит (или не существует). Конечно, запрещено читать или записывать в чужую память, и когда система (ядро) обнаружит это, это заставит приложение завершить работу.

4
ответ дан 7 August 2018 в 18:38

Прошли те времена, когда люди привыкли отслеживать ассемблерный код и устранять проблемы. Абендс, доктор Ватсон, Ошибка сегментации. Эти зеленые дни прошли.

Одна из причин ошибки сегментации - сбой кода, имеющего прямой доступ к памяти. Когда часть кода пытается получить доступ к сегменту памяти другого приложения, возникает ошибка сегментации. Выделение памяти иногда перемещается, чтобы позволить выделять большие непрерывные блоки памяти. Пока он пытается восстановиться, ядро ​​изо всех сил пытается сохранить всю информацию о своей памяти в файл, текущее состояние всех приложений, запущенных на процессоре, и их состояние (последний запуск инструкции) в файл и просто умереть. Он также попытается сохранить как можно больше информации для восстановления и закрыть как можно больше файлов, чтобы у hdd не было неработающих ссылок.

Отладьте и исправьте, если вы можете часто воспроизводить. Если вы не можете воспроизвести это, просто возьмите свои руки, встаньте на колени и молитесь, как черт, чтобы вы не видели это "регулярно".

0
ответ дан 10 August 2018 в 07:17

Ошибка сегментации вызвана ошибкой в ​​приложении. Технически это означает, что приложение пытается прочитать или записать часть памяти, которая ему не принадлежит (или не существует). Конечно, запрещено читать или записывать в чужую память, и когда система (ядро) обнаружит это, это заставит приложение завершить работу.

4
ответ дан 10 August 2018 в 07:17

Прошли те времена, когда люди привыкли отслеживать ассемблерный код и устранять проблемы. Абендс, доктор Ватсон, Ошибка сегментации. Эти зеленые дни прошли.

Одна из причин ошибки сегментации - сбой кода, имеющего прямой доступ к памяти. Когда часть кода пытается получить доступ к сегменту памяти другого приложения, возникает ошибка сегментации. Выделение памяти иногда перемещается, чтобы позволить выделять большие непрерывные блоки памяти. Пока он пытается восстановиться, ядро ​​изо всех сил пытается сохранить всю информацию о своей памяти в файл, текущее состояние всех приложений, запущенных на процессоре, и их состояние (последний запуск инструкции) в файл и просто умереть. Он также попытается сохранить как можно больше информации для восстановления и закрыть как можно больше файлов, чтобы у hdd не было неработающих ссылок.

Отладьте и исправьте, если вы можете часто воспроизводить. Если вы не можете воспроизвести это, просто возьмите свои руки, встаньте на колени и молитесь, как черт, чтобы вы не видели это "регулярно".

0
ответ дан 15 August 2018 в 19:18
  • 1
    Segfaults может быть вызвано в любой программе, написанной на языке, который обеспечивает прямой доступ к памяти. Как правило, они не будут сбивать ядро. – Alex L. 18 January 2013 в 12:05
  • 2
    @AlexL. это точно. Я отредактирую свой ответ. – Siddharth 18 January 2013 в 14:07
  • 3
    Я надеюсь, что я правильно изложил свои мысли. – Siddharth 18 January 2013 в 14:10
  • 4
    @AlexL. Можете ли вы рассмотреть его еще раз. Я удалю это, если это все еще не точно. – Siddharth 6 February 2013 в 13:32
  • 5
    Это лучше. Тем не менее, (1) хотя и возможно, что для программы крайне редко устанавливается обработчик SIGSEGV на что-либо кроме SIG_DFL (который выдает дамп ядра и завершает работу для SIGSEGV), поскольку, если вы обращаетесь к памяти, которую вы не должно быть, тогда что-то пошло не так, и восстановление, вероятно, невозможно. (2) Ядро будет сброшено только после остановки процесса. (3) Дамп ядра включает только память и регистры процесса, который был выгружен. (4) Другие процессы, процессор и ядро ​​не подвержены сбою другого процесса. – Alex L. 7 February 2013 в 03:44

Ошибка сегментации вызвана ошибкой в ​​приложении. Технически это означает, что приложение пытается прочитать или записать часть памяти, которая ему не принадлежит (или не существует). Конечно, запрещено читать или записывать в чужую память, и когда система (ядро) обнаружит это, это заставит приложение завершить работу.

4
ответ дан 15 August 2018 в 19:18

Другие вопросы по тегам:

Похожие вопросы: