Синий экран смерти с кодом 0x00000139 появляется при запуске компьютера после обновления ОС, установки нового аппаратного или программного обеспечения. На более современных версиях Windows, например, 8.1 и 10, данный BSoD идет без номера: он подписан как Kernel Security Check Failure.
Причины появления 0x00000139
- Несовместимость драйверов.
- Повреждение системных файлов.
- Проблемы с оперативной памятью компьютера.
- Неполадки с аппаратным обеспечением.
Методы решения 0x00000139
Метод №1 Обновление ОС Windows
Учитывая, что данный BSoD не блокирует доступ к системе — мы рекомендуем провести установку всех доступных обновлений для своей Windows. В довольно редких случаях отсутствие тех или иных апдейтов может вызывать появление BSoD’ов в определенных условиях.
Чтобы обновить свою Windows, вам нужно сделать следующее:
- нажмите ПКМ на Пуск и выберите пункт «Параметры»;
- перейдите в раздел «Обновление и безопасность»;
- далее перейдите в подраздел «Центр обновления Windows»;
- кликните на кнопку «Проверка наличия обновлений»;
- следуйте инструкциям на экране для установки всех доступных апдейтов;
- перезагрузите компьютер по окончанию процесса обновления.
Внимательно наблюдайте за загрузкой компьютера — ждите появления синего экрана смерти 0x00000139.
Метод №2 Запуск System File Checker
Повреждение системных файлов однозначно может привести к появлению BSoD’ов на компьютере пользователя. Чтобы восстановить поврежденные системные файлы, вам стоит воспользоваться системной утилитой System File Checker.
Для запуска SFC вам нужно сделать следующее:
- нажмите правой кнопкой мыши на Пуск;
- выберите из списка пункт «Командная строка (администратор)»;
- напишите команду sfc /scannow и нажмите Enter;
- подождите завершения сканирования (вы поймете, были ли что-то повреждено или нет);
- перезагрузите компьютер.
Ну что, получилось избавиться от 0x00000139? Если нет, то давайте двигаться дальше.
Метод №3 Проверка диска на ошибки
Синие экраны смерти частенько возникают из-за различных ошибок на диске пользователя. На подобные случаи как раз существует системное средство проверки диска, которое можно запустить через Командную строку. Попробуйте сделать следующее:
- откройте Командную строку теми же шагами, что были показаны ранее;
- напишите команду chkdsk C: /f /r /x и нажмите Enter;
- нажмите Y для согласия на перезагрузку компьютера и начала проверки диска.
На работу данного средства потребуется какое-то время. По завершению сканирования, исправления потенциальных ошибок и восстановления информации с поврежденных секторов вы войдете в Windows — посмотрите, появится ли BSoD 0x00000139.
Метод №4 Удаление проблемного драйвера
Некорректно работающие драйвера могут вызвать появление синего экрана смерти. Вам нужно проверить дамп памяти после возникновения BSoD с кодом 0x00000139 и понять, какой конкретно драйвер вызывает проблемы.
Для начала вам нужно убедиться, что в вашей системе настроено создание дампа памяти при возникновении критических ошибок. Сделайте следующее:
- нажмите Windows+S;
- пропишите запрос «Панель управления» и выберите найденный результат;
- перейдите в раздел «Система» (выберите в просмотре крупные значки);
- кликните на строчку «Дополнительные параметры системы»;
- нажмите на кнопку «Параметры…» в разделе «Загрузка и восстановление»;
- поставьте галочку возле опции «Записать событие в системный журнал»;
- в записи отладочной информации выберите «Малый дамп памяти»;
- примените изменения, перезагрузите компьютер и дождитесь появления BSoD 0x00000139.
Теперь давайте попытаемся прочитать с вами созданный дамп памяти. Для этого вам потребуется скачать небольшую утилиту BlueScreenView. Запустите ее и выберите свежий дамп памяти. Осмотрите выделенные красным элементы в нижней части окошка программы.
Все, что вам остается сделать — это пробить находку в Интернете и понять, чем конкретно она является. Возможно, это будет драйвер для вашего графического ускорителя или же драйвер для какого-то иного устройства, например, USB-колонок. Далее вам нужно переустановить, обновить или же и вовсе избавиться от этого драйвера. Тогда 0x00000139 должен исчезнуть.
Метод №5 Проверка оперативной памяти
Проблемы с оперативной памятью могут привести к самым разным ошибкам во время работы ОС. Вам необходимо проверить свою RAM при помощи средства проверки памяти Windows. Выполните следующее:
- нажмите Windows+S;
- пропишите «Средство проверки памяти» и выберите найденный результат;
- в появившемся окошке выберите опцию «Выполнить перезагрузку и проверку (рекомендуется)».
Далее ваш ПК перезагрузится и начнется проверка оперативной памяти. Данный процесс может занять довольно продолжительное время — все зависит исключительно от самого типа RAM и ее объема. Спокойно можете рассчитывать на 10 или 15 минут.
Как только проверка завершится, ваш компьютер перезагрузится еще раз и вы войдете в систему. В области уведомлений панели задач появится сводка проведенной проверки RAM. По ней вы поймете, появляется ли 0x00000139 из-за оперативки или нет.
I tried to run a simple C code like this below in Clion ide ,and everytime i do compile ,it shows me this message :
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
C code :
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch = 'A';
short s = ch;
printf(s);
printf("\n________________________\n");
short s2 = 67;
char ch2 = s2;
printf(ch2);
return 0;
}
0___________
60.9k4 gold badges34 silver badges74 bronze badges
asked Aug 27, 2021 at 16:40
7
here error code 139 indicates segment fault that is arising because you haven’t used format specifiers in the code the correct code will be
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch = 'A';
short s = ch;
printf("%d",s);
printf("\n________________________\n");
short s2 = 67;
char ch2 = (char)s2;
printf("%c",ch2);
return 0;
}
answered Aug 27, 2021 at 16:45
Your problem is the line
printf(s);
printf
expects its first argument to be a format string, and the type of the argument must be const char *
. It’s trying to treat s
as the address of a string, but the value of 'A'
(65 in ASCII) is not a valid address, hence the error.
To print the value of s
, you need to do something like
printf( "%hd", s );
The format specifier %hd
tells scanf
to expect a short
argument, and to print the string equivalent of its value as decimal digits ("65"
).
You have a similar issue in the second printf
call.
answered Aug 27, 2021 at 16:48
John BodeJohn Bode
120k19 gold badges122 silver badges198 bronze badges
You can use type casting and format specifiers as follows:
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch = 'A';
short s = ch;
//short format specifier
printf("%hd",s);
printf("\n________________________\n");
short s2 = 67;
//int to char
char ch2 = (char)s2;
//char format specifier
printf("%c",ch2);
return 0;
}
answered Aug 27, 2021 at 16:50
0
Ошибка с номером 0x00000139 появляется при запуске системы, после установки обновлений или подключения нового устройства. Среди распространённых причин синего экрана с указанным кодом — несовместимость драйверов, нарушение целостности системных файлов, проблемы с оперативной памятью и жёстким диском.
Установка обновлений
Синий экран смерти с ошибкой 0x00000139 не блокирует вход в систему. Поэтому мы можем без проблем запустить Windows и установить доступные обновления. Это первый шаг, который следует выполнить при появлении сообщения об ошибке.
- Открываем «Параметры» Windows 10.
- Переходим в раздел «Обновление и безопасность».
- На вкладке «Центр обновления Windows» нажимаем на кнопку «Проверить обновления». Если в настройках включено автоматическое скачивание апдейтов, то проверять ничего не придётся — обновления будут уже готовы к установке.
Устанавливаем все доступные обновления
- При обнаружении доступных апдейтов скачиваем их на компьютер, а затем запускаем инсталляцию. Можно сделать это сразу или в определённое время — например, ночью. Если обновления уже скачаны, но вы не запланировали их установку, то инсталляция начнётся автоматически при выключении или перезагрузке компьютера.
В ходе установки обновлений система несколько раз перезагрузится. Если вы используете ноутбук, подключите к нему адаптер питания. Аварийное выключение системы во время обновления может привести к повреждению файлов и появлению новых ошибок.
Загрузка …
Проверка целостности системных файлов
Синие экраны часто появляются из-за повреждения системных файлов. Ошибка 0x00000139 тоже относится к числу таких сбоев. Решение проблемы простое — нужно проверить системные файлы и восстановить их целостность. Для этого мы используем встроенную утилиту SFC.
- Запускаем командную строку с правами администратора.
- Выполняем команду sfc /scannow.
- Ждем завершения проверки.
Проверяем состояние системных файлов
Если утилита SFC не справилась с ошибкой, можно попробовать DISM. Это более мощное средство для проверки целостности системных файлов. Подробнее о работе с DISM вы можете узнать из этой статьи.
Загрузка …
Проверка диска на ошибки
Ошибка в работе диска — тоже частая причина появления синего экрана смерти. Чтобы исключить этот фактор, выполним проверку диска.
- Открываем командную строку с правами администратора.
- Выполняем команду chkdsk C: /f /r /x.
- Соглашаемся на перезагрузку компьютера — Y.
Проверяем состояние диска
Проверку системного раздела диска можно выполнить только вне среды Windows, поэтому без перезагрузки обойтись не получится. Сканирование накопителя на ошибки занимает несколько десятков минут, так что запасаемся терпением.
Загрузка …
Удаление или обновление повреждённого драйвера
Ошибка 0x00000139 может появиться из-за повреждения драйвера устройства. Главная сложность — определить, какое конкретно ПО вызывает сбой. Для этого нужно настроить в системе создание дампа памяти.
- Запускаем «Панель управления» и переходим в раздел «Система».
- Открываем «Дополнительные параметры системы».
Открываем дополнительные параметры системы
- В поле «Загрузка и восстановление» нажимаем на кнопку «Параметры».
Переходим к настройкам загрузки и восстановления
- Отмечаем опцию «Записать событие в системный журнал».
- В записи отладочной информации выбираем значение «Малый дамп памяти».
- Применяем изменения и перезагружаем компьютер.
Сведения об ошибках будут теперь сохраняться в системном журнале
Чтобы в системном журнале сохранилась информация об ошибке, должен снова появиться синий экран смерти. Как только это происходит, загружаемся в Windows и устанавливаем программу BlueScreenView. Запускаем её и видим свежий дамп памяти с сообщением об ошибке. Значимая информация выделена красным цветом, найти её можно в нижней части окна.
Информация об ошибке в программе BlueScreenView
Нам нужно посмотреть, на что ругается система. При необходимости уточняем смысл через поисковики и форумы. В итоге мы получим название поврежденного драйвера, который нужно удалить или обновить. После устранения сбоя ошибка с номером 0x00000139 должна исчезнуть.
Загрузка …
Проверка оперативной памяти
К появлению синего экрана смерти могут также привести ошибки в работе оперативной памяти. Обнаружить и устранить их помогает встроенное средство Windows:
- Запускаем поиск Windows (сочетание клавиш Win+S).
- Находим и запускаем «Средство проверки памяти».
- В появившемся окне выбираем опцию «Выполнить перезагрузку и проверку (рекомендуется)».
Используем встроенное средство проверки оперативной памяти
Загрузка …
Без перезагрузки проверить оперативную память на ошибки нельзя. Если встроенное средство WIndows не обнаружило причину появления синего экрана смерти, используем для проверки другие инструменты — например, программу Memtest86+. Подробнее об этом мы рассказывали в статье о том, как проверить оперативную память.
Загрузка …
Post Views: 9 440
What is SIGSEGV
SIGSEGV, also known as a segmentation violation or segmentation fault, is a signal used by Unix-based operating systems (such as Linux). It indicates an attempt by a program to write or read outside its allocated memory—either because of a programming error, a software or hardware compatibility issue, or a malicious attack, such as buffer overflow.
SIGSEGV is indicated by the following codes:
- In Unix/Linux, SIGSEGV is operating system signal 11
- In Docker containers, when a Docker container terminates due to a SIGSEV error, it throws exit code 139
The default action for SIGSEGV is abnormal termination of the process. In addition, the following may take place:
- A core file is typically generated to enable debugging
- SIGSEGV signals may logged in more detail for troubleshooting and security purposes
- The operating system may perform platform-specific operations
- The operating system may allow the process itself to handle the segmentation violation
SIGSEGV is a common cause for container termination in Kubernetes. However, Kubernetes does not trigger SIGSEGV directly. To resolve the issue, you will need to debug the problematic container or the underlying host.
SIGSEGV (exit code 139) vs SIGABRT (exit code 134)
SIGSEGV and SIGABRT are two Unix signals that can cause a process to terminate.
SIGSEGV is triggered by the operating system, which detects that a process is carrying out a memory violation, and may terminate it as a result.
SIGABRT (signal abort) is a signal triggered by a process itself. It abnormally terminates the process, closes and flushes open streams. Once it is triggered, it cannot be blocked by the process (similar to SIGKILL, but different in that SIGKILL is triggered by the operating system).
Before the SIGABRT signal is sent, the process may:
- Call the
abort()
function in thelibc
library, which unlocks the SIGABRT signal. Then the process can abort itself by triggering SIGABRT - Call the
assert()
macro, which is used in debugging, and aborts the program using SIGABRT if the assertion is false.
Exit codes 139 and 134 are parallel to SIGSEGV and SIGABRT in Docker containers:
- Docker exit code 139—means the container received a SIGSEGV by the underlying operating system due to a memory violation
- Docker exit code 134—means the container triggered a SIGABRT and was abnormally terminated
What Causes SIGSEGV?
Modern general-purpose computing systems include memory management units (MMUs). An MMU enables memory protection in operating systems like Linux—preventing different processes from accessing or modifying each other’s memory, except via a strictly controlled API. This simplifies troubleshooting and makes processes more resilient, because they are carefully isolated from each other.
A SIGSEGV signal or segmentation error occurs when a process attempts to use a memory address that was not assigned to it by the MMU. This can happen for three common reasons:
- Coding error—segmentation violations can occur if a process is not initialized properly, or if it tries to access memory through a pointer to previously freed memory. This will result in a segmentation violation in a specific process or binary file under specific circumstances.
- Incompatibility between binaries and libraries—if a process runs a binary file that is not compatible with a shared library, it can result in segmentation violations. For example, if a developer updates a library, changing its binary interface, but does not update the version number, an older binary may be loaded against the newer version. This may result in the older binary trying to access inappropriate memory addresses.
- Hardware incompatibility or misconfiguration—if segmentation violations occur frequently across multiple libraries, with no repeating pattern, this may indicate a problem with the memory subsystems on the machine or improper low-level system configuration settings.
Handling SIGSEGV Errors
On a Unix-based operating system, by default, a SIGSEGV signal will result in abnormal termination of the violating process.
Additional actions performed by the operating system
In addition to terminating the process, the operating system may generate core files to assist with debugging, and can also perform other platform-dependent operations. For
example, on Linux, you can use the grsecurity utility to log SIGSEGV signals in detail, to monitor for related security risks such as buffer overflow.
Allowing the process to handle SIGSEGV
On Linux and Windows, the operating system allows processes to handle their response to segmentation violations. For example, the program can collect a stack trace with information like processor register values and the memory addresses that were involved in the segmentation fault.
An example of this is segvcatch, a C++ library that supports multiple operating systems, and is able to convert segmentation faults and other hardware related exceptions to software language exceptions. This makes it possible to handle “hard” errors like segmentation violations with simple try/catch code. This makes it possible for software to identify a segmentation violation and correct it during program execution.
Troubleshooting SIGSEGV
When troubleshooting segmentation errors, or testing programs to avoid these errors, there may be a need to intentionally cause a segmentation violation to investigate its impact. Most operating systems make it possible to handle SIGSEGV in such a way that they will allow the program to run even after the segmentation error occurs, to allow for investigation and logging.
Troubleshooting Common Segmentation Faults in Kubernetes
SIGSEGV faults are highly relevant for Kubernetes users and administrators. It is fairly common for a container to fail due to a segmentation violation.
However, unlike other signals such as SIGTERM and SIGKILL, Kubernetes does not trigger a SIGSEGV signal directly. Rather, the host machine on a Kubernetes node can trigger SIGSEGV when a container is caught performing a memory violation. The container then terminates, Kubernetes detects this, and may attempt to restart it depending on the pod configuration.
When a Docker container is terminated by a SIGSEGV signal, it throws exit code 139. This can indicate:
- An issue with application code in one of the libraries running on the container
- An incompatibility between different libraries running on the container
- An incompatibility between those libraries and hardware on the host
- Issues with the host’s memory management systems or a memory misconfiguration
To debug and resolve a SIGSEGV issue on a container, follow these steps:
- Get root access to the host machine, and review the logs to see additional information about the buggy container. A SIGSEGV error looks like the following in kubelet logs:
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x1bdaed0]
- Try to identify in which layer of the container image the error occurs—it could be in your specific application code, or lower down in the base image of the container.
- Run
docker pull [image-id]
to pull the image for the container terminated by SIGSEGV. - Make sure that you have debugging tools (e.g. curl or vim) installed, or add them.
- Use
kubectl
to execute into the container. See if you can replicate the SIGSEGV error to confirm which library is causing the issue. - If you have identified the library or libraries causing the memory violation, try to modify your image to fix the library causing the memory violation, or replace it with another library. Very often, updating a library to a newer version, or a version that is compatible with the environment on the host, will resolve the issue.
- If you cannot identify a library that is consistently causing the error, the problem may be on the host. Check for problems with the host’s memory configuration or memory hardware.
The process above can help you resolve straightforward SIGSEGV errors, but in many cases troubleshooting can become very complex and require non-linear investigation involving multiple components. That’s exactly why we built Komodor – to troubleshoot memory errors and other complex Kubernetes issues before they get out of hand.
Troubleshooting Kubernetes Container Termination with Komodor
As a Kubernetes administrator or user, pods or containers terminating unexpectedly can be a pain, and can result in severe production issues. Container termination can be a result of multiple issues in different components and can be difficult to diagnose. The troubleshooting process in Kubernetes is complex and, without the right tools, can be stressful, ineffective and time-consuming.
Some best practices can help minimize the chances of SIGSEGV or SIGABRT signals affecting your applications, but eventually something will go wrong—simply because it can.
This is the reason why we created Komodor, a tool that helps dev and ops teams stop wasting their precious time looking for needles in (hay)stacks every time things go wrong.
Acting as a single source of truth (SSOT) for all of your k8s troubleshooting needs, Komodor offers:
- Change intelligence: Every issue is a result of a change. Within seconds we can help you understand exactly who did what and when.
- In-depth visibility: A complete activity timeline, showing all code and config changes, deployments, alerts, code diffs, pod logs and etc. All within one pane of glass with easy drill-down options.
- Insights into service dependencies: An easy way to understand cross-service changes and visualize their ripple effects across your entire system.
- Seamless notifications: Direct integration with your existing communication channels (e.g., Slack) so you’ll have all the information you need, when you need it.
If you are interested in checking out Komodor, use this link to sign up for a Free Trial.
Возможные причины ошибки:
- Некорректная работа Вашего браузера (отключены куки / сохранены старые куки / не очищен кеш);
- Используется режим “инкогнито” или анонимайзер;
- Установлен антивирус, файервол или другое программное обеспечение со строгими правилами, которое блокирует возможность браузеру работать с куки;
- Произошло ложное срабатывание блокировщика рекламы
- Во время создания заказа на оплату, был не заполнен или некорректно заполнен какой-либо параметр.
Для решения проблемы попробуйте следующие способы:
- Включите и очистите куки (см. инструкцию);
- Включите JavaScript;
- Очистите кеш (см. инструкцию);
- Отключите режим “инкогнито” или анонимайзер;
- Отключите блокировщик рекламы для данного сайта;
- Обратитесь к системному администратору Вашей компании (если оплачиваете с рабочего устройства);
- Воспользуйтесь другим браузером или другим устройством
- Обратитесь к администрации интернет компании, на сайте/в мобильном приложении которой, осуществляется платёж/перевод.