Главная >> Система >> Ошибка сегментирования Ubuntu

Ошибка сегментирования Ubuntu

Не всегда программы в Linux запускаются как положено. Иногда, в силу разных причин программа вместо нормальной работы выдает ошибку. Но нам не нужна ошибка, нам нужна программа, вернее, та функция, которую она должна выполнять. Сегодня мы поговорим об одной из самых серьезных и непонятных ошибок. Это ошибка сегментации Ubuntu. Если такая ошибка происходит только один раз, то на нее можно не обращать внимания, но если это регулярное явление нужно что-то делать.

Конечно, случается эта проблема не только в Ubuntu, а во всех Linux дистрибутивах, поэтому наша инструкция будет актуальна для них тоже. Но сосредоточимся мы в основном на Ubuntu. Рассмотрим что такое ошибка сегментирования linux, почему она возникает, а также как с этим бороться и что делать.


Содержание статьи

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

Ошибка сегментации, Segmentation fault, или Segfault, или SIGSEGV в Ubuntu и других Unix подобных дистрибутивах, означает ошибку работы с памятью. Когда вы получаете эту ошибку, это значит, что срабатывает системный механизм защиты памяти, потому что программа попыталась получить доступ или записать данные в ту часть памяти, к которой у нее нет прав обращаться.

Чтобы понять почему так происходит, давайте рассмотрим как устроена работа с памятью в Linux, я попытаюсь все упростить, но приблизительно так оно и работает.

Допустим, в вашей системе есть 6 Гигабайт оперативной памяти, каждой программе нужно выделить определенную область, куда будет записана она сама, ее данные и новые данные, которые она будет создавать. Чтобы дать возможность каждой из запущенных программ использовать все шесть гигабайт памяти был придуман механизм виртуального адресного пространства. Создается виртуальное пространство очень большого размера, а из него уже выделяется по 6 Гб для каждой программы. Если интересно, это адресное пространство можно найти в файле /proc/kcore, только не вздумайте никуда его копировать.

Выделенное адресное пространство для программы называется сегментом. Как только программа попытается записать или прочитать данные не из своего сегмента, ядро отправит ей сигнал SIGSEGV и программа завершится с нашей ошибкой. Более того, каждый сегмент поделен на секции, в некоторые из них запись невозможна, другие нельзя выполнять, если программа и тут попытается сделать что-то запрещенное, мы опять получим ошибку сегментации Ubuntu.

Почему возникает ошибка сегментации?

И зачем бы это порядочной программе лезть, куда ей не положено? Да в принципе, незачем. Это происходит из-за ошибки при написании программ или несовместимых версиях библиотек и ПО. Часто эта ошибка встречается в программах на Си или C++. В этом языке программисты могут вручную работать с памятью, а язык со своей стороны не контролирует, чтобы они это делали правильно, поэтому одно неверное обращение к памяти может обрушить программу.

Почему может возникать эта ошибка при несовместимости библиотек? По той же причине - неверному обращению к памяти. Представим, что у нас есть библиотека linux (набор функций), в которой есть функция, которая выполняет определенную задачу. Для работы нашей функции нужны данные, поэтому при вызове ей нужно передать строку. Наша старая версия библиотеки ожидает, что длина строки будет до 256 символов. Но программа была обновлена формат записи поменялся, и теперь она передает библиотеке строку размером 512 символов. Если обновить программу, но оставить старую версию библиотеки, то при передаче такой строки 256 символов запишутся нормально в подготовленное место, а вот вторые 256 перезапишут данные программы, и возможно, попытаются выйти за пределы сегмента, тогда и будет ошибка сегментирования linux.

Что делать если возникла ошибка сегментирования?

Если вы думаете, что это ошибка в программе, то вам остается только отправить отчет об ошибке разработчикам. Но вы все-таки еще можете попытаться что-то сделать.

Например, если падает с ошибкой сегментации неизвестная программа, то мы можем решить что это вина разработчиков, но если с такой ошибкой падает chrome или firefox при запуске возникает вопрос, может мы делаем что-то не так? Ведь это уже хорошо протестированные программы.

Первое, что нужно сделать - это обновить систему до самой последней версии, возможно, был баг и его уже исправили, а может у вас установлены старые версии библиотек и обновление решит проблему. В Ubuntu это делается так:

sudo apt update
sudo apt full-upgrade

Если это не помогло, нужно обнулить настройки программы до значений по умолчанию, возможно, удалить кэш. Настройки программ в Linux обычно содержатся в домашней папке, скрытых подкаталогах с именем программы. Также, настройки и кэш могут содержаться в каталогах ~/.config и ~/.cache. Просто удалите папки программы и попробуйте снова ее запустить. Если и это не помогло, вы можете попробовать полностью удалить программу, а потом снова ее установить, возможно, какие-нибудь зависимости были повреждены:

sudo apt remove пакет_программы
sudo apt autoremove
sudo apt install пакет_программы

Если есть возможность, попробуйте установить программу из другого источника, например, не из PPA, а более старую версию, из официальных репозиториев.

Когда вы все это выполнили, скорее всего, проблема не в вашем дистрибутиве, а в самой программе. Нужно отправлять отчет разработчикам. В Ubuntu это можно сделать с помощью программы apport-bug. Обычно Ubuntu предлагает это сделать сразу, после того как программа завершилась с ошибкой сегментирования. Если же ошибка сегментирования Ubuntu встречается не в системной программе, то вам придется самим искать разработчиков и вручную описывать что произошло.

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

Рассмотрим, как его получить. Это не так уж сложно. Сначала запустите вашу программу, затем узнайте ее PID с помощью команды:

pgrep программа

Дальше запускаем отладчик gdb:

sudo gdb -q

Подключаемся к программе:

(gdb) attach ваш_pid

После подключения программа станет на паузу, продолжаем ее выполнение командой:

(gdb) continue

segfault

Затем вам осталось только вызвать ошибку:

segfault1

И набрать команду, которая выведет стек последних вызовов:

(gdb) backtrace

Вывод этой команды и нужно отправлять разработчикам. Чтобы отключиться от программы и выйти наберите:

(gdb) detach
(gdb) quit

Дальше остается отправить отчет и ждать исправления ошибки. Если вы не уверены, что ошибка в программе, можете поспрашивать на форумах. Когда у вас есть стек вызовов, уже можно попытаться, если не понять в чем проблема, то попытаться узнать, не сталкивался ли с подобной проблемой еще кто-то.

Выводы

Теперь у вас есть приблизительный план действий, что нужно делать, когда появляется ошибка сегментирования сделан дамп памяти ubuntu. Если вы знаете другие способы решить эту проблему, напишите в комментариях!

Оцените статью

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (9 оценок, среднее: 5,00 из 5)
Загрузка...

8 комментариев к “Ошибка сегментирования Ubuntu”

  1. На самом деле от этого избавится я не могу. Остаётся мне всё сваливать на свой старый компьютер с 1024 мегабайтами озу. Постоянные ошибки сегментирования когда комплимирую какую-либо программу. Чтобы скомплимировать ядро надо по миллиону раз вводить make!! Щас выкину комп и куплю новый и думаю проблема сама разрешится.

    Ответить
  2. Здравствуйте! Я скачал программу для видеонаблюдения, называется motion (https://ru.wikipedia.org/wiki/Motion_(программа_видеонаблюдения) . Минут 5 она работает нормально после чего возникает такая ошибка: Ошибка сегментирования (стек памяти сброшен на диск) и программа прекращает работать. Скажите, можно ли самому исправить эту ошибку? Полный вывод:

    [XakeP sasha]# motion -n
    [162326040:motion] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
    [162326040:motion] [NTC] [ALL] motion_startup: Motion 4.0.1 Started
    [162326040:motion] [NTC] [ALL] motion_startup: Logging to syslog
    [162326040:motion] [NTC] [ALL] motion_startup: Using log type (ALL) log level (NTC)
    [162326040:motion] [NTC] [ENC] ffmpeg_init: ffmpeg libavcodec version 57.64.100 libavformat version 57.56.100
    [0:motion] [NTC] [ALL] main: Camera 0 is from /etc/motion/motion.conf
    [0:motion] [NTC] [ALL] main: Camera 0 is device: /dev/video0 input -1
    [0:motion] [NTC] [ALL] main: Stream port 8081
    [0:motion] [NTC] [ALL] main: Waiting for threads to finish, pid: 1198
    [1:ml1] [NTC] [ALL] motion_init: Camera 0 started: motion detection Enabled
    [1:ml1] [NTC] [VID] vid_v4lx_start: Using videodevice /dev/video0 and input -1
    [0:web_control] [NTC] [STR] http_bindsock: listening on 127.0.0.1 port 8080
    [0:web_control] [NTC] [STR] httpd_run: Started motion-httpd server on port 8080 (auth Disabled)
    [1:ml1] [NTC] [VID] v4l2_get_capability:
    ------------------------
    cap.driver: "uvcvideo"
    cap.card: "UVC Camera (046d:080a)"
    cap.bus_info: "usb-0000:00:1d.0-1.3"
    cap.capabilities=0x84200001
    ------------------------
    [1:ml1] [NTC] [VID] v4l2_get_capability: - VIDEO_CAPTURE
    [1:ml1] [NTC] [VID] v4l2_get_capability: - STREAMING
    [1:ml1] [NTC] [VID] v4l2_select_input: name = "Camera 1", type 0x00000002, status 00000000
    [1:ml1] [NTC] [VID] v4l2_select_input: - CAMERA
    [1:ml1] [WRN] [VID] v4l2_select_input: Device doesn't support VIDIOC_G_STD
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: Config palette index 17 (YU12) doesn't work.
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: Supported palettes:
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: (0) YUYV (YUYV 4:2:2)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: 0 - YUYV 4:2:2 (compressed : 0) (0x56595559)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: (1) MJPG (Motion-JPEG)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: 1 - Motion-JPEG (compressed : 1) (0x47504a4d)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format Selected palette YUYV
    [1:ml1] [NTC] [VID] v4l2_do_set_pix_format: Testing palette YUYV (1280x720)
    [1:ml1] [NTC] [VID] v4l2_do_set_pix_format: Using palette YUYV (1280x720) bytesperlines 2560 sizeimage 1843200 colorspace 00000008
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980900, "Brightness", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Brightness", default 128, current 128
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980901, "Contrast", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Contrast", default 32, current 32
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980902, "Saturation", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Saturation", default 28, current 28
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980918, "Power Line Frequency", range 0,2
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Power Line Frequency", default 2, current 2
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980913, "Gain", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Gain", default 0, current 0
    [1:ml1] [NTC] [VID] vid_v4lx_start: Using V4L2
    [1:ml1] [NTC] [ALL] image_ring_resize: Resizing pre_capture buffer to 1 items
    [1:ml1] [NTC] [VID] v4l2_set_control: setting control "Contrast" to 69 (ret -1 Input/output error)
    [1:ml1] [NTC] [VID] v4l2_set_control: setting control "Saturation" to 19 (ret -1 Input/output error)
    [1:ml1] [NTC] [STR] http_bindsock: listening on 127.0.0.1 port 8081
    [1:ml1] [NTC] [ALL] motion_init: Started motion-stream server on port 8081 (auth Disabled)
    [1:ml1] [NTC] [EVT] event_new_video Source FPS 5
    [1:ml1] [NTC] [ENC] ffmpeg_open Selected Output FPS 5
    [1:ml1] [NTC] [ENC] ffmpeg_avcodec_log: Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
    [1:ml1] [NTC] [EVT] event_newfile: File of type 8 saved to: ./01-20170320090548.avi
    [1:ml1] [NTC] [ALL] motion_detected: Motion detected - starting event 1
    [1:ml1] [NTC] [ALL] preview_save: different filename or picture only!
    [1:ml1] [NTC] [EVT] event_newfile: File of type 1 saved to: ./01-20170320090548-01.jpg
    [1:ml1] [NTC] [ALL] motion_loop: End of event 1
    [1:ml1] [NTC] [EVT] event_new_video Source FPS 5
    [1:ml1] [NTC] [ENC] ffmpeg_open Selected Output FPS 5
    [1:ml1] [NTC] [ENC] ffmpeg_avcodec_log: Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
    [1:ml1] [NTC] [EVT] event_newfile: File of type 8 saved to: ./02-20170320091023.avi
    [1:ml1] [NTC] [ALL] motion_detected: Motion detected - starting event 2
    [1:ml1] [ERR] [VID] v4l2_next: VIDIOC_QBUF: No such device
    [1:ml1] [ERR] [ALL] motion_loop: Video device fatal error - Closing video device
    [1:ml1] [NTC] [VID] vid_close: Closing video device /dev/video0
    [1:ml1] [WRN] [ALL] motion_loop: Retrying until successful connection with camera
    [1:ml1] [NTC] [VID] vid_v4lx_start: Using videodevice /dev/video0 and input -1
    [1:ml1] [NTC] [VID] v4l2_get_capability:
    ------------------------
    cap.driver: "uvcvideo"
    cap.card: "UVC Camera (046d:080a)"
    cap.bus_info: "usb-0000:00:1d.0-1.3"
    cap.capabilities=0x84200001
    ------------------------
    [1:ml1] [NTC] [VID] v4l2_get_capability: - VIDEO_CAPTURE
    [1:ml1] [NTC] [VID] v4l2_get_capability: - STREAMING
    [1:ml1] [NTC] [VID] v4l2_select_input: name = "Camera 1", type 0x00000002, status 00000000
    [1:ml1] [NTC] [VID] v4l2_select_input: - CAMERA
    [1:ml1] [WRN] [VID] v4l2_select_input: Device doesn't support VIDIOC_G_STD
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: Config palette index 17 (YU12) doesn't work.
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: Supported palettes:
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: (0) YUYV (YUYV 4:2:2)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: 0 - YUYV 4:2:2 (compressed : 0) (0x56595559)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: (1) MJPG (Motion-JPEG)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: 1 - Motion-JPEG (compressed : 1) (0x47504a4d)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format Selected palette YUYV
    [1:ml1] [NTC] [VID] v4l2_do_set_pix_format: Testing palette YUYV (1280x720)
    [1:ml1] [NTC] [VID] v4l2_do_set_pix_format: Using palette YUYV (1280x720) bytesperlines 2560 sizeimage 1843200 colorspace 00000008
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980900, "Brightness", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Brightness", default 128, current 128
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980901, "Contrast", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Contrast", default 32, current 32
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980902, "Saturation", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Saturation", default 28, current 28
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980918, "Power Line Frequency", range 0,2
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Power Line Frequency", default 2, current 2
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980913, "Gain", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Gain", default 0, current 32
    [1:ml1] [NTC] [VID] vid_v4lx_start: Using V4L2
    [1:ml1] [NTC] [VID] v4l2_set_control: setting control "Contrast" to 69 (ret -1 Input/output error)
    [1:ml1] [NTC] [VID] v4l2_set_control: setting control "Saturation" to 19 (ret -1 Input/output error)
    [1:ml1] [ERR] [VID] v4l2_next: VIDIOC_QBUF: No such device
    [1:ml1] [ERR] [ALL] motion_loop: Video device fatal error - Closing video device
    [1:ml1] [NTC] [VID] vid_close: Closing video device /dev/video0
    [1:ml1] [WRN] [ALL] motion_loop: Retrying until successful connection with camera
    [1:ml1] [NTC] [VID] vid_v4lx_start: Using videodevice /dev/video0 and input -1
    [1:ml1] [ALR] [VID] vid_v4lx_start: Failed to open video device /dev/video0: No such file or directory
    [1:ml1] [WRN] [ALL] motion_loop: Retrying until successful connection with camera
    [1:ml1] [NTC] [VID] vid_v4lx_start: Using videodevice /dev/video0 and input -1
    [1:ml1] [ALR] [VID] vid_v4lx_start: Failed to open video device /dev/video0: No such file or directory
    [1:ml1] [WRN] [ALL] motion_loop: Retrying until successful connection with camera
    [1:ml1] [NTC] [VID] vid_v4lx_start: Using videodevice /dev/video0 and input -1
    [1:ml1] [NTC] [VID] v4l2_get_capability:
    ------------------------
    cap.driver: "uvcvideo"
    cap.card: "UVC Camera (046d:080a)"
    cap.bus_info: "usb-0000:00:1d.0-1.3"
    cap.capabilities=0x84200001
    ------------------------
    [1:ml1] [NTC] [VID] v4l2_get_capability: - VIDEO_CAPTURE
    [1:ml1] [NTC] [VID] v4l2_get_capability: - STREAMING
    [1:ml1] [NTC] [VID] v4l2_select_input: name = "Camera 1", type 0x00000002, status 00000000
    [1:ml1] [NTC] [VID] v4l2_select_input: - CAMERA
    [1:ml1] [WRN] [VID] v4l2_select_input: Device doesn't support VIDIOC_G_STD
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: Config palette index 17 (YU12) doesn't work.
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: Supported palettes:
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: (0) YUYV (YUYV 4:2:2)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: 0 - YUYV 4:2:2 (compressed : 0) (0x56595559)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: (1) MJPG (Motion-JPEG)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format: 1 - Motion-JPEG (compressed : 1) (0x47504a4d)
    [1:ml1] [NTC] [VID] v4l2_set_pix_format Selected palette YUYV
    [1:ml1] [NTC] [VID] v4l2_do_set_pix_format: Testing palette YUYV (1280x720)
    [1:ml1] [NTC] [VID] v4l2_do_set_pix_format: Using palette YUYV (1280x720) bytesperlines 2560 sizeimage 1843200 colorspace 00000008
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980900, "Brightness", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Brightness", default 128, current 128
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980901, "Contrast", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Contrast", default 32, current 32
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980902, "Saturation", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Saturation", default 28, current 28
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980918, "Power Line Frequency", range 0,2
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Power Line Frequency", default 2, current 2
    [1:ml1] [NTC] [VID] v4l2_scan_controls: found control 0x00980913, "Gain", range 0,255
    [1:ml1] [NTC] [VID] v4l2_scan_controls: "Gain", default 0, current 32
    [1:ml1] [NTC] [VID] vid_v4lx_start: Using V4L2
    [1:ml1] [NTC] [VID] v4l2_set_control: setting control "Contrast" to 69 (ret 0 )
    [1:ml1] [NTC] [VID] v4l2_set_control: setting control "Saturation" to 19 (ret 0 )
    [1:ml1] [ERR] [ENC] ffmpeg_avcodec_log: Too large number of skipped frames 87374 > 60000
    [1:ml1] [ERR] [ENC] ffmpeg_put_frame: Error while writing video frame: Invalid argument
    [1:ml1] [NTC] [ALL] motion_loop: Thread exiting
    [1:ml1] [NTC] [STR] stream_stop: Closing motion-stream listen socket & active motion-stream sockets
    [1:ml1] [NTC] [STR] stream_stop: Closed motion-stream listen socket & active motion-stream sockets
    Ошибка сегментирования (стек памяти сброшен на диск)

    Ответить
  3. С ошибкой SIGSEGV или так называемой ошибкой сегментации(на самом деле это ошибки обращения с памятью) вы ничё не сможете сделать... если вы юзер, а не разработчик и она возникает в вашей проге... можете только одного не запускать эту прогу удалить её или попытаться обновить, возможно(вовсе не обязательно!) её заметили и исправили. Но вообще лицензионное соглашение по Ubuntu вас предупреждает, что вы пользуетесь системой в которой софт вовсе не обязан работать и никто за это не отвечает... вы это делаете на свой страх и риск! это краткий его перевод. А если вы купили операционку заплатили бабки и заказали техподдержку, то вы тогда уже имеете право обратиться в службу тех поддержки сообщить баг, где и как он возникает и они обязаны не просто испавить его прислав патч, но так же всем таким как вы кто заплатил. Иначе вы имеете право подать на них в суд и они обязаны компенсировать вам убытки. Но это не Ubuntu. Обратная сторона медали свободного по и бесплатных операционок... среди Линуксовых есть AIX(только платная+ техподдержка), SUSE(не путать с Open Suse) и Debian(есть free урезаный вариант и нормальный платный). Это оч серьёзная ошибка краеугольный камень всех программ и работы компа в целом... Если это ломается, то всё летит к чёрту!!! Конечно они стараюстся и сразу посылать вас не будут... Это их репутация! но вообще дело в програмерах. Щаз стало оч много криворуких... Вот я смотрю на их код и удивляюсь, как можно так безалаберно писать проги! Если бы вы только это видели вы бы не удивились почему всё так плохо работает... Встречаются такие кадры которые всё только портят! ну а что програмеров не хаватет, делать надо много вот и берут всех подряд.... А потом начинается. Если конечно это заметили до релиза, то ладно... Но тут всё ещё зависит от тестеров. Если они хорошие то найдут баги вовремя до релиза и исправят. но у нас как бывает... Отдела тестирования нет, сэкономили.. Тестер дай бог 2-3 а то часто 1 вообще... В программе всегда много ошибок. Особенно вначале... все мы ошибаемся, особенно некоторые. Причина? Нехватка мозгов или банально невнимательность... поэтому все проги должны быть тщательнейшим образом оттестированы. только тогда она может быть допущена к релизу. А ещё заказчик подгоняет. Хорошую прогу нельзя написать в спешке... тем более большую. Такие ошибки как оч трудно найти, а если она не всегда воспроизводится, так вообще нереально, Если только случайно наткнёшься. Потому что как бывает один раз вылетела, а второй нет и пошла дальше и норм... Или пошла дальше и всё стало неправильным,.. с програмой начинают твориться чудеса... это всё та же ошибка с памятью, которая всё портит... Вылететь может не только ваша прога но и вся система. Но даже если она стабильно воспроизводится, то на её поиск может понадобиться дни а может и неделя две кропотливой упорной работы, носящей изнуряющий характер... искать будут всем отделом... но её тогда по крайней мере можно найти.... а если нет... то вам поможет только чудо... А уж что сделают после этого с тем кто это сделал я даже не знаю! Вот такие вот они эти ошибки сегментации.... Я показал то что там происходит за кадром юзера...

    Ответить
  4. sergey@msi:~$ google-chrome
    [14402:14402:0903/155648.948925:FATAL:credentials.cc(132)] Check failed: . : Отказано в доступе (13)
    Ловушка трассировки/останова (образ памяти сброшен на диск)

    Тоже такая при запуске Chrome. Появилась после обновления ubuntu до 24.04. Переустановка, чистка кеша, конфигов не помогает

    Ответить

Оставьте комментарий