Что происходит после того, как `ubuntu-bug` сделал свое дело?

14

Еще некоторое время назад вы не запускали apport-bugили не ubuntu-bugсообщали об ошибке. Затем система откроет панель запуска с вашей учетной записью, загрузит собранную информацию и позволит вам добавить больше информации в отчет об ошибке.

Теперь, когда я запускаю gksudo ubuntu-bug(например, с crashаргументом -file в качестве аргумента), появляется диалоговое окно с общей ошибкой

введите описание изображения здесь

и это все.

Куда отправляется отчет? Определенно не пускать панель в качестве отчета об ошибке (хотя в конкретной ситуации люди смогли подать отчет об этой ошибке).

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

Может ли быть так, что «система» решила, что это будет дубликат уже существующей ошибки?

guntbert
источник

Ответы:

7

Технически, ubuntu-bugпросто регистрирует отчет о сбое локально. Отдельная программа whoopsieотслеживает зарегистрированные отчеты и загружает их в центральную базу данных, где они автоматически группируются для выявления общих проблем.

Полученные данные отображаются на трекере ошибок Ubuntu :

График сообщений об ошибках в Ubuntu

Совокупные тенденции общедоступны, а подробности отчетов доступны для доверенных разработчиков. Более подробная информация доступна на Ubuntu Wiki .

По умолчанию ubuntu-bugне открывает ошибки на Launchpad для отчетов о сбоях в стабильных выпусках, но вы можете настроить их, если хотите. После внесения этого изменения вы можете открыть ошибку для существующего отчета о сбое, запустив ubuntu-bug /var/crash/foo.crash.

ændrük
источник
3

Собранная информация или отчет загружаются в систему отслеживания ошибок.

Если какой-либо процесс в системе умирает из-за сигнала, который обычно называют «сбоем» (нарушение сегментации, ошибка шины, исключение с плавающей запятой и т. Д.), Или, например, упакованное приложение Python вызывает необработанное исключение, серверная часть apport автоматически вызывается.

Он создает первоначальный отчет о сбое в файле в / var / crash / (имя файла состоит из имени сбойного исполняемого файла и идентификатора пользователя). Если сбойный процесс принадлежит пользователю, который в данный момент вошел в систему, или он принадлежит системному процессу, а пользователь является администратором, apport информирует пользователя о сбое и предлагает сообщить о проблеме.

Если пользователь оставляет флажок «Отправить отчет об ошибках», Apport загружает собранную информацию в систему отслеживания ошибок. После этого он открывает страницу регистрации ошибок пакетов с разумным заголовком ошибки по умолчанию и оставляет оставшуюся часть процесса регистрации ошибок веб-интерфейсу.

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

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

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

Типы ошибок

Отчеты Apport

Отчеты Apport - это ошибки, о которых сообщается с помощью автоматизированной программы отчетов об ошибках Apport. Сообщение об ошибках с помощью Apport является предпочтительным способом сообщения об ошибках, так как оно дает разработчикам много информации об уязвимой системе. При использовании Apport требуется меньше дополнительной информации, что ускоряет весь процесс.

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

Подтвержденные ошибки

Когда ошибка помечена как «Подтвержденная», она еще не полностью устранена. Эта ошибка очень близка к пометке «Triaged», но вы должны убедиться, что она готова для разработчиков.

Запросы функций

Если отчет об ошибке на самом деле является запросом функции, есть две возможности. Если запрошенное улучшение является небольшим и четко определенным, и / или предложение касается вышестоящего проекта, значение ошибки должно быть установлено на «Список пожеланий». По завершении отчета статус должен быть установлен на «Triaged».

Только члены команды Ubuntu Bug Control могут сделать это. Если вы не являетесь участником, вам нужно будет спросить кого-то, кто сделает это за вас. Вставьте номер ошибки в # ubuntu-bugs и скажите, что вы считаете, что ошибка должна быть установлена ​​в «Wishlist». Кто-то заметит и установит это для вас, хотя и не обязательно сразу.

Как это работает внутри?

Перехват аварии

Apport использует / proc / sys / kernel / core_pattern для прямой передачи дампа ядра в apport:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c
$ 

Обратите внимание: даже если для ulimit заданы отключенные основные файлы (указав нулевой размер основного файла с помощью ulimit -c 0), apport все равно сохранит сбой. Для перехвата сбоев Python он устанавливает /etc/python*/sitecustomize.pyapport для обработки необработанных исключений.

пример

Apport может даже захватывать файлы ядра, если PID 1 (Upstart) умирает:

  1. Если Upstart обнаруживает внутреннюю несогласованность, он вызывает сигнал SIGABRT.
  2. Обработчик сбоя Upstart вызывается в SIGABRT.
  3. Upstart обработчик сбоев разветвляет дочерний процесс.
  4. Дочерний процесс Upstart повторно поднимает сигнал, в результате чего ребенок выходит ненормально.
  5. Ядро обнаруживает, что дочерний процесс завершился ненормально, и вызывает apport, передавая файл ядра в соответствии со стандартным вводом (из-за / proc / sys / kernel / core_pattern).
  6. apport записывает файл ядра на диск в / var / crash /.
  7. PID 1 ожидает завершения дочернего процесса (что происходит только после того, как apport закончит запись основного файла).
  8. PID 1 выходит.
  9. ядро паникует.
  10. При следующей загрузке Whoopsie обнаружит аварийный файл и обработает его.

Backend

Чтобы удерживать задержку и влияние ЦП / ввода-вывода на минимально возможное значение, /usr/share/apport/apportвыполняется сбор только тех данных, которые необходимо получить, пока сбойный процесс все еще существует: информация из /proc/pid, дамп ядра, путь к исполняемому файлу и номер сигнала. Отчет написан для /var/crash/executable_path.uid.crash.

Интерфейс вызова

В Gnome модуль уведомлений об обновлениях сохраняет часы inotify /var/crash. Когда появляется что-то новое, он вызывает / usr / share / apport / apport-checkreports. Если появляются новые отчеты, он вызывает / usr / share / apport / apport-gtk, который является интерфейсом, показанным на скриншотах выше.

Затем внешний интерфейс собирает дополнительную информацию, такую ​​как версии пакета, контрольные суммы файлов пакета или версию ОС, и вызывает все соответствующие перехватчики пакетов. Чтобы отключить это, вы можете запустить gsettings set com.ubuntu.update-notifier show-apport-crashes false (как обычный пользователь рабочего стола).

Auto-retracer на основе панели запуска

В центре обработки данных Canonical работает служба, которая автоматически отслеживает ошибки с помощью apport. Помечая ошибки в соответствии с архитектурой в Launchpad, будет произведен повторный просмотр и тег будет удален. Используются следующие теги: need-i386-retrace или need-amd64-retrace. Смотрите объявление.

Пакетные Крючки Apport

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

  • source_xorg.py - добавляет дополнительные файлы журнала и сведения об оборудовании в отчеты об ошибках.
  • usplash - игнорирует сбои в определенных путях кода
  • source_totem.py - задает вопросы репортеру и собирает различную информацию на основе ответов

в / usr / share / apport / package-hooks. Существует также список пакетов, обеспечивающих хуки аппортов.

Если отчет о сбое или ошибке представлен через apport, соответствующие хуки будут запущены автоматически. Если у вас уже есть сообщение об ошибке, которая была подана без apport, и вас интересует информация из этих хуков, вы можете попросить репортера ошибок использовать номер ошибки apport-collect.

Используйте источник, Люк!

  • Вы можете скачать архив с исходным кодом со страницы проекта Launchpad или архив с исходным кодом Ubuntu из архива Ubuntu.
  • Apport разработан с базаром RCS на Launchpad. Если вы хотите внести в него свой вклад или разработать собственную систему на его основе, вы можете получить собственную ветку с помощью bzr get lp: apport для trunk или debcheckout -a apport для ветки пакетов Ubuntu.

Планы на будущее

Различные улучшения производительности, улучшенные инструменты для работы с отчетами и интеграция большего количества языков (трассировки стека Mono / Python, сообщения подтверждений и т. Д.). См. Соответствующую спецификацию.

Источники: Apport , как сортировать , и как включить Apport

Митч
источник
Это процесс, к которому я привык - но теперь последнее предложение, похоже, больше не применимо - веб-интерфейс не открывается. Я исправил свой вопрос с идеей, о которой вы мне ответили.
Гюнтберт
Я думаю, что веб-интерфейс не локальный (не на стороне пользователя), а онлайн, но я не уверен.
Митч
Этот источник последний раз обновлялся в ноябре 2012 года. Информация может быть устаревшей ..
Гюнтберт
Я видел это, но я думаю, что, поскольку ничего не изменилось, не было необходимости обновлять, я думаю. Теперь, возможно, когда выйдет 13.10, произойдут изменения, так как это будет мульти-устройство. Последняя версия Apport 2.61 от 10 октября 2012 года.
Митч