Apport gtk грузит процессор
Что означает ошибка и почему она продолжает появляться при запуске? Я сообщил об ошибке, но ничего не изменилось.
Ubuntu имеет программу под названием Apport, которая отвечает за обнаружение таких сбоев и, с согласия пользователя, сообщает об этих сбоях разработчикам. Этот процесс предназначен для решения проблемы разработчиков.
Однако это может быть очень раздражающим для обычных пользователей, и нет смысла показывать ошибки пользователям, когда они сами ничего не могут с этим поделать. Так что вы можете отключить их.
Выключить аппорт
Просто установите значение enabled в 0, и это отключит apport.
Обратите внимание, что вы можете временно отменить эту настройку с помощью sudo service apport start force_start=1 .
Не могли бы вы уточнить, почему эти ошибки включены по умолчанию? Если они относительно бесполезны для конечного пользователя, то, вероятно, стоило бы их подавить и добавить глобальную опцию «отчет автоматически падает», которая вообще не взаимодействует с пользователем?
(Пишу новый ответ, потому что пока не могу комментировать.)
Добавление к ответу @Vlad Савицкого:
Задача Apport - сообщать о сбоях разработчикам Ubuntu. Как таковая, она является доброкачественной и не должна быть просто отключена.
Аппорт должен показать вам каждую проблему только один раз. Кажется, проблема в том, что само приложение может запутаться и не может записать, что оно уже сообщило о проблеме, или забывает, что оно имело место. Это может привести к целой серии диалогов, что раздражает. Это может произойти при обновлении системы.
Одним из решений является удаление всех отчетов о сбоях в /var/crash каталоге. Эта команда может сделать это для вас:
Конечно, если произойдут новые сбои, apport уведомит вас о тех, которые должны.
Если apport продолжает раздражать, его полное отключение - это другое решение. Как описал Влад, нужно
и установить enabled=0 . Чтобы активировать это изменение, 16.04 и выше, restart для перезапуска аппорта требуется другой синтаксис, чем просто . 16.04 использует systemd для управления службами, так что systemctl команда может быть использована:
What does the error mean and why does it keep showing up at start-up? I reported a bug but nothing changed.
Welcome to Ask Ubuntu! ;-) Apport is the system that intercepts crashes when they happen, so that is not the problem, just the symptom. If you want help with the error itself, you need to provide more details.
Как включить Apport и почему он выключен по умолчанию?
Apport по умолчанию отключён в стабильных релизах, даже если установлен. Компонент Apport, который осуществляет автоматический перехват падений программ, отключён в стабильных релизах по ряду причин:
Заметьте, что Apport не перехватывает SIGABRT сигнал. Если программа получает именно такой сигнал, то нужно ознакомиться с DebuggingProgramCrash.
8 Answers 8
As of Ubuntu 16.04 systemd apport does not seem to honor its config file
If that does not work, you would then need to mask the service
Previous versions of Ubuntu:
You need to edit /etc/default/apport . The following changes will prevent Apport from starting at boot:
Graphical: Open a terminal with ( CTRL + ALT + T ) and type this:
and then push ENTER . You password is being typed, but will not display as dots.
Command line:
A file editor is now open. Change enabled from "0" to a "1" so it looks like this:
To turn it off make it:
Now save your changes and close the file editor. Apport will now no longer start at boot. If you want to turn it off immediately without rebooting, run sudo service apport stop .
You can also use sudo service apport stop without modifying /etc/default/apport to turn it off temporarily.
Isn't it the case that "service apport stop" will stop it for the present, and setting enabled=0 is what turns it off at boot?
On Unity: 17.04 and below:
Click on Ubuntu icon, search for "System settings"
Select Privacy > Diagnostics tab
Tick "Send error reports to Canonical"
I had this checked, and it still wasn't sending error reports. Looks like it has to be enabled from the command line.
The above script should stop apport, then take a backup of its configuration file, disable apport on boot, and lastly moves the backup to your home directory.
Thanks! Out of all three of the answers, only this one worked for my friend when we overwrote Ubuntu onto his Chromebook!
On newer versions of ubuntu (15.04+)
To stop the service:
To disable the service at startup:
To check the status of the service:
Finally, you can also prevent the startup of a systemd service by masking it. The service will not be able to start (even manually) unless unmasked.
Don't disable apport. One of these days, you might have a sequence of crashes and never know it except for system bad behavior or some application-specific symptom.
The /var/crash directory is there to record any mishap. You might need it some day.
- Create a new folder E.g. $HOME/crash and copy all of the existing crash reports to it.
- sudo rm /var/crash/*
- sudo reboot
The repetitive crash pop-up behavior should now be gone. Also, the crash reports that you saved might be valuable in reporting a bug to launchpad.
Why not just remove it entirely?
Version 16.04 LTS
Also, might want to check this out:
I found that I still wanted to disable Apport's crash handling in Python3. I had both tried disabling apport via cmdline ( sudo systemctl disable apport.service ), GUI (see this hopefully-original blog post), and via removal ( sudo apt purge ); however, Python backtraces showed apport still being present.
It seems like python3-apport is a prereq of ubuntu-desktop (relates launchpad bug 1773087), so may be hard to remove it.
As an example, the following worked (disabled apport ) on my system for python3.6 :
EDIT: Didn't try doing stuff like isolated mode in python3 - dunno if that'd work with Ubuntu-baked site customizations.
Система StableReleaseUpdate (SRU). Путешествие от ошибки до её исправления.
2 Answers 2
Ubuntu has a program called Apport that is responsible for detecting such crashes and upon user consent, report these crashes to developers. This process intends to get the problem fixed by the developers.
However it can be very annoying to common users, and there is no point in showing errors to users when they cannot do anything about it themselves. So you might want to disable them.
The apport system creates crash report files in the /var/crash directory. These crash report files cause the error message to appear everytime Ubuntu boots.
Turn off apport
Just set the value of enabled to 0, and this will disable apport.
Save the file and close it. From the next boot onwards, there should be no error messages ever. If you do not want to restart the system then restart apport from the command line.
Could you elaborate at all on why these errors are enabled by default? If they are relatively useless to the end user it would probably be worth suppressing them and adding a global "report crashes automatically" option which doesn't interface the user at all?
(Writing a new answer, because I can not comment yet.)
Adding to @Vlad Savitsky's answer:
Apport's task is to report crashes to the Ubuntu developers. As such it is benign and should not be simply turned off.
Apport is supposed to show you every problem only once. The issue seems to be that apport itself can become confused and fails to record that it already reported a problem, or forgets that it did. This can lead to whole series of dialogs, which is annoying. This might happen when upgrading the system.
One solution is to delete all crash reports in the /var/crash directory. This command can do that for you:
Of course, if new crashes occur, apport will notify you about those, which it should.
If apport continues to be annoying, turning it off entirely is a different solution. As Vlad described, you need to
and set enabled=0 . To activate that change, on 16.04 and above, a different syntax than just restart is needed to restart apport. 16.04 uses systemd to manage services, so that the systemctl command can be used:
I'm getting 100% CPU usage at startup consistently by apport-gtk as shown here.
According to Apport wiki shouldn't even be running on my machine since it's not a beta version (although I upgraded from 14.04 LTS Beta 2 to the release version).
Finally, I have tried the following to no avail:
I've disabled all options in System Settings > Security & Privacy > Diagnostics tab as shown below.
Что это и зачем?
Отладка сбоящей программы без автоматизированных средств очень трудоёмка для пользователей. Множество сбоев в программах на компьютерах пользователей оставались без отчёта для разработчика программы и следовательно без исправления, потому что:
- Большое количество сбоев сложно воспроизводимы.
- Пользователь не знает как лучше подготовить отчёт для разработчика, используя отладочные символы и gdb.
- Для создания хорошего отчёта нужна информация о самом сбое, версиях пакетов, архитектуре аппаратуры, версии операционной системы и так далее.
- Нет простого интерфейса для пользователя, позволяющего легко отправлять детальный отчёт о проблеме.
- Существующие решения типа bug-buddy или krash специфичны для конкретной среды рабочего стола (desktop environment) и нелегко адаптировать их сторонним разработчикам для своих программ. Так же нельзя получить отчёт о падениях программ, работающих демонами в фоне, типа баз данных или емайл серверов. Плохо интегрируются с существующими отладочными пакетами, которые могут быть в дистрибутиве.
Apport - это система, которая:
- Когда впервые перехватывается падение программы, происходит сбор потенциально нужной информации о самом сбое и об окружении операционной системы.
- Может быть автоматически вызван при возникновении необработанных исключений (unhandled exceptions) в различных языках программирования. В Убунту, для примера, это делается, в том числе и для Python.
- Может быть автоматически вызван для решения любых проблем, которые можно автоматически обнаружить. Убунту, для примера, автоматически обнаруживает ошибки при установке и обновлении пакетов в update-manager.
- Предоставляет интерфейс, который информирует пользователя об аварии и инструктирует о дальнейших действиях.
- Можно создать просто отчёт (не о сбое) для конкретного приложения, чтобы разработчик получил информацию о версиях пакетов, операционной системы и т.д.
Apport позволяет в будущем существенно поднять уровень качества программ.
Если разработчик хочет сделать отчёты о падении программы ещё лучше, то нужно обратиться к DeveloperHowTo.
Будущие планы.
Сбор другой интересной информации для отчёта, но в тоже время удержать размер дампов в разумных пределах.
Инструменты.
Есть несколько инструментов для работы с отчётами по ошибкам:
- Шаблоны Ubuntu Bug: эти шаблоны для пакетов, написанные командой Ubuntu Bug Control, предотвращают создание дубликатов ошибок в трекер. Это файлы XML, которые написаны с прицелом на расширение функционала в будущем.
- apport-unpack: разделяет отчёт на отдельные файлы, по одному на атрибут. Это полезно для извлечения дампов. Этот инструмент не нужен при работе с Launchpad, так как там использует MIME и уже всё разделено на отдельные вложения.
- apport-retrace: обеспечивает в отчёте трассировку стека вызовов при ошибке программы. С ключём -g автоматически скачиваются пакеты с отладочными символами и делается трассировка стека с использованием отладочных символов.
- python-problem-report: этот пакет содержит модуль Python problem_report, который предоставляет общий доступ к словарю отчёта ошибок.
- python-apport: в этом пакете инкапсулированы основные возможности Apport и определены отчёты ошибок и падений. Можно реализовать свои собственные frontends и backends.
- apport-collect: проверяет исходный пакет для существующего на Launchpad бага, запускает хуки Apport и заливает полученные данные обратно в баг трекер.
Хуки Apport.
Можно указать, что нужно дополнительно указать при создании отчёта для конкретной программы. Это делается через хуки Apport.
Для примера из каталога /usr/share/apport/package-hooks/:
- source_xorg.py - добавить в отчёт файлы журналов и детали об оборудовании.
- usplash - игнорировать падения для определённого пути.
- source_totem.py - задать вопросы и на основе их собрать дополнительную информацию.
Если отчёт об ошибке или сбою отправляется через Apport, то нужные хуки вызываются автоматически. Если есть баг, оформленный мимо Apport, а вы заинтересованы в информации, выдаваемой хуком, то можно использовать apport-collect bugnumber . Больше информации по этому вопросу в Tools.
Вызов Frontend.
Update-notifier следит с помощью inotify за каталогом /var/crash/. Если там появляется что-то новое, то он вызывает /usr/share/apport/apport-checkreports. Если есть новые отчёты, то вызывается /usr/share/apport/apport-gtk, который и показывает окна, иллюстрированные выше.
Сам frontend и собирает дополнительную информацию о версиях пакетов, версии операционной системы и вызывает нужные хуки для данной программы.
Для отключения можно запустить
gsettings set com.ubuntu.update-notifier show-apport-crashes false
1 Answer 1
Take a look and delete all files in /var/crash/ :
I suddenly had the same problem apport-gtk taking 100% on every restart.
Seemed there was a huge (2GB+) bogus crash file in /var/crash/ that couldn't be parsed. After several minutes of waiting I always ended up with this rather mysterious dialog:
After I deleted the file in /var/crash/ both issues were gone.
Unfortunately I had to re-install for some reason soon after I posted the question. After the new installation, it's working perfectly fine. If I have to guess, I'd blame it on the fact that my installation was an upgrade to 14.04 from beta 2. I guess that screwed apport somehow.
apport-gtk was taking up 100% of my cpu usage when starting the Atom text editor, and Atom was extremely slow to load or quit. After clearing /var/crash it works perfectly for me
I get intermittent things with apport-gtk taking 100% CPU, maybe it is error reporting but it is driving my laptop crazy. It's like I have headphones on, take my headphones off, and I hear my laptop fans going insane. Maybe this is related to me being a webdeveloper and crashing chrome tabs? Will have to try this answer, but it doesn't happen for me on every startup, it's like after I crash something
The system crash dialog is annoying me, how can I turn it off? I'd also like to know how to turn it back on just in case I need it to report a problem.
Not sure but I also think the crash dump may contain full text files for ex. so if you have sensitive data on it, better keep it disabled. I think, every time a crash happens and that pops up, we should be clearly informed that a crash dump of like 200MB will be uploaded and it will contain data you were editing on the application. I finally found something that I dislike on ubuntu :(, never thought this day would come.
Backend.
Для того, чтобы задержка и нагрузка на CPU и I/O была как можно меньше, /usr/share/apport/apport собирает данные только, когда падающий процесс ещё существует в памяти. Информация из /proc/pid, дампы, путь к исполняемому файлу, номер сигнала записывается в /var/crash/executable_path.uid_user.crash.
Ubuntu 12.04 и новее.
Начиная с релиза Ubuntu 12.04, Apport работает постоянно для сбора данных падений программ для демона whoopsie (смотри ErrorTracker).
Как это всё работает?
Apport использует /proc/sys/kernel/core_pattern для получения дампа.
$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c
Заметьте, что даже если отключено создание файлов дампов через ulimit -c 0, apport продолжает перехватывать сбои.
Для перехвата необработанных исключений в Python программах используется /etc/python*/sitecustomize.py для вызова Apport.
Как это выглядит для пользователя?
Со стороны пользователя Apport выглядит очень просто и не навязчиво.
Apport автоматически будет вызван:
- Если любой процесс в системе умирает по сигналу, называемому crash. Например segmentation violation = signal 11 = SIGSEGV = segmentation fault = sig11 = segfault или bus errors = SIGBUS или исключение в операции с плавающей запятой = floating-point exception = SIGFPE и другие.
- Программа на языке Python вызывает неперехваченное исключение (Uncaught Exception).
Происходит создание первоначального отчёта об ошибке в каталоге /var/crash. Имя файла генерируется из пути к упавшей программе и пользовательского ID.
Если упавший процесс "принадлежит" пользователю, который в данный момент вошёл в систему, или процесс системный и в систему зашёл администратор, то Apport информирует об аварии и предлагает сообщить о проблеме разработчикам.
Brief system info:
I've run out of ideas and am not sure what I can do to fix this issue. Any ideas?
The processes (4 of 'em as shown) go away by themselves after like 15-20 seconds so I don't want to kill them, not to mention having to start the computer by killing something every time would be weird ;).
Читайте также: