mirror of https://github.com/mpv-player/mpv
495 lines
26 KiB
XML
495 lines
26 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- synced with r28615 -->
|
||
<appendix id="bugreports">
|
||
<title>Как сообщать об ошибках</title>
|
||
|
||
<para>
|
||
Хорошие сообщения об ошибках вносят значительный вклад в разработку любого
|
||
программного продукта. Но, как и написание хорошей программы, хорошее сообщение
|
||
об ошибке включает в себя некую долю работы. Пожалуйста, осознайте, что
|
||
большинство разработчиков — занятые люди, получающие огромное количество
|
||
писем. Поэтому, хотя Ваши отзывы необходимы для улучшения <application>MPlayer</application>'а, хотя
|
||
они очень приветствуются, пожалуйста поймите, что Вы должны предоставить
|
||
<emphasis role="bold">всю</emphasis> требуемую нами информацию, поэтому точно
|
||
следуйте инструкциям в этом документе.
|
||
</para>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="bugreports_security">
|
||
<title>Отчеты об ошибках безопасности</title>
|
||
|
||
<para>
|
||
В случае, если Вы нашли уязвимость и хотите позволить нам исправить ее до того, как она будет
|
||
обнародована, мы будем рады получить Ваше уведомление по адресу
|
||
<ulink url="mailto:security@mplayerhq.hu">security@mplayerhq.hu</ulink>.
|
||
Пожалуйста добавьте [SECURITY] или [ADVISORY] к теме письма.
|
||
Убедитесь, что Ваш отчет содержит полный и подробный анализ ошибки.
|
||
Желательно также прислать и исправление уязвимости.
|
||
Пожалуйста, не откладывайте отчет для написания подтверждающего ошибку эксплойта.
|
||
Вы можете отослать его позже другим письмом.
|
||
</para>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="bugreports_fix">
|
||
<title>Как исправить ошибку</title>
|
||
<para>
|
||
Если Вы ощущаете в себе достаточно сил и умения для самостоятельного решения
|
||
проблемы, пожалуйста, сделайте это. Или может быть Вы уже это сделали?
|
||
Пожалуйста, прочитайте <ulink url="../../tech/patches.txt">этот короткий
|
||
документ</ulink>, чтобы узнать, как сделать так, чтобы Ваш код включили
|
||
в <application>MPlayer</application>. Люди из рассылки
|
||
<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">mplayer-dev-eng</ulink>
|
||
помогут Вам, если у Вас есть вопросы.
|
||
</para>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="bugreports_regression_test">
|
||
<title>Как провести проверку на деградацию, используя Subversion</title>
|
||
|
||
<para>
|
||
Иногда возникает проблема 'раньше это работало, а теперь - нет'. Здесь представлена
|
||
пошаговая процедура определения момента возникновения ошибки.
|
||
Но она <emphasis role="bold">не для</emphasis> рядовых пользователей.
|
||
</para>
|
||
|
||
<para>
|
||
Во-первых, Вам нужно получить исходный код MPlayer из Subversion.
|
||
Инструкции могут быть найдены в
|
||
<ulink url="http://www.mplayerhq.hu/design7/dload.html#svn">разделе Subversion
|
||
страницы закачки</ulink>.
|
||
</para>
|
||
|
||
<para>
|
||
После этого в каталоге mplayer/ Вы будете иметь образ дерева Subversion.
|
||
Теперь обновите этот образ на желаемую дату:
|
||
<screen>
|
||
cd mplayer/
|
||
svn update -r {"2004-08-23"}
|
||
</screen>
|
||
Формат даты: YYYY-MM-DD HH:MM:SS.
|
||
Использование этого формата, гарантирует, что Вы сможете извлечь патчи по дате их
|
||
внесения, которые указаны в
|
||
<ulink url="http://lists.mplayerhq.hu/pipermail/mplayer-cvslog/">архиве MPlayer-cvslog</ulink>.
|
||
</para>
|
||
|
||
<para>
|
||
Далее выполняйте как при обычном обновлении:
|
||
<screen>
|
||
./configure
|
||
make
|
||
</screen>
|
||
</para>
|
||
|
||
<para>
|
||
Для непрограммистов, читающих эту страницу, сообщим, то самый быстрый способ найти место
|
||
возникновения ошибки — использование бинарного поиска, т.е. поиск даты,
|
||
деля интервал поиска пополам раз за разом.
|
||
Например, если проблема возникла в 2003 году, начните с середины года и
|
||
выясните присутствует ли проблема. Если да, то переходите к проверке
|
||
начала Апреля, иначе — к началу Октября. Повторяйте этот процесс, уменьшая интервал
|
||
поиска вдвое, пока не выясните искомую дату.
|
||
</para>
|
||
|
||
<para>
|
||
Если у Вас имеется достаточно свободного места на жестком диске (полная
|
||
компиляция требует около 100Мб, или 300-350 если включена отладочная
|
||
информация), скопируйте последнюю работающую версию перед обновлением,
|
||
это сэкономит время при необходимости вернуться назад.
|
||
(Как правило необходимо выполнять 'make distclean' до перекомпиляции
|
||
более ранней версии, поэтому при отсутствии сохраненной копии
|
||
Вам придется перекомпилировать весь проект.)
|
||
Также Вы можете использовать <ulink url="http://ccache.samba.org/">ccache</ulink>
|
||
для ускорения компиляции.
|
||
</para>
|
||
|
||
<para>
|
||
Как только Вы нашли дату, продолжайте поиск, используя архив mplayer-cvslog
|
||
(отсортированный по дате) до получения более точного времени, включая
|
||
час, минуту, секунду:
|
||
<screen>
|
||
svn update -r {"2004-08-23 15:17:25"}
|
||
</screen>
|
||
Это позволит легко выделить патч, явившийся источником проблемы.
|
||
</para>
|
||
|
||
<para>
|
||
Если Вы нашли нужный патч, то Вы практически победили; сообщите о нем в
|
||
<ulink url="http://bugzilla.mplayerhq.hu/">MPlayer Bugzilla</ulink> или
|
||
подпишитесь на
|
||
<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users">MPlayer-users</ulink>
|
||
и отправте сообщение туда.
|
||
Есть шанс, что автор исправит ошибку.
|
||
Вы также можете долго и пристально вглядываться в патч, пока сами не увидите ошибку :).
|
||
</para>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="bugreports_report">
|
||
<title>Как сообщить об ошибке</title>
|
||
<para>
|
||
Прежде всего, пожалуйста, попробуйте использовать новейшую Subversion версию
|
||
<application>MPlayer</application>'а, поскольку Ваша ошибка уже может быть исправлена.
|
||
Разработка продвигается очень быстро, большинство проблем в официальных релизах
|
||
сообщается в течение дней, и даже часов, после релиза, поэтому, пожалуйста, для
|
||
сообщений об ошибках используйте <emphasis role="bold">только Subversion</emphasis>.
|
||
Это включает и бинарные пакеты <application>MPlayer</application>'а. Вы найдёте
|
||
инструкции по Subversion внизу
|
||
<ulink url="http://www.mplayerhq.hu/dload.html">этой страницы</ulink>
|
||
или в README. Если это не помогло, пожалуйста, обратитесь к остальной документации. Если
|
||
Ваша проблема не известна или не решается с помощью наших инструкций,
|
||
пожалуйста, сообщите об ошибке.
|
||
</para>
|
||
|
||
<para>
|
||
Пожалуйста, не присылайте сообщения об ошибках лично какому-нибудь разработчику.
|
||
Это командная работа, и, поэтому, Вашим сообщением могут заинтересоваться
|
||
несколько человек. Довольно часто бывает, что пользователи уже сталкивались
|
||
с Вашей проблемой и знают, как обойти проблему, даже если это ошибка в коде
|
||
<application>MPlayer</application>'а.
|
||
</para>
|
||
|
||
<para>
|
||
Пожалуйста, опишите Вашу проблему настолько подробно, насколько возможно.
|
||
Проведите маленькое расследование, чтобы выяснить условия, при которых возникает
|
||
проблема. Проявляется ли ошибка только в каких-то конкретных ситуациях?
|
||
Она специфична только для каких-то файлов или типов файлов? Происходит ли это
|
||
с каким-то одним кодеком, или это не зависит от кодека? Можете ли Вы
|
||
воспроизвести это со всеми драйверами вывода? Чем больше Вы предоставите
|
||
информации, тем выше вероятность того, что мы сможем исправить ошибку.
|
||
Пожалуйста, не забудьте включить важную информацию, которую мы просим ниже,
|
||
иначе мы не сможем должным образом диагностировать Вашу проблему.
|
||
</para>
|
||
|
||
<para>
|
||
Великолепное, отлично написанное руководство по задаванию вопросов
|
||
на общедоступных форумах — это
|
||
<ulink url="http://www.catb.org/~esr/faqs/smart-questions.html">How To Ask
|
||
Questions The Smart Way[Как Задавать Вопросы. Правильный Путь.]</ulink>,
|
||
написанное <ulink url="http://www.catb.org/~esr/">Eric S. Raymond</ulink>.
|
||
Есть и другое —
|
||
<ulink url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">How to Report
|
||
Bugs Effectively[Как Эффективно Сообщить об Ошибке]</ulink>, написанное <ulink
|
||
url="http://www.chiark.greenend.org.uk/~sgtatham/">Simon Tatham</ulink>.
|
||
Если Вы будете следовать этим указаниям, Вы сможете получить помощь. Но,
|
||
пожалуйста, учтите, что мы добровольно отслеживаем рассылки в свободное время.
|
||
Мы очень заняты и не можем гарантировать, что Вы получите решение для Вашей
|
||
проблемы (или хотя бы ответ).
|
||
</para>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="bugreports_where">
|
||
<title>Куда сообщать об ошибках</title>
|
||
|
||
<para>
|
||
Подпишитесь на рассылку mplayer-users:
|
||
<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users"/>
|
||
и отошлите Ваше сообщение на:
|
||
<ulink url="mailto:mplayer-users@mplayerhq.hu"/>,
|
||
где Вы сможете его обсудить.
|
||
</para>
|
||
|
||
<para>
|
||
Или, если хотите, Вы можете использовать нашу новую
|
||
<ulink url="http://bugzilla.mplayerhq.hu/">Bugzilla</ulink>.
|
||
</para>
|
||
|
||
<para>
|
||
Язык этой рассылки — <emphasis role="bold">английский</emphasis>.
|
||
Пожалуйста, следуйте стандарту <ulink url="http://www.ietf.org/rfc/rfc1855.txt">
|
||
Netiquette Guidelines[Руководство по Сетевому Этикету]</ulink> и
|
||
<emphasis role="bold">не присылайте HTML почту</emphasis> ни на какую из наших
|
||
рассылок. Вас просто проигнорируют или забанят. Если Вы хотите узнать, что такое
|
||
HTML почта и почему это — зло, прочтите
|
||
<ulink url="http://efn.no/html-bad.html">этот документ</ulink>. Он объяснит
|
||
Вам все детали и содержит инструкции по отключению HTML. Также обратите
|
||
внимание, что мы не будем индивидуально CC (отсылать копии) людям, а поэтому
|
||
подписаться — хорошая идея, если Вы хотите получить ответ.
|
||
</para>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="bugreports_what">
|
||
<title>Что сообщать</title>
|
||
|
||
<para>
|
||
Вам необходимо включить лог, конфигурацию или примеры файлов в сообщение
|
||
об ошибке. Если что-то из этого большое, то лучше загрузить это на наш
|
||
<ulink url="ftp://upload.mplayerhq.hu/MPlayer/incoming/">FTP сервер</ulink>
|
||
в сжатом виде (предпочтительно gzip или bzip2) и включить в сообщение
|
||
об ошибке только путь и имя файла. На наших рассылках стоит ограничение размера
|
||
сообщения в 80КБ. Если у Вас что-то большее, то сожмите или загрузите это.
|
||
</para>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="bugreports_system">
|
||
<title>Системная информация</title>
|
||
<para>
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
Ваш дистрибутив Linux или операционная система и версия, например:
|
||
<itemizedlist>
|
||
<listitem><para>Red Hat 7.1</para></listitem>
|
||
<listitem><para>Slackware 7.0 + пакеты разработки из 7.1 ...</para></listitem>
|
||
</itemizedlist>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
версию ядра:
|
||
<screen>uname -a</screen>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
версию libc:
|
||
<screen>ls -l /lib/libc[.-]*</screen>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
версии gcc и ld:
|
||
<screen>
|
||
gcc -v
|
||
ld -v<!--
|
||
--></screen>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
версия binutils:
|
||
<screen>as --version</screen>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Если у Вас проблемы с полноэкранным режимом:
|
||
<itemizedlist>
|
||
<listitem><para>Тип оконного менеджера и версия</para></listitem>
|
||
</itemizedlist>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Если у Вас проблема с XVIDIX:
|
||
<itemizedlist>
|
||
<listitem><para>глубина цвета X'ов:
|
||
<screen>xdpyinfo | grep "depth of root"</screen>
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Если глючит только GUI:
|
||
<itemizedlist>
|
||
<listitem><para>версия GTK</para></listitem>
|
||
<listitem><para>версия GLIB</para></listitem>
|
||
<listitem><para>ситуация с GUI, в которых проявляется проблема</para></listitem>
|
||
</itemizedlist>
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="bugreports_hardware">
|
||
<title>Аппаратура и драйверы</title>
|
||
<para>
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
Информация о CPU (это сработает только под Linux):
|
||
<screen>cat /proc/cpuinfo</screen>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Производитель и модель видео карты, например:
|
||
<itemizedlist>
|
||
<listitem><para>ASUS V3800U чип: nVidia TNT2 Ultra pro 32MB SDRAM</para></listitem>
|
||
<listitem><para>Matrox G400 DH 32MB SGRAM</para></listitem>
|
||
</itemizedlist>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Тип драйвера и версия, например:
|
||
<itemizedlist>
|
||
<listitem><para>Встроенный в X'ы</para></listitem>
|
||
<listitem><para>nVidia 0.9.623</para></listitem>
|
||
<listitem><para>Utah-GLX CVS 2001-02-17</para></listitem>
|
||
<listitem><para>DRI из X 4.0.3</para></listitem>
|
||
</itemizedlist>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Тип и драйвер звуковой карты, например:
|
||
<itemizedlist>
|
||
<listitem><para>Creative SBLive! Gold с OSS драйверами от oss.creative.com</para></listitem>
|
||
<listitem><para>Creative SB16 с OSS драйверами из ядра</para></listitem>
|
||
<listitem><para>GUS PnP с ALSA OSS эмуляцией</para></listitem>
|
||
</itemizedlist>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Если Вы сомневаетесь, на Linux системах включите вывод
|
||
<command>lspci -vv</command>.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="bugreports_configure">
|
||
<title>Проблемы конфигурации</title>
|
||
<para>
|
||
Если Вы получаете ошибку при выполнении <command>./configure</command>, или если
|
||
автоопределение чего-то не срабатывает, прочитайте <filename>configure.log
|
||
</filename>. Там Вы можете обнаружить ответ, например если у Вас стоят несколько
|
||
версий одной библиотеки, или если Вы забыли установить пакет разработки (тот
|
||
самый, с суффиксом -dev). Если Вы думаете, что это ошибка, включите в сообщение
|
||
файл <filename>configure.log</filename>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 id="bugreports_compilation">
|
||
<title>Проблемы компиляции</title>
|
||
<para>
|
||
Пожалуйста, включите эти файлы:
|
||
<itemizedlist>
|
||
<listitem><para>config.h</para></listitem>
|
||
<listitem><para>config.mak</para></listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="bugreports_playback">
|
||
<title>Проблемы при воспроизведении</title>
|
||
<para>
|
||
Пожалуйста, включите вывод <application>MPlayer</application>'а с уровнем
|
||
"избыточности" [verbose] 1, но запомните: <emphasis role="bold">не
|
||
сокращайте вывод</emphasis>, когда Вы его вставляете в почту. Разработчикам
|
||
понадобятся все сообщения, чтобы правильно диагностировать проблему. Вы можете
|
||
направить вывод в файл, например так:
|
||
<screen>
|
||
mplayer -v <replaceable>опции</replaceable> <replaceable>имя-файла</replaceable> > mplayer.log 2>&1
|
||
</screen>
|
||
</para>
|
||
|
||
<para>
|
||
Если проблема специфична для одного или нескольких файлов,
|
||
пожалуйста, загрузите проблемные файлы на:
|
||
<ulink url="ftp://mplayerhq.hu/MPlayer/incoming/"/>
|
||
</para>
|
||
|
||
<para>
|
||
Также загрузите маленький текстовый файл с базовым именем как у Вашего файла и
|
||
расширением <filename>.txt</filename>. Опишите проблему, возникающую у Вас
|
||
с соответствующим файлом и включите Ваш электронный адрес и вывод
|
||
<application>MPlayer</application>'а
|
||
с уровнем "избыточности" 1. Обычно первых 1-5 МБ файла
|
||
бывает достаточно, чтобы воспроизвести проблему, но чтобы быть уверенными,
|
||
мы просим Вас сделать:
|
||
<screen>
|
||
dd if=<replaceable>Ваш-файл</replaceable> of=<replaceable>малый-файл</replaceable> bs=1024k count=5
|
||
</screen>
|
||
Это запишет первые 5 МБ '<emphasis role="bold">Вашего-файла</emphasis>'
|
||
в файл '<emphasis role="bold">малый-файл</emphasis>'. Теперь снова
|
||
попытайтесь с эти маленьким файлом, и если проблема все ещё проявляется,
|
||
тогда этого примера будет достаточно для нас. Пожалуйста,
|
||
<emphasis role="bold">никогда</emphasis> не отсылайте эти файлы по почте!
|
||
Загрузите его и отошлите только путь/имя файла на FTP-сервере. Если файл
|
||
доступен по сети, тогда просто пришлите <emphasis role="bold">точный</emphasis>
|
||
URL, и этого будет достаточно.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="bugreports_crash">
|
||
<title>Падения</title>
|
||
<para>
|
||
Вы должны запустить <application>MPlayer</application> внутри <command>gdb</command>
|
||
и прислать нам полный вывод, или , если у Вас есть дамп поломки
|
||
<filename>core</filename>, Вы можете извлечь необходимую полезную информацию из файла
|
||
core. Вот как:
|
||
</para>
|
||
|
||
|
||
<sect3 id="bugreports_debug">
|
||
<title>Как сохранить информацию о воспроизводимом падении</title>
|
||
|
||
<para>
|
||
Перекомпилируйте <application>MPlayer</application> с включённым кодом отладки:
|
||
<screen>
|
||
./configure --enable-debug=3
|
||
make
|
||
</screen>
|
||
и запустите <application>MPlayer</application> внутри gdb:
|
||
<screen>gdb ./mplayer</screen>
|
||
Теперь Вы в gdb. Наберите:
|
||
<screen>
|
||
run -v <replaceable>опции-для-mplayer</replaceable> <replaceable>имя-файла</replaceable>
|
||
</screen>
|
||
и воспроизведите крах программы. Как только Вы это сделаете, gdb вернёт Вас к приглашению
|
||
командной строки, где Вы должны набрать
|
||
<screen>
|
||
bt
|
||
disass $pc-32 $pc+32
|
||
info all-registers
|
||
</screen>
|
||
</para>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="bugreports_core">
|
||
<title>Как извлечь полезную информацию из дампа core</title>
|
||
|
||
<para>
|
||
Создайте следующий командный файл:
|
||
<screen>
|
||
bt
|
||
disass $pc-32 $pc+32
|
||
info all-registers
|
||
</screen>
|
||
Теперь просто выполните такую команду:
|
||
<screen>
|
||
gdb mplayer --core=core -batch --command=командный-файл > mplayer.bug
|
||
</screen>
|
||
</para>
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="bugreports_advusers">
|
||
<title>Я знаю, что я делаю...</title>
|
||
<para>
|
||
Если Вы создали правильное сообщение об ошибке так, как рассказано выше, и Вы
|
||
уверены, что это ошибка в <application>MPlayer</application>'е, а не ошибка компилятора или плохой файл,
|
||
Вы уже прочли всю документацию и не можете найти решение, Ваши звуковые драйвера
|
||
в порядке, тогда Вы можете подписаться на рассылку mplayer-advusers и прислать
|
||
сообщение об ошибке туда, чтобы получить более точный и быстрый ответ.
|
||
</para>
|
||
|
||
<para>
|
||
Обратите внимание, что если Вы будете отсылать туда вопросы новичков или
|
||
вопросы, на которые ответы присутствуют в документации, то Вас проигнорируют
|
||
или обругают вместо того, чтобы ответить. Поэтому не заваливайте нас мелочами
|
||
и подписывайтесь на -advusers только, если Вы действительно знаете, что Вы
|
||
делаете, и ощущаете себя продвинутым пользователем или разработчиком <application>MPlayer</application>'а.
|
||
Если подходите под этот критерий, Вам не составит труда понять, как надо
|
||
подписаться...
|
||
</para>
|
||
</sect1>
|
||
|
||
</appendix>
|