On Fri, May 22, 2015 at 7:49 PM, Jakub Filak <jfi...@redhat.com> wrote:
> Hi Laura,
>
>
>
> Thank you for the patch.
>
>
>
> The implementation seems OK to me, but I am not sure if the logic is OK.
> Perhaps someone more experienced in triaging kernel bugs can verify the
> component transitions.

The transitions are pretty simple:

Anything with 'i915' in the oops backtrace goes to xorg-x11-drv-intel
Anything with 'nouveau' in the oops backtrace goes to xorg-x11-drv-nouveau
Anything with 'radeon' in the oops backtrace goes to xorg-x11-drv-ati
(unfortunate name mismatch).
Anything with 'qxl' in the oops backtrace goes to xorg-x11-drv-qxl

For oopses with "drm_" in the functions but no clearly identified
driver in the oops, one of two things can be done there.  Either the
driver can be parsed from the list of loaded modules, or we could
simply leave bugs like this assigned to the kernel for now.

These rules do have a small possibility of false-positives, but the
vast majority of kernel DRM bugs would be immediately assigned to the
proper component.  I think the patch accomplishes most of this, but
not all of it.  One other item we probably want is add kernel-maint on
CC for bugs that get filed via ABRT in this way.

josh

> Anyway, could you please add a pair of examples to the examples/ directory
> and add the examples to the following tests:
>
> tests/runtests/oops-processing/runtest.sh
>
> tests/runtests/journal-oops-processing/runtest.sh
>
>
>
>
>
>
>
> Regards,
>
> Jakub
>
>
>
> On Tuesday 19 of May 2015 15:53:13 Laura Abbott wrote:
>
>> The kernel is a big project and certain parts of it
>
>> may need to be tracked under different components.
>
>> Fixup results related to those parts and assign a
>
>> different component.
>
>>
>
>> Signed-off-by: Laura Abbott <labb...@fedoraproject.org>
>
>> ---
>
>> This may have other side effects but the goal I'm trying to accomplish
>
>> is get stacktraces related to the graphics drivers assigned to a more
>
>> appropriate component. Here in abrt seemed to be the easiest place to
>
>> adjust it vs. trying to do it in libreport or anywhere else. I'm
>
>> open to suggestions of a better place to put this.
>
>> ---
>
>> .gitignore | 1 +
>
>> abrt.spec.in | 1 +
>
>> configure.ac | 1 +
>
>> src/plugins/Makefile.am | 3 +
>
>> .../abrt-action-check-oops-for-alt-component.in | 86
>
>> ++++++++++++++++++++++ src/plugins/koops_event.conf |
>
>> 3 +
>
>> src/plugins/vmcore_event.conf | 1 +
>
>> 7 files changed, 96 insertions(+)
>
>> create mode 100644 src/plugins/abrt-action-check-oops-for-alt-component.in
>
>>
>
>> diff --git a/.gitignore b/.gitignore
>
>> index 66410cb..f5a93e4 100644
>
>> --- a/.gitignore
>
>> +++ b/.gitignore
>
>> @@ -30,6 +30,7 @@ src/plugins/abrt-action-analyze-python
>
>> src/plugins/abrt-action-analyze-vmcore
>
>> src/plugins/abrt-action-analyze-xorg
>
>> src/plugins/abrt-action-check-oops-for-hw-error
>
>> +src/plugins/abrt-action-check-oops-for-alt-component
>
>> src/plugins/abrt-action-generate-backtrace
>
>> src/plugins/abrt-action-install-debuginfo-to-abrt-cache
>
>> src/plugins/abrt-action-perform-ccpp-analysis
>
>> diff --git a/abrt.spec.in b/abrt.spec.in
>
>> index 0726080..1c41310 100644
>
>> --- a/abrt.spec.in
>
>> +++ b/abrt.spec.in
>
>> @@ -959,6 +959,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor
>
>> &>/dev/null || : %endif
>
>> %{_sbindir}/abrt-harvest-vmcore
>
>> %{_bindir}/abrt-action-analyze-vmcore
>
>> +%{_bindir}/abrt-action-check-oops-for-alt-component
>
>> %{_bindir}/abrt-action-check-oops-for-hw-error
>
>> %{_mandir}/man1/abrt-harvest-vmcore.1*
>
>> %{_mandir}/man5/abrt-vmcore.conf.5*
>
>> diff --git a/configure.ac b/configure.ac
>
>> index 6962d2c..802d73e 100644
>
>> --- a/configure.ac
>
>> +++ b/configure.ac
>
>> @@ -416,6 +416,7 @@ AC_CONFIG_FILES([
>
>> src/plugins/abrt-action-install-debuginfo
>
>> src/plugins/abrt-action-analyze-vmcore
>
>> src/plugins/abrt-action-check-oops-for-hw-error
>
>> + src/plugins/abrt-action-check-oops-for-alt-component
>
>> src/python-problem/Makefile
>
>> src/python-problem/doc/Makefile
>
>> src/python-problem/tests/Makefile
>
>> diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
>
>> index d90bb76..aa426ff 100644
>
>> --- a/src/plugins/Makefile.am
>
>> +++ b/src/plugins/Makefile.am
>
>> @@ -74,6 +74,7 @@ PYTHON_FILES = \
>
>> abrt-action-list-dsos \
>
>> abrt-action-analyze-core \
>
>> abrt-action-analyze-vulnerability \
>
>> + abrt-action-check-oops-for-alt-component.in \
>
>> abrt-action-check-oops-for-hw-error.in \
>
>> abrt-action-perform-ccpp-analysis.in \
>
>> abrt-action-notify
>
>> @@ -101,6 +102,7 @@ EXTRA_DIST = \
>
>> if BUILD_ADDON_VMCORE
>
>> bin_SCRIPTS += \
>
>> abrt-action-analyze-vmcore \
>
>> + abrt-action-check-oops-for-alt-component \
>
>> abrt-action-check-oops-for-hw-error
>
>>
>
>> dist_events_DATA += \
>
>> @@ -115,6 +117,7 @@ PYTHON_FILES += \
>
>> EXTRA_DIST += \
>
>> analyze_VMcore.xml.in \
>
>> abrt-action-analyze-vmcore \
>
>> + abrt-action-check-oops-for-alt-component \
>
>> abrt-action-check-oops-for-hw-error
>
>> endif
>
>>
>
>> diff --git a/src/plugins/abrt-action-check-oops-for-alt-component.in
>
>> b/src/plugins/abrt-action-check-oops-for-alt-component.in new file mode
>
>> 100644
>
>> index 0000000..227dbf8
>
>> --- /dev/null
>
>> +++ b/src/plugins/abrt-action-check-oops-for-alt-component.in
>
>> @@ -0,0 +1,86 @@
>
>> +#!/usr/bin/python -u
>
>> +
>
>> +import sys
>
>> +import os
>
>> +import locale
>
>> +import gettext
>
>> +import hashlib
>
>> +import re
>
>> +
>
>> +GETTEXT_PROGNAME = "abrt"
>
>> +
>
>> +_ = gettext.lgettext
>
>> +
>
>> +tags = [
>
>> +"WARNING:",
>
>> +"[ER]IP[^:]",
>
>> +" \[<[a-f0-9]{8,16}>\]"
>
>> +]
>
>> +
>
>> +checks = [
>
>> + ("i915", "xorg-x11-drv-intel"),
>
>> + ("nouveau", "xorg-x11-drv-nouveau"),
>
>> + ("drm", "xorg-x11-drv-intel"),
>
>> +]
>
>> +
>
>> +def check_tag(line):
>
>> + for tag in tags:
>
>> + if re.match(tag, line) is not None:
>
>> + for (mod, component) in checks:
>
>> + if re.search(mod, line) is not None:
>
>> + return component
>
>> + return None
>
>> +
>
>> +def get_new_component(filename):
>
>> + try:
>
>> + f = open(filename, "r")
>
>> + except IOError as e:
>
>> + #print e
>
>> + return None
>
>> + for line in f:
>
>> + c = check_tag(line)
>
>> + if c is not None:
>
>> + f.close()
>
>> + return c
>
>> + f.close()
>
>> + return None
>
>> +
>
>> +def open_or_die(filename, mode):
>
>> + try:
>
>> + f = open(filename, mode)
>
>> + except IOError as e:
>
>> + sys.stderr.write(str(e) + "\n")
>
>> + sys.exit(1)
>
>> + return f
>
>> +
>
>> +
>
>> +if __name__ == "__main__":
>
>> + try:
>
>> + locale.setlocale(locale.LC_ALL, "")
>
>> + except locale.Error:
>
>> + os.environ['LC_ALL'] = 'C'
>
>> + locale.setlocale(locale.LC_ALL, "")
>
>> +
>
>> + # Defeat "AttributeError: 'module' object has no attribute
>
>> 'nl_langinfo'" + try:
>
>> + gettext.bind_textdomain_codeset(GETTEXT_PROGNAME,
>
>> + locale.nl_langinfo(locale.CODESET))
>
>> + except AttributeError:
>
>> + pass
>
>> +
>
>> + gettext.bindtextdomain(GETTEXT_PROGNAME, '/usr/share/locale')
>
>> + gettext.textdomain(GETTEXT_PROGNAME)
>
>> +
>
>> + #
>
>> + # Certain drivers are in the kernel but need to be tracked separtely
>
>> + # in other components. This fixes those components.
>
>> + #
>
>> +
>
>> + new_component = get_new_component("backtrace")
>
>> + print "new component {0}".format(new_component)
>
>> + if new_component is None:
>
>> + sys.exit(0)
>
>> +
>
>> + f = open_or_die("component", "w")
>
>> + f.write(new_component)
>
>> + f.close()
>
>> diff --git a/src/plugins/koops_event.conf b/src/plugins/koops_event.conf
>
>> index 577f62b..6766eb5 100644
>
>> --- a/src/plugins/koops_event.conf
>
>> +++ b/src/plugins/koops_event.conf
>
>> @@ -9,6 +9,9 @@ EVENT=post-create type=Kerneloops
>
>> abrt-action-check-oops-for-hw-error || true
>
>> } &&
>
>> {
>
>> + abrt-action-check-oops-for-alt-component || true
>
>> + } &&
>
>> + {
>
>> # run abrt-action-analyze-oops only if check-hw-error didn't create
>
>> the # required files
>
>> if test ! -f uuid -a ! -f duphash; then
>
>> diff --git a/src/plugins/vmcore_event.conf b/src/plugins/vmcore_event.conf
>
>> index 43fa7f0..6870332 100644
>
>> --- a/src/plugins/vmcore_event.conf
>
>> +++ b/src/plugins/vmcore_event.conf
>
>> @@ -29,6 +29,7 @@ EVENT=post-create type=vmcore
>
>> # Do not fail the event (->do not delete problem dir)
>
>> # if check-oops-for-hw-error exits nonzero:
>
>> { abrt-action-check-oops-for-hw-error || true; }
>
>> + { abrt-action-check-oops-for-alt-component || true; }
>
>>
>
>> # analyze
>
>> EVENT=analyze_VMcore type=vmcore

Reply via email to