← Back to team overview

apport-hackers team mailing list archive

[Merge] lp:~hjd/apport/runit-bugpattern into lp:apport

 

Hans Joachim Desserud has proposed merging lp:~hjd/apport/runit-bugpattern into lp:apport.

Requested reviews:
  Apport upstream developers (apport-hackers)

For more details, see:
https://code.launchpad.net/~hjd/apport/runit-bugpattern/+merge/315404

Bug pattern for bug 1448164. There's a somewhat steady stream of new duplicates for this issue and unfortunately, it is a Won't Fix for 16.04.

Couple of questions:
1. I don't know how strict the Package filtering is. I've seen some of the duplicated being reported to git, due to git-daemon-run's dependency on runit. Should the package filter be expanded to also check for this package name?
2. Did some testing with test-local, and discovered that the master bug doesn't seem to have any apport information. Is this an issue?
3. Some of the early package versions in Ubuntu 16.10, but _not_ the current one also had this issue. Should the pattern for version number be expanded to cover these as well?

Otherwise, see commit messages for details :)
-- 
Your team Apport upstream developers is requested to review the proposed merge of lp:~hjd/apport/runit-bugpattern into lp:apport.
=== added file 'README'
--- README	1970-01-01 00:00:00 +0000
+++ README	2017-01-23 19:55:50 +0000
@@ -0,0 +1,81 @@
+Apport bug patterns for Ubuntu
+==============================
+
+Purpose
+-------
+
+Sometimes a high-visibility crash bug or package installation failure causes a
+tremendous amount of duplicate bugs filed through apport, because
+Launchpad is not insistant enough to guide people to already existing
+similar bugs.
+
+Thus Apport supports patterns which can be matched against a crash (or bug)
+report, and directly guide the user to the existing bug instead of
+filing a new one first.
+
+Most useful fields are certainly Stacktrace, Package/Dependencies (for
+checking particular versions), and ProcCmdline, but in general you can
+match any field that seems useful.
+
+To avoid inventing a new file format and to be able to extend the
+functionality in the future (e. g. other operators than just regexp matching)
+the bug patterns are stored in an XML file, currently on [1].
+
+Syntax
+------
+The general syntax is:
+
+    root element := <patterns>
+    patterns := <pattern url="http://bug.url";> *
+    pattern := <re key="report_key">regular expression*</re> +
+
+For example:
+
+    <?xml version="1.0"?>
+    <patterns>
+        <pattern url="https://launchpad.net/bugs/1";>
+            <re key="Package">^foo </re>
+            <re key="Foo">ba.*r</re>
+        </pattern>
+        <pattern url="https://launchpad.net/bugs/2";>
+            <re key="Package">^bar 1-2$</re> <!-- test for a particular version -->
+            <re key="Foo">write_(hello|goodbye)</re>
+        </pattern>
+    </patterns>
+
+The existing bug patterns should provide sufficient examples to
+understand real-world applications.  The patterns for gnome-alsamixer and linux
+both contain good examples.
+
+Testing
+-------
+To test that apport is seeing your modified or new bug pattern, you can run
+"./test-local" on a .crash file or a Launchpad bug number. This will match the
+report against all local bug patterns and give the result. Once this is
+working, commit and push them.
+
+Already Reported Bugs
+---------------------
+In the event that there are bugs already reported in Launchpad that match your
+bug pattern you can run "./search-bugs --package linux" to find these bug reports.
+
+For example to search for bugs matching an apport kernel oops:
+
+./search-bugs --package linux --tags apport-kerneloops
+
+These bugs can also automatically consolidated using:
+
+./search-bugs --package linux --tags apport-kerneloops --consolidate
+
+They will then be marked as a duplicate of the bug number in the pattern url.
+
+Rollout
+-------
+Commits to the Launchpad branch are rolled out to
+http://people.canonical.com/~pitti/bugpatterns (where apport will look
+for them) every 15 minutes.
+
+Please double and triple check new patterns here. Badly written
+patterns can easily lead to unifying *all* possible crashes to one
+existing bug!
+

=== renamed file 'README' => 'README.moved'
=== added file 'bugpattern_written.py'
--- bugpattern_written.py	1970-01-01 00:00:00 +0000
+++ bugpattern_written.py	2017-01-23 19:55:50 +0000
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# Author: Brian Murray <brian@xxxxxxxxxxxxx>
+# Copyright (C) 2011 Canonical, Ltd.
+# License: GPLv3
+#
+# this is a bzr plugin that belongs in ~/.bazaar/plugins and will
+# modify the bug, modify tags and unsubsribe bugcontrol,
+# for which a bugpattern was written
+#
+# it requires the package python-launchpadlib-toolkit be installed
+
+import os
+import re
+
+from bzrlib import branch
+from bzrlib import errors
+from lpltk import LaunchpadService
+from subprocess import Popen, PIPE
+
+
+def post_push_hook(push_result):
+    lp = LaunchpadService(config={})
+    bugcontrol = lp.launchpad.people['ubuntu-bugcontrol']
+    bug_numbers = []
+    # assumes you are in the branch directory
+    try:
+        wb = branch.Branch.open(os.getcwd())
+    except errors.NotBranchError:
+        return
+    if wb.get_parent() != 'bzr+ssh://bazaar.launchpad.net/~ubuntu-bugcontrol/apport/ubuntu-bugpatterns/':
+        return
+    delta = wb.get_revision_delta(wb.revno())
+    if 'bugpatterns.xml' not in delta.get_changes_as_text():
+        return
+    # can't figure out how to get the contents of the diff
+    diff = Popen(["bzr", "log", "-r-1", "-p"], stdout=PIPE).communicate()[0]
+    for line in diff.split('\n'):
+        if not line.startswith('+'):
+            continue
+        if 'pattern url' in line and 'launchpad.net/bugs' in line:
+            bug_number = re.search('(\d+)', line).group(1)
+            bug_numbers.append(bug_number)
+    for bug_number in bug_numbers:
+        bug = lp.get_bug(bug_number)
+        if bug.private:
+            print 'LP: #%s is private and should be made public' % bug_number
+        if not 'bugpattern-needed' in bug.tags:
+            bug.tags.append('bugpattern-written')
+            print 'LP: #%s didn\'t need a bug pattern' % bug_number
+            continue
+        bug.tags.remove('bugpattern-needed')
+        bug.tags.append('bugpattern-written')
+        bug.lpbug.unsubscribe(person=bugcontrol)
+        print 'LP: #%s modified by bug pattern written bzr hook' % bug_number
+
+branch.Branch.hooks.install_named_hook('post_push', post_push_hook,
+    'Bug pattern written hook')

=== added file 'bugpatterns.xml'
--- bugpatterns.xml	1970-01-01 00:00:00 +0000
+++ bugpatterns.xml	2017-01-23 19:55:50 +0000
@@ -0,0 +1,2135 @@
+<?xml version="1.0"?>
+
+<patterns>
+
+<!-- General apport package patterns that apply to any package -->
+
+    <pattern url="https://launchpad.net/bugs/349469";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/349469";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeApttermlog">debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process</re>
+    </pattern>
+    <pattern url="https://wiki.ubuntu.com/Bugs/InitramfsLiveMedia";>
+        <re key="ProblemType">^Package</re>
+        <re key="Title">exit status 1</re>
+        <re key="DpkgTerminalLog">cp:.*`/vmlinuz'</re>
+        <re key="LiveMediaBuild">Ubuntu</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/882147";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">start: Unknown job:</re>
+        <re key="LiveMediaBuild">11.(10|04)</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/545790";>
+        <re key="ProblemType">^Package</re>
+        <re key="ErrorMessage">error writing to ..standard output..: Success</re>
+        <re key="Title">package .* failed to install\/upgrade: error writing to ..standard output..: Success</re>
+    </pattern>
+    <!-- fr.po -->
+    <pattern url="https://launchpad.net/bugs/545790";>
+        <re key="ProblemType">^Package</re>
+        <re key="ErrorMessage">erreur lors de l'écriture de .*sortie standard.*: Succès</re>
+        <re key="Title">package .* failed to install\/upgrade</re>
+    </pattern>
+    <!-- es.po -->
+    <pattern url="https://launchpad.net/bugs/545790";>
+        <re key="ProblemType">^Package</re>
+        <re key="ErrorMessage">error al escribir en .*salida estándar.*</re>
+        <re key="Title">package .* failed to install\/upgrade</re>
+    </pattern>
+    <!-- pt.po -->
+    <pattern url="https://launchpad.net/bugs/545790";>
+        <re key="ProblemType">^Package</re>
+        <re key="ErrorMessage">erro ao escrever .*saída standard.*</re>
+        <re key="Title">package .* failed to install\/upgrade</re>
+    </pattern>
+    <!-- de.po -->
+    <pattern url="https://launchpad.net/bugs/545790";>
+        <re key="ProblemType">^Package</re>
+        <re key="ErrorMessage">Fehler beim Schreiben von .*Standardausgabe.*</re>
+        <re key="Title">package .* failed to install\/upgrade</re>
+    </pattern>
+    <!-- it.po -->
+    <pattern url="https://launchpad.net/bugs/545790";>
+        <re key="ProblemType">^Package</re>
+        <re key="ErrorMessage">errore nello scrivere .*standard output.*</re>
+        <re key="Title">package .* failed to install\/upgrade</re>
+    </pattern>
+    <!-- sv.po -->
+    <pattern url="https://launchpad.net/bugs/545790";>
+        <re key="ProblemType">^Package</re>
+        <re key="ErrorMessage">fel vid skrivning till .*standard ut.*</re>
+        <re key="Title">package .* failed to install\/upgrade</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="DpkgTerminalLog">package.*is already installed and configured</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">Paket.*ist schon installiert und konfiguriert</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">el paquet.*ja està instaŀlat i configurat</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">pakken.*er allerede installeret og konfigureret</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">la pako.*jam estas instalita kaj akomodita</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">el paquete.*ya está instalado y configurado</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">le paquet.*est déjà installé et configuré</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">il pacchetto.*è già installato e configurato</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">pacote.*já está instalado e configurado</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">pakiet.*jest już zainstalowany i skonfigurowany</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeApttermlog">package.*is already installed and configured</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeApttermlog">Paket.*ist schon installiert und konfiguriert</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeApttermlog">el paquet.*ja està instaŀlat i configurat</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeApttermlog">pakken.*er allerede installeret og konfigureret</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeApttermlog">la pako.*jam estas instalita kaj akomodita</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeApttermlog">el paquete.*ya está instalado y configurado</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeApttermlog">le paquet.*est déjà installé et configuré</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeApttermlog">il pacchetto.*è già installato e configurato</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeApttermlog">pacote.*já está instalado e configurado</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeApttermlog">pakiet.*jest już zainstalowany i skonfigurowany</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeTermlog">package.*is already installed and configured</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeTermlog">Paket.*ist schon installiert und konfiguriert</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeTermlog">el paquet.*ja està instaŀlat i configurat</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeTermlog">pakken.*er allerede installeret og konfigureret</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeTermlog">la pako.*jam estas instalita kaj akomodita</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeTermlog">el paquete.*ya está instalado y configurado</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeTermlog">le paquet.*est déjà installé et configuré</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeTermlog">il pacchetto.*è già installato e configurato</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeTermlog">pacote.*já está instalado e configurado</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeMainlog">apt version: '0.8.16~exp5ubuntu</re>
+        <re key="VarLogDistupgradeTermlog">pakiet.*jest już zainstalowany i skonfigurowany</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/386763";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">E: \/var\/lib\/defoma\/locked exists</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/386763";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeApttermlog">E: \/var\/lib\/defoma\/locked exists</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/984276";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeTermlog">E: /usr/share/initramfs-tools/hooks/casper failed with return 1.</re>
+        <re key="VarLogDistupgradeTermlog">dpkg: error processing initramfs-tools \(--configure\):</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/989585";>
+        <re key="ProblemType">^Package</re>
+        <re key="Package">resolvconf 1.63ubuntu11</re>
+        <re key="DpkgTerminalLog">resolvconf.postinst: Error: Cannot replace the current /etc/resolv.conf with a symbolic link because it is immutable.</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/989585";>
+        <re key="ProblemType">^Package</re>
+        <re key="SourcePackage">(ubuntu-meta|resolvconf)</re>
+        <re key="VarLogDistupgradeApttermlog">resolvconf.postinst: Error: Cannot replace the current /etc/resolv.conf with a symbolic link because it is immutable.</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/993407";>
+        <re key="ProblemType">^Package</re>
+        <re key="Package">install-info</re>
+        <re key="SourcePackage">texinfo</re>
+        <re key="VarLogDistupgradeApttermlog">(/etc/environment|default/locale)</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/993407";>
+        <re key="ProblemType">^Package</re>
+        <re key="Package">install-info</re>
+        <re key="SourcePackage">texinfo</re>
+        <re key="DpkgTerminalLog">/etc/(environment|default/locale)</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/929219";>
+        <re key="ProblemType">^Crash</re>
+        <re key="Stacktrace">gethostbyname2_r ?()</re>
+        <re key="Dependencies">libc6 2.15(~pre|-0ubuntu[1-6])</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/805717";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">Unhandled Exception: System.TypeLoadException: Could not load type</re>
+        <re key="Dependencies">modified: usr/lib/mono/2.0/mscorlib.dll</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/902603";>
+        <re key="ProblemType">^Package</re>
+        <re key="Architecture">^amd64</re>
+        <re key="VarLogDistupgradeApttermlog">Noting disappearance of (libjpeg8|libtag1c2a|odbcinst|libccid|libao-common)</re>
+        <re key="VarLogDistupgradeApttermlog">Unpacking (libjpeg8|libtag1c2a|odbcinst|libccid|libao-common):i386</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/523896";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeApttermlog">(user|group)add: cannot lock</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/523896";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">(user|group)add: cannot lock</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/523896";>
+        <re key="Package">^whoopsie </re>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">(user|group)add.*\/etc\/(passwd|gshadow|group).*</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/523896";>
+        <re key="Package">^whoopsie </re>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeApttermlog">(user|group)add.*\/etc\/(passwd|gshadow|group).*</re>
+    </pattern>
+
+<!-- acpid -->
+
+    <pattern url ="http://launchpad.net/bugs/368857";>
+        <re key="Package">^acpid </re>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">initscript hal, action .*start" failed</re>
+    </pattern>
+    <pattern url ="http://launchpad.net/bugs/368857";>
+        <re key="Package">^acpid </re>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeApttermlog">initscript hal, action .*start" failed</re>
+    </pattern>
+
+<!-- Converted from alacarte.xml -->
+
+    <pattern url="http://launchpad.net/bugs/205463";>
+        <re key="Package">^alacarte </re>
+        <re key="Traceback">in copyItem</re>
+        <re key="Traceback">IOError: \[Errno 2\] No such file or directory</re>
+    </pattern>
+    
+    <pattern url="http://launchpad.net/bugs/349350";>
+	<re key="Package">^alacarte </re>
+	<re key="Traceback">in __addUndo</re>
+    </pattern>
+    
+    <pattern url="http://launchpad.net/bugs/187919";>
+	<re key="Package">^alacarte </re>
+	<re key="Title">alacarte crashed with AttributeError in split()</re>
+	<re key="Traceback">AttributeError: 'NoneType' object has no attribute 'rfind'</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/826049";>
+	<re key="Package">^alacarte </re>
+	<re key="Title">alacarte crashed with OSError in _execute_child()</re>
+	<re key="Traceback">in _execute_child</re>
+	<re key="Traceback">OSError: \[Errno 2\] No such file or directory</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/355829";>
+	<re key="Package">^alacarte </re>
+	<re key="Traceback">in on_edit_properties_activate</re>
+	<re key="Traceback">IOError: \[Errno 2\] No such file or directory</re>
+    </pattern>
+
+<!-- Converted from amavisd-new.xml -->
+
+    <pattern url="http://launchpad.net/bugs/801338";>
+        <re key="Package">^amavisd-new-postfix </re>
+        <re key="SourcePackage">^amavisd-new</re>
+        <re key="DpkgTerminalLog">Starting amavisd: .*/etc/mailname.*</re>
+    </pattern>
+
+<!-- Patterns regarding apport -->
+
+    <pattern url="http://launchpad.net/bugs/849880";>
+	<re key="Package">^apport</re>
+	<re key="Title">apport-gtk crashed with TypeError in ui_present_crash</re>
+	<re key="Traceback">TypeError\: glib.markup_escape_text\(\) takes at most 1 argument \(2 given\)</re> 
+    </pattern>
+
+    <pattern url="http://launchpad.net/bugs/1024202";>
+	<re key="Package">^apport</re>
+	<re key="Signal">6</re> 
+	<re key="Title">!xcb_xlib_threads_sequence_lost</re>
+    </pattern>
+
+<!-- Patterns regarding apt-clone -->
+
+    <pattern url="http://launchpad.net/bugs/758013";>
+        <re key="Package">^apt-clone </re>
+        <re key="Traceback">SystemError: E:Unable to correct problems, you have held broken packages.</re>
+        <re key="Traceback">in _restore_package_selection_in_cache</re>
+    </pattern>
+
+<!-- Converted from apt-xapian-index.xml -->
+
+    <pattern url="http://launchpad.net/bugs/424857";>
+        <re key="Package">^apt-xapian-index </re>
+        <re key="Traceback">E:The package lists or status file could not be parsed or opened.</re>
+        <re key="Traceback">SystemError: E:read.*but none left</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/819907";>
+        <re key="Package">^apt-xapian-index 0.44ubuntu[1|2|3|4]</re>
+	<re key="Title">update-apt-xapian-index crashed with StopIteration in uri()</re>
+ 	<re key="Traceback">in uri</re>
+	<re key="Traceback">StopIteration</re>
+    </pattern>
+    <pattern url="http://bit.ly/LeqiWq";>
+        <re key="Package">^apt-xapian-index</re>
+        <re key="Traceback">indexer.py", line .*, in buildIndex</re>
+        <re key="Traceback">DatabaseError</re>
+    </pattern>
+    <pattern url="http://bit.ly/Lihela";>
+        <re key="Package">^apt-xapian-index</re>
+        <re key="Traceback">__init__.py", line .*, in __init__</re>
+        <re key="Traceback">DatabaseLockError\: Unable to get write lock</re>
+    </pattern>
+
+<!-- Converted from aptdaemon.xml -->
+
+<!-- The different keys TraceBack and Traceback are not typos but deliberate.  aptdaemon used to call the attachment TraceBack.txt -->
+
+    <pattern url="https://launchpad.net/bugs/450662";>
+        <re key="Package">^aptdaemon </re>
+        <re key="Traceback">call_blocking</re>
+        <re key="Traceback">DBusException: org.freedesktop.DBus.Error.AccessDenied: Connection &quot;:....&quot; is not allowed to own the service &quot;org.debian.apt&quot; due to security policies in the configuration file</re>
+    </pattern>
+
+<!-- Converted from at-spi.xml -->
+
+    <pattern url="http://launchpad.net/bugs/418743";>
+        <re key="Package">^at-spi </re>
+        <re key="Stacktrace">#1  0x.*in _SmcProcessMessage</re>
+        <re key="Stacktrace">#2  0x.*in IceProcessMessages</re>
+        <re key="Stacktrace">#3  0x.*in process_ice_messages</re>
+        <re key="Stacktrace">#8  0x.*in main</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/420053";>
+        <re key="Package">^at-spi </re>
+        <re key="Stacktrace">#1  0x........ in IceProcessMessages</re>
+        <re key="Stacktrace">#2  0x........ in process_ice_messages</re>
+        <re key="Stacktrace">#8  0x........ in main.*at registry-main\.c</re>
+    </pattern>
+
+<!-- blueman -->
+    <pattern url="https://launchpad.net/bugs/437883";>
+        <re key="Package">^blueman </re>
+        <re key="Traceback">connection.py", line .*, in call_blocking</re>
+        <re key="Traceback">DBusException: org.freedesktop.DBus.Error.ServiceUnknown</re>
+    </pattern>
+
+<!-- Converted from b43-fwcutter.xml -->
+
+    <pattern url="https://wiki.ubuntu.com/Bugs/InitramfsLiveMedia";>
+        <re key="SourcePackage">^b43-fwcutter</re>
+        <re key="DpkgTerminalLog">cp: cannot stat `/vmlinuz': No such file or directory</re>
+        <re key="LiveMediaBuild">Ubuntu</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/711397";>
+        <re key="SourcePackage">^b43-fwcutter</re>
+        <re key="VarLogDistupgradeApttermlog">Not supported (card here|low-power chip)</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/711397";>
+        <re key="SourcePackage">^b43-fwcutter</re>
+        <re key="DpkgTerminalLog">Not supported (card here|low-power chip)</re>
+    </pattern>
+
+<!-- Converted from bcmwl.xml -->
+
+    <pattern url="https://wiki.ubuntu.com/Bugs/InitramfsLiveMedia";>
+        <re key="SourcePackage">^bcmwl</re>
+        <re key="DpkgTerminalLog">cp: cannot stat `/vmlinuz': No such file or directory</re>
+        <re key="LiveMediaBuild">Ubuntu</re>
+    </pattern>
+
+<!-- Converted from blcr.xml -->
+
+    <pattern url="https://launchpad.net/bugs/555729";>
+        <re key="Package">^blcr-dkms</re>
+        <re key="DKMSBuildLog">DKMS make.log for.* kernel 2.6.3[345]</re>
+        <re key="DKMSBuildLog">configure: error: Could not find a directory containing a Linux kernel 2.6.3[345][^ ]* build</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/700036";>
+        <re key="Package">^blcr-dkms</re>
+        <re key="DKMSBuildLog">vmadump_common.c:1092:38: error: .*struct signal_struct.* has no member named .*count.*</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/762996";>
+        <re key="Package">^blcr-dkms</re>
+        <re key="DKMSBuildLog">configure: error: Failed to locate kernel symbol table.</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/804943";>
+        <re key="Package">^blcr-dkms</re>
+        <re key="DKMSBuildLog">is neither a kernel version string nor a full path</re>
+    </pattern>
+
+<!-- Converted from brother-cups-wrapper-common.xml -->
+
+    <pattern url="http://launchpad.net/bugs/423817";>
+        <re key="Package">^brother-cups-wrapper-common </re>
+        <re key="Stacktrace">0x.* in \*__GI_abort</re>
+        <re key="Stacktrace">0x.* in \*__GI___fortify_fail</re>
+        <re key="Stacktrace">0x.* in divide_media_token ()</re>
+    </pattern>
+
+<!-- Converted from compiz.xml -->
+
+    <pattern url="https://launchpad.net/bugs/810182";>
+	<re key="Package">^nux-tools </re>
+	<re key="Title">unity_support_test crashed with SIGSEGV</re>
+        <re key="UnitySupportTest">extension "GLX" missing</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/810182";>
+	<re key="Package">^nux-tools </re>
+	<re key="Title">unity_support_test crashed with SIGSEGV</re>
+        <re key="Stacktrace">get_opengl_version</re>
+    </pattern>
+
+<!-- compizconfig-settings-manager -->
+
+    <pattern url="https://launchpad.net/bugs/198758";>
+	    <re key="Package">^compizconfig-settings-manager </re>
+	    <re key="Traceback">Constants.py</re>
+	    <re key="Traceback">in .module.</re>
+	    <re key="Traceback">Error: unsupported locale setting</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/832458";>
+	<re key="Package">^compizconfig-settings-manager 0.9.5.92-0ubuntu1</re>
+	<re key="Title">ccsm crashed with KeyError in compizconfig.Plugin.ApplyStringExtensions</re>
+	<re key="Traceback">in ParseSettings</re>
+	<re key="Traceback">plugin.Update ()</re>
+    </pattern>
+    
+    <pattern url="https://launchpad.net/bugs/833348";>
+	<re key="Package">^compizconfig-settings-manager </re>
+	<re key="Title">ccsm crashed with KeyError in compizconfig.Plugin.ApplyStringExtensions</re>
+	<re key="Traceback">in enable_plugin</re>
+	<re key="Traceback">plugin.Context.UpdateExtensiblePlugins \(\)</re>
+    <re key="Traceback">KeyError</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/833348";>
+	<re key="Package">^compizconfig-settings-manager </re>
+	<re key="Title">ccsm crashed with KeyError in compizconfig.Plugin.ApplyStringExtensions \(src/compizconfig.c:6780\)\(\):</re>
+	<re key="Traceback">File "/usr/lib/python2.7/dist-packages/ccm/Utils.py", line 328, in Update
+    if self.Context.ProcessEvents\(\):</re>
+	<re key="Traceback">File "compizconfig.pyx", line 1163, in compizconfig.Context.ProcessEvents \(src/compizconfig.c:9986\)</re>
+	<re key="Traceback">File "compizconfig.pyx", line 1249, in compizconfig.Context.ChangedSettings.__get__ \(src/compizconfig.c:11104\)</re>
+	<re key="Traceback">File "compizconfig.pyx", line 447, in compizconfig.SettingListToList \(src/compizconfig.c:2212\)</re>
+	<re key="Traceback">File "compizconfig.pyx", line 927, in compizconfig.Plugin.Screen.__get__ \(src/compizconfig.c:7371\)</re>
+	<re key="Traceback">File "compizconfig.pyx", line 783, in compizconfig.Plugin.Update \(src/compizconfig.c:5765\)</re>
+	<re key="Traceback">File "compizconfig.pyx", line 870, in compizconfig.Plugin.ApplyStringExtensions \(src/compizconfig.c:6780\)</re>
+	<re key="Traceback">KeyError:</re>
+    </pattern>
+
+<!-- Converted from computer-janitor.xml -->
+
+    <pattern url="https://launchpad.net/bugs/721244";>
+        <re key="Package">^computer-janitor-gtk</re>
+        <re key="Traceback">gtk\/ui.py</re>
+        <re key="Traceback">in _toggled</re>        
+        <re key="Traceback">DBusException: org.freedesktop.DBus.Python.computerjanitord.errors.PermissionDeniedError: com.ubuntu.computerjanitor.updatesystem</re>        
+    </pattern>
+
+<!-- Converted from computertemp.xml -->
+
+    <pattern url="http://launchpad.net/bugs/318791";>
+        <re key="Package">^computertemp </re>
+        <re key="Title">crashed with ValueError in parseloginfo</re>
+        <re key="Traceback">loginfo.replace\('\{temp\}'</re>
+        <re key="Traceback">ValueError: invalid literal for int\(\) with base 10: 'XX'</re>
+    </pattern>
+
+<!-- Converted from cron.xml -->
+
+    <pattern url="https://launchpad.net/bugs/447080";>
+        <re key="Package">^cron </re>
+        <re key="Stacktrace">pam_vsyslog</re>
+        <re key="Stacktrace">_pam_load_module</re>
+        <re key="Stacktrace">_pam_parse_conf_file</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/518161";>
+        <re key="Package">^cron </re>
+        <re key="Stacktrace">pam_strerror</re>
+        <re key="Stacktrace">pam_get_authtok_internal</re>
+        <re key="Stacktrace">_pam_parse_conf_file</re>
+    </pattern>
+
+<!-- Converted from desktopcouch.xml -->
+
+    <pattern url="http://launchpad.net/bugs/465216";>
+        <re key="Package">^desktopcouch </re>
+        <re key="Title">desktopcouch-service crashed with RuntimeError in find_port__linux</re>
+        <re key="Traceback">RuntimeError: Unable to find listening port</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/451767";>
+        <re key="Package">^desktopcouch </re>
+        <re key="Title">desktopcouch-service crashed with ServerError in _request</re>
+        <re key="Traceback">ServerError: \(401</re>
+    </pattern>
+
+<!-- dpkg -->
+    <pattern url="https://launchpad.net/bugs/541595";>
+        <re key="ProblemType">^Package</re>
+        <re key="SourcePackage">^dpkg</re>
+        <re key="ErrorMessage">package .* is already installed and configured</re>
+        <re key="OriginalTitle">package .* failed to install\/upgrade: .*package .* is already installed and configured</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/573696";>
+        <re key="ProblemType">^Crash</re>
+        <re key="SourcePackage">^dpkg</re>
+        <re key="AssertionMessage">dpkg: .* Assertion `r == stab.st_size' failed.</re>
+    </pattern>
+
+
+<!-- easycrypt -->
+
+    <pattern url="https://launchpad.net/bugs/212312";>
+        <re key="Package">^easycrypt </re>
+        <re key="Traceback">EasyCrypt.py", line .*, in closeAllCrypts</re>
+        <re key="Traceback">KeyError</re>
+    </pattern>
+
+<!-- eglibc -->
+
+    <pattern url="https://launchpad.net/bugs/652876";>
+        <re key="Package">^nscd </re>
+        <re key="DpkgTerminalLog">initscript nscd, action "start" failed</re>
+    </pattern>
+
+<!-- empathy -->
+    <pattern url="http://launchpad.net/bugs/829861";>
+        <re key="Package">^empathy</re>
+        <re key="Stacktrace">_tp_base_client_handle_channels</re>
+        <re key="Stacktrace">_tp_marshal_VOID__BOXED_BOXED_BOXED_BOXED_UINT64_BOXED_POINTER</re>
+        <re key="Signal">11</re>
+    </pattern>
+
+<!-- Converted from fglrx-installer.xml -->
+
+    <pattern url="https://launchpad.net/bugs/573748";>
+        <re key="Package">^fglrx-installer </re>
+        <re key="DKMSBuildLog">DKMS make.log for.* kernel 2.6.3[345]</re>
+        <re key="DKMSBuildLog">utsrelease.h: No such file or directory</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1479913";>
+        <re key="Package">^fglrx-installer</re>
+        <re key="DKMSBuildLog">GPL.*incompatible.*symbol.*pci_ignore_hotplug</re>
+    </pattern>
+    <pattern url="https://wiki.ubuntu.com/Bugs/InitramfsLiveMedia";>
+        <re key="SourcePackage">^fglrx-installer</re>
+        <re key="DpkgTerminalLog">cp: cannot stat `/vmlinuz': No such file or directory</re>
+        <re key="LiveMediaBuild">Ubuntu</re>
+    </pattern>
+
+<!-- Patterns regarding flashplugin-nonfree -->
+
+    <!--<pattern url="http://launchpad.net/bugs/870643";>
+        <re key="Package">^flashplugin-downloader </re>
+        <re key="VarLogDistupgradeApttermlog">unable to resolve host address..archive.canonical.com</re>
+        <re key="VarLogDistupgradeApttermlog">download failed</re>
+    </pattern>-->
+    <pattern url="http://launchpad.net/bugs/873673";>
+        <re key="ProblemType">Package</re>
+        <re key="Package">^flashplugin-downloader </re>
+        <re key="VarLogDistupgradeApttermlog">download failed</re>
+        <re key="VarLogDistupgradeApttermlog">The Flash plugin is NOT installed.</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/762968";>
+        <re key="Package">^flashplugin-installer 10.[23].*</re>
+        <re key="DpkgTerminalLog">nspluginwrapper: no appropriate viewer found for \/usr\/lib\/flashplugin-installer\/libflashplayer.so</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/762968";>
+        <re key="Package">^flashplugin-installer 10.[23].*</re>
+        <re key="VarLogDistupgradeTermlog">nspluginwrapper: no appropriate viewer found for \/usr\/lib\/flashplugin-installer\/libflashplayer.so</re>
+    </pattern>
+
+<!-- Converted from foomatic-filters.xml -->
+
+    <pattern url="http://launchpad.net/bugs/440426";>
+        <re key="Package">^foomatic-filters </re>
+        <re key="Stacktrace">#0.*_nl_intern_locale_data</re>
+        <re key="Stacktrace">#1  0x.* in _nl_load_locale</re>
+        <re key="Stacktrace">#2  0x.* in _nl_find_locale</re>
+    </pattern>
+
+<!-- Converted from freevo.xml -->
+    <pattern url="https://bugs.launchpad.net/bugs/758821";>
+        <re key="Package">^freevo </re>
+        <re key="DpkgTerminalLog">No such file or directory. ./usr/lib/pymodules/python2.5/freevo/version.py.</re>
+    </pattern>
+
+<!-- Converted from g15daemon.xml -->
+
+    <pattern url="https://launchpad.net/bugs/617101";>
+        <re key="Package">^g15daemon </re>
+        <re key="DpkgTerminalLog">uinput not found</re>
+    </pattern>
+
+<!-- gconf -->
+
+    <pattern url="https://launchpad.net/bugs/817460";>
+	<re key="Package">^gconf2 </re>
+	<re key="Title">gsettings-data-convert crashed with signal 5 in g_settings_get_range()</re>
+	<re key="Signal">5</re>
+	<re key="StacktraceTop">g_settings_get_range</re>
+    </pattern>
+
+<!-- gdm -->
+    
+    <pattern url="https://launchpad.net/bugs/805154";>
+	<re key="Package">^gdm </re>
+	<re key="StacktraceTop">_nss_compat_getpwnam_r</re>
+	<re key="Signal">11</re>
+    </pattern>
+
+<!-- Converted from glunarclock.xml -->
+
+    <pattern url="http://launchpad.net/bugs/459389";>
+        <re key="Package">^glunarclock </re>
+        <re key="Title">glunarclock-applet-2 crashed with SIGSEGV in strcmp</re>
+        <re key="Stacktrace">strcmp</re>
+        <re key="Stacktrace">glunarclock_applet_factory</re>
+    </pattern>
+
+<!-- Converted from gnome-alsamixer.xml -->
+
+    <pattern url="http://launchpad.net/bugs/448180";>
+        <re key="Package">^gnome-alsamixer </re>
+        <re key="Stacktrace">#0  .*gam_mixer_show_props_dialog .*\s*at gam-mixer\.c:596</re>
+        <re key="Stacktrace">#(26|32) 0x.* in main .* at gam-main\.c:56</re>
+    </pattern>
+
+    <pattern url="http://launchpad.net/bugs/849415";>
+	<re key="Package">^gnome-alsamixer 0.9.7~cvs.20060916.ds.1-2ubuntu1</re>
+	<re key="Title">gnome-alsamixer crashed with SIGSEGV in gtk_accel_group_connect_by_path()</re>
+	<re key="StacktraceTop">gtk_accel_group_connect_by_path</re>
+	<re key="StacktraceTop">gtk_action_connect_accelerator</re>
+    </pattern>
+
+<!-- gnome-desktop -->
+
+    <pattern url="https://launchpad.net/bugs/861548";>
+	<re key="Package">^libgnome-desktop 3.2.0-0ubuntu4</re>
+	<re key="Signal">6</re>
+	<re key="Title">check_gl_texture_size assert failure</re>
+        <re key="AssertionMessage">/usr/lib/gnome-desktop3/check_gl_texture_size: malloc()</re>
+    </pattern>
+
+<!-- Converted from gnome-disk-utility.xml -->
+
+    <pattern url="https://launchpad.net/bugs/418300";>
+        <re key="Package">^gnome-disk-utility </re>
+        <re key="StacktraceTop">gdu_pool_get_devices</re>
+    </pattern>
+
+<!-- gnome-games -->
+
+    <pattern url="https://launchpad.net/bugs/857603";>
+	<re key="Package">^gnome-sudoku 1:3.2.0-0ubuntu1</re>
+	<re key="Title">gnome-sudoku crashed with TypeError in function()</re>
+	<re key="Traceback">TypeError: Expected a Gdk.Event, but got EventButton</re>
+    </pattern>
+
+<!-- gnome-online-accounts -->
+
+    <pattern url="https://launchpad.net/bugs/843375";>
+	<re key="Package">^gnome-online-accounts </re>
+	<re key="Signal">11</re>
+	<re key="StacktraceTop">notification_cb</re>
+	<re key="StacktraceTop">proxy_g_signal_cb</re>
+	<re key="StacktraceTop">ffi_call_SYSV</re>
+    </pattern>
+
+<!-- Converted from gnome-settings-daemon.xml -->
+
+    <pattern url="https://launchpad.net/bugs/839649";>
+	<re key="Package">^gnome-settings-daemon </re>
+	<re key="Signal">11</re>
+	<re key="Title">gnome-settings-daemon crashed with SIGSEGV in g_simple_async_result_new_error()</re>
+	<re key="Stacktrace">on_bus_gotten</re>
+	<re key="Stacktrace">g_simple_async_result_new_error</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/785418";>
+	<re key="Package">^gnome-settings-daemon </re>
+	<re key="Signal">11</re>
+        <re key="Title">gnome-settings-daemon crashed with SIGSEGV in gtk_hpaned_get_type()</re>
+	<re key="StacktraceTop">gtk_hpaned_get_type</re>
+	<re key="StacktraceTop">gtk_hscale_new_with_range</re>
+    </pattern>
+
+<!-- gnome-terminal -->
+
+    <pattern url="https://launchpad.net/bugs/810681";>
+	<re key="Package">^gnome-terminal </re>
+	<re key="Title">gnome-terminal crashed with SIGABRT in raise()</re>
+	<re key="Stacktrace">(app->default_profile_id != NULL)</re>
+	<re key="Signal">6</re>
+    </pattern>
+
+<!-- gm-notify -->
+
+    <pattern url="https://launchpad.net/bugs/831491";>
+	<re key="Package">^gm-notify </re>
+	<re key="Title">gm-notify crashed with GError in labelClick()</re>
+	<re key="Traceback">D-BUS error: Method "LookupExtended" with signature "ssb" on interface "org.gnome.GConf.Database" doesn't exist</re>
+    </pattern>
+
+<!-- Converted from grub.xml -->
+
+    <pattern url="https://launchpad.net/bugs/537123";>
+        <re key="ProblemType">^Package</re>
+        <re key="SourcePackage">^grub2</re>
+        <re key="DpkgTerminalLog">/etc/grub.d/README: 2: All: not found</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/495123";>
+        <re key="ProblemType">^Package</re>
+        <re key="SourcePackage">^grub2</re>
+        <re key="DpkgTerminalLog">grub-probe: error: not a directory</re>
+    </pattern>
+
+<!-- gst-plugins-good0.10  -->
+    <pattern url="http://launchpad.net/bugs/831897";>
+	<re key="ProblemType">^Package</re>
+	<re key="Package">^gstreamer0.10-plugins-good</re>
+	<re key="ErrorMessage">/usr/lib/gstreamer-0.10/libgstjpegformat.so</re>
+	<re key="ErrorMessage">gstreamer0.10-plugins-bad</re>
+   </pattern>
+
+<!-- gucharmap -->
+    <pattern url="http://launchpad.net/bugs/854922";>
+	<re key="ProblemType">Package</re>
+	<re key="Package">^libgucharmap7</re>
+	<re key="ErrorMessage">trying to overwrite '/usr/lib/libgucharmap_2_90.so.7.0.0'</re>
+	<re key="ErrorMessage">libgucharmap-2-90-7</re>
+    </pattern>
+
+<!-- Converted from gvfs.xml -->
+
+    <pattern url="https://launchpad.net/bugs/436871";>
+        <re key="Package">^gvfs </re>
+        <re key="Signal">11</re>
+        <re key="Stacktrace">#0  gdu_pool_get_presentables.*at gdu-pool\.c</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/811049";>
+	<re key="Package">^gvfs</re>
+	<re key="Signal">11</re>
+	<re key="Title">crashed with SIGSEGV in g_vfs_job_try()</re>
+	<re key="Stacktrace">g_vfs_job_try</re>
+	<re key="Stacktrace">g_vfs_daemon_queue_job</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/832533";>
+	<re key="Package">^gvfs</re>
+	<re key="ExecutablePath">/usr/lib/gvfs/gvfs-fuse-daemon</re>
+	<re key="Signal">11</re>
+	<re key="Stacktrace">g_daemon_vfs_get_async_bus</re>
+	<re key="Stacktrace">g_daemon_volume_monitor_init</re>
+	<re key="Stacktrace">g_type_create_instance</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/839828";>
+	<re key="Package">^gvfs</re>
+	<re key="Title">gvfsd-http crashed with SIGSEGV in g_settings_get_child()</re>
+	<re key="ExecutablePath">/usr/lib/gvfs/gvfsd-http</re>
+	<re key="Signal">11</re>
+	<re key="StacktraceTop">g_settings_get_child</re>
+    </pattern>
+
+<!-- Converted from gwibber.xml -->
+
+    <pattern url="https://bugs.launchpad.net/ubuntu/+source/gwibber/+bug/522538";>
+        <re key="Package">^gwibber </re>
+        <re key="Traceback">File &quot;/usr/lib/pymodules/python2.6/httplib2/__init__.py&quot;, line 750, in connect</re>
+        <re key="Title">gwibber-service crashed with error in connect</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/849654";>
+	<re key="Package">^gwibber</re>
+	<re key="Title">gwibber-service crashed with IOError in get_avatar_path</re>
+	<re key="Traceback">IOError\: \[Errno 36\] File name too long</re>
+    </pattern>
+    
+    <pattern url="https://launchpad.net/bugs/741035";>
+	    <re key="Package">^gwibber-service</re>
+	    <re key="Traceback">storage.py", line .*, in maintenance</re>
+	    <re key="Traceback">OperationalError</re>
+    </pattern>
+
+<!-- Converted from initramfs-tools.xml -->
+
+    <pattern url="https://wiki.ubuntu.com/Bugs/InitramfsLiveMedia";>
+        <re key="Package">^initramfs-tools </re>
+        <re key="DpkgTerminalLog">cp: cannot stat `/vmlinuz': No such file or directory</re>
+        <re key="LiveMediaBuild">Ubuntu</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/798414";>
+        <re key="SourcePackage">^initramfs-tools</re>
+        <re key="DpkgTerminalLog">gzip: stdout: No space left on device</re>
+    </pattern>
+
+<!-- Converted from iscsitarget.xml -->
+
+    <pattern url="https://bugs.launchpad.net/bugs/782076";>
+        <re key="Package">^iscsitarget-dkms 1.4.20.2-1ubuntu1</re>
+        <re key="DKMSBuildLog">implicit declaration of function ‘copy_io_context’</re>
+    </pattern>
+
+<!-- Converted from jockey.xml -->
+
+    <pattern url="http://launchpad.net/bugs/413624";>
+        <re key="Package">^jockey-gtk </re>
+        <re key="Traceback">backend.py</re>
+        <re key="Traceback">in convert_dbus_exceptions</re>
+        <re key="Traceback">BackendCrashError</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/275659";>
+        <re key="Package">^jockey </re>
+        <re key="Traceback">org.freedesktop.DBus.Error.TimedOut: Activation of com.ubuntu.DeviceDriver timed out</re>
+    </pattern>
+
+    <pattern url="http://launchpad.net/bugs/841366";>
+	<re key="Package">^jockey</re>
+	<re key="Title">jockey-backend crashed with TypeError in pulse_items()</re>
+	<re key="Traceback">TypeError: an integer is required</re>
+    </pattern>
+
+<!-- Converted from libflickrnet2.1.5-cil.xml -->
+
+    <pattern url="https://launchpad.net/bugs/182130";>
+        <re key="Package">^libflickrnet2.1.5-cil </re>
+	<re key="DpkgTerminalLog">Assembly.*policy.2.1.FlickrNet.dll does not exist</re>
+    </pattern>
+
+<!-- libreoffice -->
+    <pattern url="https://launchpad.net/bugs/832516";>
+        <re key="Package">^libreoffice</re>
+        <re key="Signal">11</re>
+        <re key="StacktraceTop">xcb_writev</re>
+        <re key="StacktraceTop">splash_draw_progress</re>
+    </pattern>
+
+<!-- Converted from linux.xml -->
+
+    <pattern url="https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors";>
+        <re key="Package">^linux </re>
+        <re key="DpkgTerminalLog">\n short read in buffer_copy</re>
+    </pattern>
+    <pattern url="https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors";>
+        <re key="Package">^linux </re>
+        <re key="Tags">apport-package</re>
+        <re key="DpkgTerminalLog">\n foi lido um short em buffer_copy</re>
+    </pattern>
+    <pattern url="https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors";>
+        <re key="Package">^linux </re>
+        <re key="Tags">apport-package</re>
+        <re key="DpkgTerminalLog">\n lecture courte (short read) dans « buffer_copy » </re>
+    </pattern>
+    <pattern url="https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors";>
+        <re key="Package">^linux </re>
+        <re key="Tags">apport-package</re>
+        <re key="DpkgTerminalLog">\n lectura insuficiente en buffer_copy</re>
+    </pattern>
+    <pattern url="https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors";>
+        <re key="Package">^linux </re>
+        <re key="Tags">apport-package</re>
+        <re key="DpkgTerminalLog">\n nicht vollständig gelesen in buffer_copy</re>
+    </pattern>
+    <pattern url="https://bugs.launchpad.net/bugs/386042";>
+        <re key="Package">^linux </re>
+        <re key="DpkgTerminalLog">/usr/share/debconf/confmodule: line 42: printf: write error: Broken pipe</re>
+    </pattern>
+    <pattern url="https://bugs.launchpad.net/bugs/407420";>
+        <re key="Package">^linux </re>
+        <re key="DpkgTerminalLog">Running depmod.\nFailed to run depmod</re>
+    </pattern>
+    <pattern url="https://bugs.launchpad.net/bugs/417222";>
+        <re key="Package">^linux </re>
+        <re key="DpkgTerminalLog">/boot/grub/menu.lst: Operation not supported</re>
+    </pattern>
+    <pattern url="https://wiki.ubuntu.com/Bugs/InitramfsLiveMedia";>
+        <re key="SourcePackage">^linux</re>
+        <re key="DpkgTerminalLog">cp: cannot stat `.*/vmlinuz': No such file or directory</re>
+        <re key="LiveMediaBuild">Ubuntu</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/322433";>
+        <re key="SourcePackage">^linux</re>
+        <re key="DpkgTerminalLog">Purging configuration files</re>
+        <re key="DpkgTerminalLog">FATAL: Could not open</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/798414";>
+        <re key="SourcePackage">^linux</re>
+        <re key="DpkgTerminalLog">gzip: stdout: No space left on device</re>
+    </pattern>
+
+<!-- Converted from mail-notification.xml -->
+
+    <pattern url="http://launchpad.net/bugs/351260";>
+        <re key="Package">^mail-notification </re>
+        <re key="Stacktrace">#0  0x.* in mn_mail_icon_set_tip</re>
+        <re key="Stacktrace">#1  0x.* in mn_shell_update_tooltip</re>
+    </pattern>
+
+
+    <pattern url="https://launchpad.net/bugs/746912";>
+        <re key="ProblemType">^Package</re>
+        <re key="Package">^man-db </re>
+        <re key="DpkgTerminalLog">debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/746912";>
+        <re key="ProblemType">^Package</re>
+        <re key="Package">^man-db </re>
+        <re key="VarLogDistupgradeApttermlog">debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process</re>
+    </pattern>
+
+<!-- Converted from msttcorefonts.xml -->
+
+    <pattern url="https://launchpad.net/bugs/694913";>
+        <re key="SourcePackage">^msttcorefonts</re>
+        <re key="DpkgTerminalLog">Fatal IO error.*X.*server</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/710046";>
+        <re key="SourcePackage">^msttcorefonts</re>
+        <re key="DpkgTerminalLog">Another defoma process seems running</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/710046";>
+        <re key="SourcePackage">^msttcorefonts</re>
+        <re key="VarLogDistupgradeApttermlog">Another defoma process seems running</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/633570";>
+        <re key="SourcePackage">^msttcorefonts</re>
+        <re key="DpkgTerminalLog">wget: unable to resolve host address</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/633570";>
+        <re key="SourcePackage">^msttcorefonts</re>
+        <re key="VarLogDistupgradeTermlog">wget: unable to resolve host address</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/921889";>
+        <re key="SourcePackage">^msttcorefonts</re>
+        <re key="Title">package ttf-mscorefonts-installer .* failed to install/upgrade.*128</re>
+        <re key="DpkgTerminalLog">Use of uninitialized value \$_\[1\] in join or string at \/usr\/share\/perl5\/Debconf\/DbDriver\/Stack.pm</re>
+        <re key="DpkgTerminalLog">user did not accept the mscorefonts-eula license</re>
+    </pattern>
+
+<!-- Converted from nautilus.xml -->
+
+    <pattern url="https://launchpad.net/bugs/362342";>
+        <re key="Package">^nautilus </re>
+        <re key="Stacktrace">#0  .*g_list_remove.*\n.*glist\.c:338</re>
+        <re key="Title">nautilus crashed with SIGSEGV in g_list_remove()</re>
+    </pattern>
+
+<!-- nautilus-open-terminal -->
+ 
+    <pattern url="https://launchpad.net/bugs/865115";>
+	<re key="Package">^nautilus-open-terminal </re>
+	<re key="Title">nautilus crashed with SIGSEGV in gconf_client_get()</re>
+	<re key="Signal">11</re>
+	<re key="StacktraceTop">gconf_client_get</re>
+	<re key="StacktraceTop">gconf_client_get_bool</re>
+    </pattern>
+
+<!-- nautilus-script-manager -->
+ 
+    <pattern url="https://launchpad.net/bugs/617095";>
+	<re key="Package">^nautilus-scripts-manager </re>
+	<re key="Traceback">nautilus-scripts-manager", line .*, in retrieve_default_path</re>
+	<re key="Traceback">IOError: \[Errno 21\]</re>
+    </pattern>
+
+<!-- nautilus-dropbox -->
+ 
+    <pattern url="https://launchpad.net/bugs/937546";>
+        <re key="ProblemType">Package</re>
+        <re key="Package">^nautilus-dropbox </re>
+        <re key="DpkgHistoryLog">Upgrade: nautilus-dropbox.*0.7.1</re>
+        <re key="DpkgHistoryLog">dpkg returned an error code</re>
+    </pattern>
+
+<!-- Converted from nspluginwrapper.xml -->
+
+    <pattern url="http://launchpad.net/bugs/798459";>
+        <re key="Package">^nspluginwrapper</re>
+        <re key="ProblemType">Package</re>
+        <re key="DpkgTerminalLog">nspluginwrapper: double free or corruption \(out\)</re>
+    </pattern>
+
+<!-- Converted from ntfs-config.xml -->
+
+    <pattern url="http://launchpad.net/bugs/529403";>
+        <re key="Package">^ntfs-config </re>
+        <re key="Title">ntfs-config crashed with AttributeError in add_section</re>
+        <re key="Traceback">in on_close_clicked</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/516826";>
+        <re key="Package">^ntfs-config </re>
+        <re key="Title">ntfs-config crashed with AttributeError in add_section</re>
+        <re key="Traceback">in on_ok_clicked</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/507831";>
+        <re key="Package">^ntfs-config </re>
+        <re key="Title">ntfs-config crashed with AttributeError in add_section</re>
+        <re key="Traceback">in on_auto_clicked</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/629246";>
+        <re key="Package">^ntfs-config </re>
+        <re key="Traceback">NtfsConfig.py</re>
+        <re key="Traceback">os.mkdir\(HAL_CONFIG_DIR\)</re>
+        <re key="Traceback">OSError ?: \[Errno 2\] .* ?: '/etc/hal/fdi/policy'</re>
+    </pattern>
+
+<!-- Converted from nvidia-graphics-drivers-173.xml -->
+
+    <pattern url="https://wiki.ubuntu.com/Bugs/InitramfsLiveMedia";>
+        <re key="Package">^nvidia-graphics-drivers-173 </re>
+        <re key="DpkgTerminalLog">cp: cannot stat `/vmlinuz': No such file or directory</re>
+        <re key="LiveMediaBuild">Ubuntu</re>
+    </pattern>
+
+<!-- Converted from nvidia-graphics-drivers.xml -->
+
+    <pattern url="https://wiki.ubuntu.com/Bugs/InitramfsLiveMedia";>
+        <re key="Package">^nvidia-graphics-drivers </re>
+        <re key="DpkgTerminalLog">cp: cannot stat `/vmlinuz': No such file or directory</re>
+        <re key="LiveMediaBuild">Ubuntu</re>
+    </pattern>
+
+    <pattern url="https://wiki.ubuntu.com/Bugs/InitramfsLiveMedia";>
+        <re key="Package">^nvidia-current </re>
+        <re key="DpkgTerminalLog">cp: cannot stat `/vmlinuz': No such file or directory</re>
+        <re key="LiveMediaBuild">Ubuntu</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/1268257";>
+        <re key="Package">^nvidia-</re>
+        <re key="DKMSBuildLog">mv: .*build/.tmp_nv.o</re>
+    </pattern>
+
+<!-- nvidia-common -->
+    
+    <pattern url="https://launchpad.net/bugs/825350";>
+	<re key="Package">^nvidia-common </re>
+	<re key="Title">nvidia-detector crashed with ValueError in __get_value_from_name()</re>
+	<re key="Traceback">ValueError: invalid literal for int\(\) with base 10: \'173-updates\'</re>
+    </pattern>
+
+<!-- oneconf -->
+    <pattern url="https://launchpad.net/bugs/839286";>
+	<re key="Package">^oneconf</re>
+	<re key="Title">oneconf-query crashed with DBusException in call_blocking()</re>
+	<re key="Traceback">DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name :1.\d+ was not provided by any .service files</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/851997";>
+	<re key="Package">^oneconf</re>
+	<re key="Title">oneconf-service crashed with TypeError in _sso_login_result\(\): 'NoneType' object is not subscriptable</re>
+	<re key="Traceback">authorizer = OAuthAuthorizer\(token_key=credential\['token'\],</re>
+    </pattern>
+
+<!-- openjdk-9 -->
+
+    <pattern url="https://launchpad.net/bugs/1550950";>
+        <re key="Package">^openjdk-9-jdk</re>
+        <re key="DpkgTerminalLog">openjdk-9-(jdk|jdk-headless):.* \(9~(b107-0ubuntu1|b112-2|b114-0ubuntu1)\)</re>
+        <re key="DpkgTerminalLog">include\/linux\/jawt_md.h.*openjdk-9-jdk-headless</re>
+    </pattern>
+
+<!-- Converted from openswan.xml -->
+    <pattern url="https://launchpad.net/bugs/739001";>
+        <re key="Package">^openswan-modules-dkms </re>
+        <re key="DKMSBuildLog">fatal error\: linux\/config.h\: No such file or directory</re>
+    </pattern>
+
+<!-- Converted from pitivi.xml -->
+
+    <pattern url="http://launchpad.net/bugs/537619";>
+        <re key="Package">^pitivi </re>
+        <re key="Title">pitivi crashed with TypeError in do_simple_paint()</re>
+        <re key="Traceback">TypeError: Required argument 'cr' \(pos 1\) not found</re>
+    </pattern>
+
+<!-- Converted from plymouth.xml -->
+
+    <pattern url="https://launchpad.net/bugs/743730";>
+        <re key="Package">^plymouth </re>
+        <re key="DistroRelease">(11.10|11.04|10.10|10.04)</re>
+        <re key="Stacktrace">ply_list_get_first_node</re>
+        <re key="Stacktrace">ply_event_loop_run</re>
+    </pattern>
+
+<!-- Converted from policykit-1-gnome.xml -->
+
+    <pattern url="https://launchpad.net/bugs/697095";>
+        <re key="Package">^policykit-1-gnome </re>
+        <re key="StacktraceTop">g_datalist_id_set_data_full</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/509651";>
+        <re key="Package">policykit-1</re>
+        <re key="StacktraceTop">dbus_message_iter_append_basic</re>
+    </pattern>
+
+<!-- Converted from postgresql-8.4.xml -->
+
+    <pattern url="https://launchpad.net/bugs/264336";>
+        <re key="Package">^postgresql-8.4 </re>
+        <re key="DpkgTerminalLog">The PostgreSQL server failed to start. Please check the log output</re>
+        <re key="DpkgTerminalLog">FATAL:</re>
+        <re key="DpkgTerminalLog">shmget\(key=.*\)\.</re>
+        <re key="Tags">apport-package</re>
+    </pattern>
+
+<!-- Converted from qemulator.xml -->
+
+    <pattern url="http://launchpad.net/bugs/321955";>
+        <re key="Package">^qemulator </re>
+        <re key="Traceback">IndexError: could not find tree path</re>
+        <re key="Traceback">in on_comboboxCDromdrive_changed</re>
+    </pattern>
+
+<!-- Converted from rhythmbox-ubuntuone-music-store.xml -->
+
+    <pattern url="http://launchpad.net/bugs/602420";>
+	<re key="Package">^rhythmbox </re>
+	<re key="StacktraceTop">g_value_set_object</re>
+	<re key="StacktraceTop">gst_play_bin_get_property</re>
+	<re key="StacktraceTop">g_object_get_valist</re>
+    </pattern>
+
+<!-- Applies to runit -->
+
+    <pattern url="https://launchpad.net/bugs/1448164";>
+        <re key="Package">^runit</re>
+        <re key="DpkgTerminalLog">runit \(2.1.2-3ubuntu1\)</re>
+        <re key="DpkgTerminalLog">start:.*Upstart: Failed to connect to socket /com/ubuntu/upstart:.*</re>
+    </pattern>
+
+<!-- Applies to samba -->
+
+    <pattern url="https://launchpad.net/bugs/877852";>
+        <re key="Package">^samba</re>
+        <re key="VarLogDistupgradeTermlog">Can't locate File\/Temp.pm in @INC</re>
+        <re key="VarLogDistupgradeTermlog">Compilation failed in require at \/usr\/sbin\/update-inetd</re>
+    </pattern>
+
+<!-- Applies to samba4 -->
+
+    <pattern url="http://launchpad.net/bugs/728840";>
+        <re key="Package">^samba4 </re>
+        <re key="Package">4.0.0~alpha15~git20110124.dfsg1-2ubuntu1$</re>
+        <re key="Traceback">LdbError: \(80, 'Failed to load modules from: \/usr\/lib\/samba\/ldb</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/728840";>
+        <re key="Package">^samba4 </re>
+        <re key="Package">4.0.0~alpha15~git20110124.dfsg1-2ubuntu1$</re>
+        <re key="DpkgTerminalLog">LdbError: \(80, 'Failed to load modules from: \/usr\/lib\/samba\/ldb</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/728840";>
+        <re key="Package">^samba4 </re>
+        <re key="Package">4.0.0~alpha15~git20110124.dfsg1-2ubuntu1$</re>
+        <re key="VarLogDistupgradeTermlog">LdbError: \(80, 'Failed to load modules from: \/usr\/lib\/samba\/ldb</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/728840";>
+        <re key="Package">^samba4 </re>
+        <re key="Package">4.0.0~alpha15~git20110124.dfsg1-2ubuntu1$</re>
+        <re key="VarLogDistupgradeTermlog">unable to stat module /usr/lib/samba/ldb/modules/samba</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/728840";>
+        <re key="Package">^samba4 </re>
+        <re key="Package">4.0.0~alpha15~git20110124.dfsg1-2ubuntu1$</re>
+        <re key="VarLogDistupgradeApttermlog">unable to stat module /usr/lib/samba/ldb/modules/samba</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/728840";>
+        <re key="Package">^samba4 </re>
+        <re key="Package">4.0.0~alpha15~git20110124.dfsg1-2ubuntu1$</re>
+        <re key="DpkgTerminalLog">unable to stat module /usr/lib/samba/ldb/modules/samba</re>
+    </pattern>
+    
+    <pattern url="http://launchpad.net/bugs/849545";>
+	<re key="Package">^samba4 </re>
+	<re key="Package">4.0.0~alpha17~git20110807.dfsg1-1ubuntu1</re>
+	<re key="Title">upgradeprovision crashed with LdbError in connect()</re>
+	<re key="Traceback">LdbError\: \(80\, \'dsdb_module_search_dn\: did not find base dn \@ROOTDSE \(0 results\)\'\)</re>
+    </pattern>
+
+<!-- indiv-screenlets -->
+
+    <pattern url="http://launchpad.net/bugs/807129";>
+        <re key="SourcePackage">^indiv-screenlets</re>
+        <re key="Tags">apport-crash</re>
+        <re key="Traceback">gtk-close</re>
+        <re key="Traceback">GError</re>
+        <re key="Traceback">File "/usr/lib/pymodules/python2.7/screenlets/__init__.py", line [0-9]+, in load_buttons
+    self\.closeb = self\.gtk_icon_theme\.load_icon \("gtk-close", 16, 0\)</re>
+    </pattern>
+
+<!-- Applies to software-center -->
+
+    <pattern url="https://launchpad.net/bugs/717645";>
+        <re key="Package">^software-center </re>
+        <re key="Traceback">ValueError\("Need either appname or pkgname or request"\)</re>
+        <re key="Traceback">application.py</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/823428";>
+	<re key="Package">^software-center </re>
+	<re key="Traceback">TypeError: character mapping must return integer, None or unicode</re>
+	<re key="Title">software-center crashed with TypeError in normalize()</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/834038";>
+	<re key="Package">^software-center </re>
+	<re key="Title">software-center-gtk3 crashed with DBusException in _convert_dbus_exception()</re>
+	<re key="Traceback">DBusException: org.freedesktop.DBus.Error.UnknownMethod: Method "GetAll" with signature "s" on interface "org.freedesktop.DBus.Properties" doesn't exist</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/834494";>
+        <re key="Package">^software-center </re>
+        <re key="Title">software-center-gtk3 crashed with UnicodeEncodeError in get_dbus_message()</re>
+        <re key="Traceback">UnicodeEncodeError: 'ascii' codec can't encode character</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/827527";>
+	<re key="Package">^software-center </re>
+	<re key="Title">software-center crashed with TypeError in run()</re>
+	<re key="Traceback">TypeError: gi._glib.spawn_async: first argument must be a sequence of strings</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/854113";>
+	<re key="Package">^software-center </re>
+	<re key="Title">software-center crashed with IndexError in __getitem__()</re>
+	<re key="Traceback">IndexError: could not find tree path \'\d+\'</re>
+    </pattern>
+
+<!-- Applies to software-properties -->
+
+    <pattern url="https://launchpad.net/bugs/831652";>
+	<re key="Package">^software-properties</re>
+	<re key="Title">software-properties-gtk crashed with UnicodeEncodeError in ToggleSourceUse()</re>
+	<re key="Traceback">UnicodeEncodeError: 'ascii' codec can't encode character</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/828850";>
+	<re key="Package">^software-properties</re>
+	<re key="Title">software-properties-gtk crashed with DBusException in call_blocking\(\)</re>
+	<re key="Traceback">DBusException: com\..*\.SoftwareProperties\.PermissionDeniedByPolicy: com\..*\.softwareproperties\.applychanges</re>
+    </pattern>
+
+<!-- Patterns for speakup.xml -->
+
+    <pattern url="https://launchpad.net/bugs/726144";>
+        <re key="Package">^speakup 3.1.5.dfsg.1-1ubuntu1</re>
+        <re key="DKMSBuildLog">buffers.c:33:46: error: .*struct vc_data.* has no member named .*vc_tty.*</re>
+    </pattern>
+
+<!-- Converted from splashy.xml -->
+
+    <pattern url="https://launchpad.net/bugs/328089";>
+        <re key="Package">^splashy </re>
+        <re key="Title">failed to install/upgrade:.*/etc/lsb-base-logging.sh.*lsb-base</re>
+    </pattern>
+
+<!-- Converted from sun-java6-bin.xml -->
+
+    <pattern url="https://launchpad.net/bugs/303609";>
+        <re key="Package">^sun-java6-bin </re>
+        <re key="DpkgTerminalLog">user did not accept the sun-dlj-v1-1 license</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/522383";>
+        <re key="Package">^sun-java6-bin </re>
+        <re key="DpkgTerminalLog">debconf: \(Cannot connect to /tmp/aptdaemon-[0-9a-zA-Z]{6}/debconf.socket</re>
+    </pattern>
+
+<!-- Converted from sun-java6-doc.xml -->
+
+    <pattern url="https://launchpad.net/bugs/85969";>
+        <re key="Package">^sun-java6-doc </re>
+        <re key="DpkgTerminalLog">Abort installation of JDK documentation</re>
+    </pattern>
+
+<!-- Converted from sun-java6-jre.xml -->
+
+    <pattern url="https://launchpad.net/bugs/303609";>
+        <re key="Package">^sun-java6-jre </re>
+        <re key="DpkgTerminalLog">user did not accept the sun-dlj-v1-1 license</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/522383";>
+        <re key="Package">^sun-java6-jre </re>
+        <re key="DpkgTerminalLog">debconf: \(Cannot connect to /tmp/aptdaemon-[0-9a-zA-Z]{6}/debconf.socket</re>
+    </pattern>
+
+<!-- Converted from system-config-samba.xml -->
+
+    <pattern url="https://launchpad.net/bugs/749748";>
+        <re key="Package">^system-config-samba </re>
+        <re key="Traceback">in .module.</re>    
+        <re key="Traceback">ImportError: No module named glade</re>            
+    </pattern>
+
+<!-- Converted from telepathy-butterfly.xml -->
+
+    <pattern url="http://launchpad.net/bugs/464902";>
+        <re key="Package">^telepathy-butterfly </re>
+	<re key="Traceback">NotImplementedError</re>
+	<re key="Traceback">switchboard_manager.py.*__on_user_invitation_failed</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/450951";>
+        <re key="Package">^telepathy-butterfly </re>
+        <re key="Title">telepathy-butterfly crashed with KeyError in __getitem__\(\)</re>
+        <re key="Traceback">session = self\._sessions\[session_id\]</re>
+        <re key="Traceback">KeyError: \d+</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/628748";>
+        <re key="Package">^telepathy-butterfly </re>
+        <re key="Title">telepathy\-butterfly crashed with KeyError in parse\(\)</re>
+        <re key="Traceback">KeyError: 'Location'</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/649487";>
+        <re key="Package">^telepathy-butterfly </re>
+        <re key="Traceback">text.py", line .*, in _signal_text_received</re>
+        <re key="Traceback">UnicodeDecodeError</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/707508";>
+        <re key="Package">^telepathy-butterfly </re>
+        <re key="Traceback">service.py", line .*, in add_to_connection</re>
+        <re key="Traceback">KeyError: "Can't register the object-path handler for '\/org\/freedesktop\/Telepathy\/Connection\/butterfly\/msn\/.*\/RosterChannel\/List\/subscribe': there is already a handler"</re>
+    </pattern>
+
+    <pattern url="http://launchpad.net/bugs/726301";>
+	<re key="Package">^telepathy-mission-control-5</re>
+	<re key="Signal">11</re>
+	<re key="Stacktrace">g_str_hash</re>
+	<re key="Stacktrace">mcd_dispatcher_client_needs_recovery_cb</re>
+    </pattern>
+
+<!-- Converted from ubiquity.xml -->
+    <!--<pattern url="MediaError">
+        <re key="Package">^ubiquity </re>
+        <re key="UbiquitySyslog">loop1.*Read failure</re>
+        <re key="UbiquitySyslog">attempt to access beyond end of device</re>
+    </pattern>-->
+    <pattern url="http://launchpad.net/bugs/894768";>
+        <re key="Package">^ubiquity 2.8.7</re>
+        <re key="UbiquitySyslog">ubuntu install.py: IOError: \[Errno 22\] Invalid argument</re>
+        <re key="UbiquitySyslog">install_misc.py", line 62(7|1), in copy_file</re>
+        <re key="UbiquitySyslog">targetfh.(close|write)</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/850264";>
+        <re key="Package">^ubiquity 2.8.7</re>
+        <re key="Architecture">amd64</re>
+        <!-- this only matches english -->
+        <re key="UbiquitySyslog">ubiquity: dpkg: error processing libc6 \(--configure\):</re>
+    </pattern>
+    <!--<pattern url="http://launchpad.net/bugs/870643";>
+        <re key="Package">^ubiquity </re>
+        <re key="UbiquitySyslog">unable to resolve host address..archive.canonical.com</re>
+        <re key="UbiquitySyslog">ubiquity: download failed</re>
+        <re key="UbiquitySyslog">The Flash plugin is NOT installed.</re>
+    </pattern>-->
+    <pattern url="http://launchpad.net/bugs/876298";>
+        <re key="Package">^ubiquity 2.8.7</re>
+        <re key="UbiquitySyslog">ubiquity: download failed</re>
+        <re key="UbiquitySyslog">The Flash plugin is NOT installed.</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/876298";>
+        <re key="SourcePackage">^flashplugin-nonfree</re>
+        <re key="DistroRelease">(11.10|11.04|10.10)</re>
+        <re key="VarLogDistupgradeApttermlog">download failed</re>
+        <re key="VarLogDistupgradeApttermlog">The Flash plugin is NOT installed.</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/876298";>
+        <re key="SourcePackage">^flashplugin-nonfree</re>
+        <re key="DistroRelease">12.04</re>
+        <re key="Package">(11.1.102.[56][235]|11.2.202.228ubuntu1|^flashplugin-installer$)</re>
+        <re key="VarLogDistupgradeApttermlog">download failed</re>
+        <re key="VarLogDistupgradeApttermlog">The Flash plugin is NOT installed.</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/876298";>
+        <re key="SourcePackage">^flashplugin-nonfree</re>
+        <re key="DistroRelease">(11.10|11.04|10.10)</re>
+        <re key="DpkgTerminalLog">download failed</re>
+        <re key="DpkgTerminalLog">The Flash plugin is NOT installed.</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/876298";>
+        <re key="SourcePackage">^flashplugin-nonfree</re>
+        <re key="DistroRelease">12.04</re>
+        <re key="Package">(11.1.102.[56][235]|11.2.202.228ubuntu1|^flashplugin-installer$)</re>
+        <re key="DpkgTerminalLog">download failed</re>
+        <re key="DpkgTerminalLog">The Flash plugin is NOT installed.</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/870281";>
+        <re key="Package">^ubiquity 2.8.7</re>
+        <re key="UbiquitySyslog">10.3.183.10ubuntu5</re>
+        <re key="UbiquitySyslog">404: Not Found</re>
+        <re key="UbiquitySyslog">The Flash plugin is NOT installed.</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/398614";>
+        <re key="Package">^ubiquity 2.8.7</re>
+        <re key="Traceback">XStartupError: X server exited with return code 1</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/792652";>
+        <re key="Package">^ubiquity (2.6.10|2.8.7)</re>
+        <re key="Traceback">debconf.py</re>
+        <re key="Traceback">self.write.write\("%s %s\\n" % \(command, ' '.join\(map\(str, params\)\)\)\)</re>
+        <re key="Traceback">ValueError: I/O operation on closed file</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/220961";>
+        <re key="Package">^ubiquity </re>
+        <re key="UbiquitySyslog">No space left on device</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/998492";>
+        <re key="Package">^ubiquity </re>
+        <re key="UbiquitySyslog">plugininstall.py: Failed to find package object for .*i386</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/1587602";>
+        <re key="Package">^ubiquity </re>
+        <re key="UbiquitySyslog">sed:.*//etc/default/rcS:</re> 
+    </pattern>
+
+<!-- Converted from ubuntuone-client.xml -->
+
+    <pattern url="http://launchpad.net/bugs/467397";>
+        <re key="Package">^ubuntuone-client </re>
+        <re key="UbuntuOneOAuthLoginLog">KeyError: 'ROUND_CEiLiNG'</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/399937";>
+        <re key="Package">^ubuntuone-client </re>
+        <re key="OriginalTitle">ubuntuone-syncdaemon crashed with ImportError in (.module.|__main__)</re>
+        <re key="Traceback">in .module.</re>
+        <re key="Traceback">ImportError\: </re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/528203";>
+        <re key="Package">^ubuntuone-client </re>
+        <re key="Title">failed to install/upgrade: trying to overwrite '/usr/lib/ubuntuone-client/ubuntuone-login', which is also in package ubuntuone-client</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/554561";>
+        <re key="Package">^ubuntuone-client </re>
+        <re key="Title">ubuntuone-syncdaemon crashed with AttributeError in _upgrade_metadata_3</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/420705";>
+        <re key="Package">^ubuntuone-client</re>
+        <re key="Traceback">org\.freedesktop\.DBus\.Error\.NoServer</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/711162";>
+        <re key="Package">^ubuntuone-client</re>
+        <re key="Traceback">connection\.py</re>
+        <re key="Traceback">message\.append\(signature=signature, \*args\)</re>
+        <re key="Traceback">ValueError: Unable to guess signature from an empty dict</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/711221";>
+        <re key="Package">^ubuntuone-client</re>
+        <re key="Traceback">connection\.py.*in call_blocking</re>
+        <re key="Traceback">message, timeout</re>
+        <re key="Traceback">DBusException: org\.freedesktop\.DBus\.Error\.Disconnected: Connection was disconnected before a reply was received</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/865105";>
+        <re key="Package">^ubuntuone-client</re>
+        <re key="StacktraceTop">g_settings_get_boolean</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/1102685";>
+        <re key="Package">^ubuntuone-client</re>
+        <re key="Traceback">Can not override a type Object, which is not in a gobject introspection typelib</re>
+    </pattern>
+
+<!-- Ubuntu One client python libraries -->
+    <pattern url="http://launchpad.net/bugs/1009573";>
+        <re key="Package">^python-ubuntuone-client.*1\.2\.2-0ubuntu2\.2</re>
+        <re key="DpkgTerminalLog">except pycurl\.error as e:</re>
+    </pattern>
+
+<!-- Ubuntu One installer -->
+    <pattern url="http://launchpad.net/bugs/853060";>
+        <re key="Package">^ubuntuone-installer</re>
+        <re key="Traceback">types.py", line .*, in function</re>
+        <re key="Traceback">GError: .*-control-panel-gtk</re>
+    </pattern>
+
+
+<!-- Ubuntu SSO Client -->
+    <pattern url="http://launchpad.net/bugs/711413";>
+        <re key="Package">^ubuntu-sso-client</re>
+        <re key="Traceback">org\.freedesktop\.DBus\.Error\.NoServer</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/940669";>
+        <re key="Package">^ubuntu-sso-client 3.0.0-0ubuntu1</re>
+        <re key="Title">ubuntu-sso-login crashed with SIGSEGV in (QSocketNotifier::|)setEnabled</re>
+        <re key="Signal">11</re>
+        <re key="Tags">apport-crash</re>
+        <re key="StacktraceTop">QSocketNotifier::setEnabled</re>
+        <re key="StacktraceTop">QMetaObject::activate</re>
+        <re key="StacktraceTop">QSocketNotifier::activated</re>
+    </pattern>
+
+<!-- Converted from update-manager.xml -->
+
+    <pattern url="https://launchpad.net/bugs/341503";>
+        <re key="Package">^update-manager </re>
+        <re key="Traceback">in requiredDownload</re>
+        <re key="Traceback">pm.[GetArchives|get_archives]</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/618951";>
+        <re key="Package">^update-manager </re>
+        <re key="Traceback">InstallBackendAptdaemon.py</re>
+        <re key="Traceback">in commit</re>
+        <re key="Traceback">DBusException</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/626798";>
+        <re key="Package">^update-manager </re>
+        <re key="Title">update-manager crashed with DBusException in _run\(\)</re>
+        <re key="Traceback">yield self._transaction.run\(.*\)</re>
+        <re key="Traceback">DBusException: org.*.DBus.Error.NoReply: Did not receive a reply.</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/659438";>
+        <re key="Traceback">pm.get_archives</re>
+        <re key="Traceback">I wasn't able to locate file for the.*package.</re>
+        <re key="Package">^update-manager </re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/819234";>
+	<re key="Package">^update-manager </re>
+	<re key="Traceback">NotAuthorizedError: org.freedesktop.PolicyKit.Error.NotAuthorized: \('system-bus-name', \{'name':  \':1.\d+'\}\): org.debian.apt.install-or-remove-packages</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/873424";>
+	<re key="Package">^update-manager 1:0.150</re>
+	<re key="Traceback">check-new-release-gtk", line .*, in on_button_ask_me_later_clicked</re>
+        <re key="Traceback">TypeError: integer argument expected, got float</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/810255";>
+	<re key="Package">^update-manager </re>
+	<re key="Title">update-manager crashed with UnicodeEncodeError in get_dbus_message\(\): 'ascii' codec can't encode character(s)?( u'\\.*')? in position \d+(-\d+)?: ordinal not in range\(128\)</re>
+	<re key="Traceback">UnicodeEncodeError: 'ascii' codec can't encode character(s)?( u'\\.*')? in position \d+(-\d+)?: ordinal not in range\(128\)</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/854090";>
+        <re key="Package">^(aptdaemon|oneconf|synaptic|update-manager) </re>
+        <re key="Title">(aptd|oneconf-service|synaptic|update-manager) crashed with SIGSEGV in debListParser::LoadReleaseInfo()</re>
+        <re key="StacktraceTop">debListParser::LoadReleaseInfo.*(from /usr/lib/libapt-pkg.so.4.11|at deb/deblistparser.cc:\d+)</re>
+    </pattern>
+    
+    <pattern url="https://launchpad.net/bugs/898851";>
+	<re key="Package">^update-manager </re>
+	<re key="Traceback">types.py", line .*, in function</re>
+        <re key="Traceback">TypeError: Must be number, not tuple</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/818760";>
+        <re key="Package">^update-manager </re>
+        <re key="Traceback">socket.py", line .*, in readline</re>
+        <re key="Traceback">timeout: timed out</re>
+    </pattern>
+
+<!-- Converted from update-notifier.xml -->
+
+    <pattern url="https://launchpad.net/bugs/340479";>
+        <re key="Package">^update-notifier </re>
+        <re key="Title">apt_check.py crashed with SIGSEGV in pkgCacheGenerator::MergeList</re>
+        <re key="StacktraceTop">pkgCacheGenerator::MergeList</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/440498";>
+        <re key="Package">^update-notifier </re>
+        <re key="Title">apt_check.py crashed with SIGSEGV in pkgCacheGenerator::ListParser::NewDepends</re>
+        <re key="Stacktrace">pkgCacheGenerator::ListParser::NewDepends</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1003100";>
+        <re key="Package">^update-notifier-common </re>
+        <re key="DpkgTerminalLog">KeyError: 'paquetes'</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1003100";>
+        <re key="Package">^update-notifier-common </re>
+        <re key="VarLogDistupgradeApttermlog">KeyError: 'paquetes'</re>
+    </pattern>
+
+<!-- zeitgeist -->
+
+    <pattern url="http://launchpad.net/bugs/807950";>
+	<re key="Package">^zeitgeist</re>
+	<re key="Title">zeitgeist-daemon crashed with LookupError in remove_from_connection</re>
+	<re key="Traceback">LookupError: &lt;_zeitgeist.engine.remote.RemoteInterface at /org/gnome/zeitgeist/log/activity at *</re>
+	<re key="Traceback">is not exported at a location matching \(None,None\)</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/834067";>
+	<re key="Package">^zeitgeist</re>
+	<re key="Title">zeitgeist-daemon crashed with SIGSEGV in Xapian::WritableDatabase::add_document()</re>
+	<re key="StacktraceTop">Xapian::WritableDatabase::add_document</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/840542";>
+	<re key="Package">^zeitgeist</re>
+	<re key="Title">zeitgeist-daemon crashed with SIGSEGV in std::_Rb_tree_increment()</re>
+	<re key="StacktraceTop">std::_Rb_tree_increment</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/841922";>
+	<re key="Package">^zeitgeist (0.7.1-1|0.8.2-1)</re>
+	<re key="Title">zeitgeist-daemon crashed with DocNotFoundError in _check_index_and_start_worker()</re>
+	<re key="Traceback">DocNotFoundError: Document \d+ not found</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/841878";>
+	<re key="Package">^zeitgeist</re>
+        <re key="Title">zeitgeist-daemon crashed with DatabaseCorruptError in _check_index_and_start_worker()</re>
+        <re key="Traceback">_check_index_and_start_worker</re>
+	<re key="Traceback">DatabaseCorruptError: (Data ran out unexpectedly when reading posting list|Unexpected end of posting list for|Expected block.*not 1)</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/839798";>
+	<re key="Package">^zeitgeist</re>
+	<re key="Title">zeitgeist-daemon crashed with RangeError in _check_index\(\)</re>
+	<re key="Traceback">RangeError: Value in posting list too large.</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/839672";>
+	<re key="Package">^zeitgeist</re>
+	<re key="Title">zeitgeist-daemon crashed with DatabaseError in _check_index\(\)</re>
+	<re key="Traceback">DatabaseError: Error reading block.*: got end of file</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/848710";>
+	<re key="Package">^zeitgeist</re>
+	<re key="Title">zeitgeist-daemon crashed with OperationalError in execute()</re>
+	<re key="Traceback">OperationalError: database is locked</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/849595";>
+	<re key="Package">^zeitgeist</re>
+	<re key="Title">zeitgeist-daemon crashed with DatabaseError in execute()</re>
+	<re key="Traceback">DatabaseError: database disk image is malformed</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/832092";>
+	<re key="Package">^zeitgeist</re>
+	<re key="Title">zeitgeist-daemon crashed with DBusException in call_blocking()</re>
+	<re key="Traceback">DBusException: org.freedesktop.DBus.Error.Disconnected: Connection is closed</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/839837";>
+	<re key="Package">^zeitgeist</re>
+	<re key="Title">zeitgeist-daemon crashed with DatabaseCorruptError in _check_index()</re>
+	<re key="Traceback">DatabaseCorruptError: Data ran out unexpectedly when reading posting list.</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/841413";>
+	<re key="Package">^zeitgeist</re>
+	<re key="Title">zeitgeist-daemon crashed with SIGSEGV in ChertTable::add_item_to_block()</re>
+	<re key="Signal">11</re>
+	<re key="StacktraceTop">ChertTable::add_item_to_block</re>
+    </pattern>
+    
+    <pattern url="https://launchpad.net/bugs/896445";>
+	    <re key="Package">^zeitgeist</re>
+	    <re key="Traceback">fts.py</re>
+  	    <re key="Traceback">in __init__</re>
+   	    <re key="Traceback">DatabaseLockError\: Unable to get write lock on .*\: already locked</re>
+    </pattern>
+
+<!-- Converted from libxcb.xml -->
+    <pattern url="http://launchpad.net/bugs/507062";>
+        <re key="AssertionMessage">_XAllocID:.*ret.*inval_id</re>
+    </pattern>
+
+<!-- branding-ubuntu bugs -->
+
+    <pattern url="http://launchpad.net/bugs/753449";>
+        <re key="Package">branding-ubuntu</re>
+        <re key="ErrorMessage">/usr/share/gnome-games/quadrapassel/pixmaps/quadrapassel.svg.*quadrapassel</re>
+    </pattern>
+
+<!-- pyatspi bugs -->
+    <pattern url="http://launchpad.net/bugs/827100";>
+        <re key="Package">pyatspi</re>
+        <re key="DpkgTerminalLog">SyntaxError: \('invalid syntax', \('/usr/lib/python2.7/dist-packages/pyatspi/text.py', 474,</re>
+    </pattern>
+
+<!-- language-selector bugs -->
+     <pattern url="https://launchpad.net/bugs/619363";>
+        <re key="Package">^language-selector</re>
+        <re key="Traceback">in _inline_callbacks</re>
+        <re key="Traceback">DBusException</re>
+    </pattern>
+    <pattern url="http://launchpad.net/bugs/827176";>
+        <re key="Package">language-selector</re>
+        <re key="Traceback">File "/usr/bin/fontconfig-voodoo"</re>
+        <re key="Traceback">DBusException: org.freedesktop.DBus.Error.UnknownMethod: Method "Get" with signature "ss" on interface "org.freedesktop.DBus.Properties" doesn't exist</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/833065";>
+	<re key="Package">^language-selector</re>
+	<re key="Title">fontconfig-voodoo crashed with TypeError in getUserDefaultLanguage()</re> 
+	<re key="Traceback">TypeError: expected string or buffer</re>
+    </pattern>
+    
+    <pattern url="https://launchpad.net/bugs/856975";>
+	<re key="Package">^language-selector</re>
+	<re key="Title">fontconfig-voodoo crashed with DBusException in __new__()</re>
+	<re key="Traceback">DBusException: org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory</re>
+    </pattern>
+
+<!-- ubuntu-meta -->
+    <pattern url="http://launchpad.net/bugs/828759";>
+        <re key="Package">ubuntu-desktop</re>
+        <re key="VarLogDistupgradeApttermlog">dpkg: dependency problems prevent configuration of ubuntu-desktop:</re>
+        <re key="VarLogDistupgradeApttermlog">Package at-spi2-core is not installed.</re>
+        <re key="VarLogDistupgradeApttermlog">Package libatk-adaptor is not installed.</re>
+    </pattern>
+
+<!-- emerald -->
+    <pattern url="http://launchpad.net/bugs/726229";>
+        <re key="Package">emerald</re>
+        <re key="StacktraceTop">decor_quads_to_property \(\) from /usr/lib/libdecoration.so.0</re>
+    </pattern>
+
+<!-- sessioninstaller -->
+    <pattern url="http://launchpad.net/bugs/716711";>
+        <re key="Package">sessioninstaller</re>
+        <re key="Traceback">sessioninstaller/core\.py</re>
+        <re key="Traceback">_install_provide_files</re>
+        <re key="Traceback">raise errors\.ModifyInternalError\(message\)</re>
+    </pattern>
+    
+<!-- gnome-codec-install -->
+    <pattern url="http://launchpad.net/bugs/834133";>
+        <re key="Package">gnome-codec-install</re>
+        <re key="Traceback">yield self\._transaction.run\(\)</re>
+        <re key="Traceback">gstreamer0.10-plugins-ugly: Depends:</re>
+    </pattern>
+    
+    <pattern url="http://launchpad.net/bugs/715523";>
+        <re key="Package">^gnome-codec-install</re>
+        <re key="Traceback">gtkwidgets.py", line .*, in _run</re>
+        <re key="Traceback">DBusException: org.freedesktop.DBus.Error.NoReply</re>
+    </pattern>
+    
+<!-- dconf-gsettings-backend -->
+    <pattern url="http://launchpad.net/bugs/832536";>
+        <re key="Package">dconf-gsettings-backend</re>
+        <re key="Signal">5</re>
+        <re key="Title">dconf-service crashed with signal 5 in __libc_start_main\(\)</re>
+        <re key="Stacktrace">dconf_state_init_session</re>
+    </pattern>
+    
+<!-- gnome-app-install -->
+    <pattern url="http://launchpad.net/bugs/339148";>
+        <re key="Package">gnome-app-install</re>
+        <re key="Traceback">Menu.py</re>
+        <re key="Traceback">in _refilter</re>
+        <re key="Traceback">name = model\.get_value\(model\.get_iter\(path\), COL_NAME\)</re>
+        <re key="Traceback">ValueError</re>
+    </pattern>
+    
+<!-- libgtk-x11-2.0.so -->
+    <pattern url="http://launchpad.net/bugs/729150";>
+        <re key="Signal">11</re>
+        <re key="Stacktrace">find_image_offset</re>
+        <re key="Stacktrace">gtkiconcache</re>
+    </pattern>
+
+<!-- oneconf, server unavailable -->
+    <pattern url="https://launchpad.net/bugs/851169";>
+        <re key="Package">^oneconf</re>
+        <re key="Title">oneconf-service crashed with ServerNotFoundError in _conn_request\(\): Unable to find the server at apps.ubuntu.com</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/856576";>
+        <re key="Package">^oneconf</re>
+        <re key="Title">oneconf-query crashed with IOError in translation\(\): \[Errno 2\] No translation file found for domain: 'oneconf'</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1102715";>
+        <re key="Package">^oneconf</re>
+        <re key="Title">No module named oneconf.version</re>
+    </pattern>
+    
+<!-- balazar -->
+    <pattern url="http://launchpad.net/bugs/132636";>
+        <re key="Package">balazar</re>
+        <re key="Traceback">GLError</re>
+        <re key="Traceback">_soya.check_gl_error</re>
+        <re key="Traceback">_soya.render</re>
+    </pattern>
+
+    <pattern url="http://launchpad.net/bugs/852343";>
+        <re key="Package">indicator-session</re>
+        <re key="Title">gtk-logout-helper crashed with signal 5</re>
+    </pattern>
+
+    <pattern url="http://launchpad.net/bugs/850662";>
+        <re key="Package">indicator-sound</re>
+        <re key="StacktraceTop">pa_cvolume_set</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/264336";>
+        <re key="Package">^postgresql</re>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">SHMMAX</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/656351";>
+        <re key="Package">^postgresql</re>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">authentication option not in name=value format: sameuser</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/783930";>
+        <re key="Package">^postgresql-common</re>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">Error: /var/lib/postgresql/.* is not accessible or does not exist</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/783930";>
+        <re key="Package">^postgresql-common</re>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">Error: /var/lib/postgresql/.* is not accessible or does not exist</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/784321";>
+        <re key="Package">^postgresql</re>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">server.key.*Permission denied</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/842590";>
+        <re key="Package">^postgresql</re>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">could not translate host name "localhost"</re>
+    </pattern>
+
+    <pattern url ="http://launchpad.net/bugs/871083";>
+        <re key="Package">^libpam-modules </re>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeApttermlog">'./usr/share/man/man8/pam_shells.8.gz' is different from the same file on the system</re>
+    </pattern>
+
+    <pattern url ="http://launchpad.net/bugs/773172";>
+        <re key="ProblemType">^Package</re>
+        <re key="VarLogDistupgradeApttermlog">dpkg-deb --fsys-tarfile returned error exit status</re>
+    </pattern>
+
+    <pattern url ="http://launchpad.net/bugs/773172";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">dpkg-deb --fsys-tarfile returned error exit status</re>
+    </pattern>
+
+    <pattern url ="http://launchpad.net/bugs/773172";>
+        <re key="ProblemType">^Package</re>
+        <re key="DpkgTerminalLog">corrupted filesystem tarfile</re>
+    </pattern>
+
+
+    <pattern url="https://launchpad.net/bugs/883439";>
+	<re key="Package">^plymouth-theme-ubuntu-text </re>
+	<re key="ProblemType">^Package</re>
+	<re key="DefaultPlymouth">/lib/plymouth/themes/satanic-logo/satanic-logo.plymouth </re>
+	<re key="VarLogDistUpgradeApttermlog">update-alternatives: error: readlink.*/etc/alternatives/text.plymouth.* failed: Invalid argument</re>
+    </pattern>
+
+    <pattern url ="http://launchpad.net/bugs/887892";>
+        <re key="ProblemType">^Package</re>
+	<re key="Package">^udev (175-0ubuntu1|173)</re>
+        <re key="VarLogDistupgradeApttermlog">unrecognized option '--convert-db'</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/182629";>
+	<re key="Package">^gksu</re>
+        <re key="Title">SIGSEGV in gdk_window_set_opacity</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/90312";>
+	<re key="Package">^gksu</re>
+        <re key="Title">SIGSEGV in gdk_draw_pixbuf</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/898874";>
+	<re key="Package">^gksu</re>
+        <re key="Title">SIGSEGV in (.*__strlen_|fputs)</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/442941";>
+        <re key="DistroRelease">Ubuntu 11.04</re>
+        <re key="Package">^tzdata </re>
+        <re key="DpkgTerminalLog">tzdata 2011f-1</re>
+        <re key="DpkgTerminalLog">post-installation.*128</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/442941";>
+        <re key="DistroRelease">Ubuntu 10.04</re>
+        <re key="Package">^tzdata </re>
+        <re key="DpkgTerminalLog">tzdata 2010i-1</re>
+        <re key="DpkgTerminalLog">post-installation.*128</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/442941";>
+        <re key="DistroRelease">Ubuntu (11.04|10.10|10.04)</re>
+        <re key="Package">^tzdata </re>
+        <re key="DpkgTerminalLog">could not open /var/cache/debconf/config.dat</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/915271";>
+        <re key="Package">^libreoffice</re>
+        <re key="Title">rmdir.*basis3.4</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/915271";>
+        <re key="Package">^libreoffice</re>
+        <re key="VarLogDistupgradeApttermlog">rmdir.*basis3.4</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/915271";>
+        <re key="Package">^libreoffice</re>
+        <re key="DpkgTerminalLog">rmdir.*basis3.4</re>
+    </pattern>
+
+    <pattern url="http://launchpad.net/bugs/911436";>
+        <re key="Package">^(cups-client |samba |system-config-printer |evolution-data-server |landscape-client |software-center |libvirt |gnucash |gwibber |git |kde-runtime |cups )</re>
+        <re key="Stacktrace">p11_kit_initialize_registered</re>
+    </pattern>
+
+    <pattern url="http://launchpad.net/bugs/925049";>
+        <re key="Package">^libreoffice</re>
+        <re key="StacktraceTop">::notifyInternal()</re>
+    </pattern>
+
+<!-- xorg-server -->
+    <pattern url="http://wiki.ubuntu.com/X/Bugs/Transitions";>
+      <re key="ErrorMessage">installing xserver-xorg-core would break existing software</re>
+      <re key="Package">^xserver-xorg-core</re>
+      <re key="ProblemType">^Package</re>
+      <re key="DpkgTerminalLog"> installing xserver-xorg-core would break existing software</re>
+    </pattern>
+
+<!-- vboxgtk -->
+    <pattern url="https://launchpad.net/bugs/511601";>
+        <re key="Package">^vboxgtk</re>
+        <re key="Traceback">components.py", line .*, in __getattr__</re>
+        <re key="Traceback">AttributeError: 'MachineState' interfaces do not define a constant 'Discarding'</re>
+    </pattern>
+
+<!-- clamav -->
+    <pattern url="https://launchpad.net/bugs/1015337";>
+        <re key="Package">^clamav-base 0.97.5\+dfsg-1ubuntu0.12.04.1</re>
+        <re key="DpkgTerminalLog">install: cannot stat `/usr/share/doc/clamav-base/examples/main.cvd': No such file or directory</re>
+    </pattern>
+
+<!-- ubuntu-release-upgrader -->
+    <pattern url="https://launchpad.net/bugs/1023055";>
+        <re key="Package">^ubuntu-release-upgrader-core </re>
+        <re key="Traceback">from DistUpgrade.DistUpgradeVersion import VERSION</re>
+        <re key="Traceback">ImportError: No module named DistUpgrade.DistUpgradeVersion</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1534374";>
+        <re key="Package">^ubuntu-release-upgrader-core </re>
+        <re key="Dependencies">gcc-4.9-base 4.9.3-0ubuntu4</re>
+        <re key="VarLogDistupgradeMainlog">lsb-release: 'trusty'</re>
+        <re key="VarLogDistupgradeMainlog">plugins for condition 'vividPreCacheOpen'</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1384946";>
+        <re key="Package">^ubuntu-release-upgrader-core </re>
+        <re key="VarLogDistupgradeAptlog">Holding Back gnuplot-nox</re>
+        <re key="VarLogDistupgradeAptlog">Holding Back gnuplot-x11</re>
+        <re key="VarLogDistupgradeAptlog">\(9\) gnuplot-x11</re>
+        <re key="VarLogDistupgradeAptlog">\(9\) gnuplot-nox</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/996916";>
+        <re key="Package">^(ubuntu-release-upgrader-core |update-manager)</re>
+        <re key="VarLogDistupgradeMainlog">blacklist expr '\^postgresql-.*\[0-9\]\\.\[0-9\].*' matches</re>
+        <re key="VarLogDistupgradeMainlog">The package 'postgresql-.*' is marked for removal but it's in the removal blacklist</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1605259";>
+        <re key="Package">^ubuntu-release-upgrader-core </re>
+        <re key="VarLogDistupgradeMainlog">ERROR aufs setup failed</re>
+    </pattern>
+    <!-- don't consolidate this Xorg PPA issue with search-bugs so we can be informative about resolving it -->
+    <pattern url="https://launchpad.net/bugs/1069133";>
+        <re key="Package">^ubuntu-release-upgrader-core </re>
+        <re key="VarLogDistupgradeAptlog">xserver-xorg.*~gd~(t|u|v|w)</re>
+        <!-- the following bits may have been overly specific i.e. got no false positives w/o them  -->
+        <!-- <re key="VarLogDistupgradeAptclonesystemstate.tar">\./etc/apt/sources\.list\.d/oibaf-graphics-drivers.*list</re> -->
+        <!-- <re key="VarLogDistupgradeMainlog">pkgProblemResolver</re> -->
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1510841";>
+        <re key="Package">^ubuntu-release-upgrader-core </re>
+        <re key="VarLogDistupgradeMainlog">MetaPkgs: \S+ \S+</re>
+        <re key="VarLogDistupgradeMainlog">marked for removal but it's in the removal blacklist</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1610756";>
+        <re key="Package">^ubuntu-release-upgrader-core </re>
+        <re key="VarLogDistupgradeAptlog">Holding Back backuppc:\w+ rather than change libcgi-pm-perl</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1611737";>
+        <re key="Package">^ubuntu-release-upgrader-core </re>
+        <re key="VarLogDistupgradeMainlog">ros-(indigo|jade)</re>
+        <re key="VarLogDistupgradeAptlog">Broken libboost</re>
+        <!-- Not every u-r-u bug contains the full log -->
+        <!-- <re key="VarLogDistupgradeMainlog">Dist-upgrade failed.*pkgProblemResolver</re> -->
+    </pattern>
+
+<!-- compiz -->
+    <pattern url="https://launchpad.net/bugs/1366351";>
+        <re key="Package">^compiz-core 1:0.9.12\+14.10.2014</re>
+        <re key="Title">compiz crashed with SIGSEGV in g_closure_invoke()</re>
+        <re key="Signal">11</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/1433320";>
+        <re key="Package">^systemd</re>
+        <re key="ExecutablePath">/lib/systemd/systemd-</re>
+        <re key="Signal">6</re>
+        <re key="JournalErrors.txt">systemd-.*\.service: Watchdog timeout</re>
+    </pattern>
+
+<!-- nginx -->
+    <pattern url="https://launchpad.net/bugs/1512344";>
+        <re key="ProblemType">^Package</re>
+        <re key="Package">nginx-.*</re>
+        <re key="SystemctlStatusFull_Nginx.txt">failed.*98: Address already in use</re>
+    </pattern>
+
+<!-- mysql -->
+    <pattern url="https://launchpad.net/bugs/1571865";>
+        <!-- catch both mysql-server-5.7 and mysql-server 5.7.something -->
+        <re key="Package">^mysql-server[ -]5\.7</re>
+        <re key="Logs.var.log.mysql.error.log">\[ERROR\] unknown variable \'key_buffer\=</re>
+    </pattern>
+    <pattern url="https://launchpad.net/bugs/1571865";>
+        <!-- catch both mysql-server-5.7 and mysql-server 5.7.something -->
+        <re key="Package">^mysql-server[ -]5\.7</re>
+        <re key="Logs.var.log.mysql.error.log">\[ERROR\] unknown variable \'myisam-recover\=</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/1574168";>
+        <!-- catch both mysql-server-5.7 and mysql-server 5.7.something -->
+        <re key="Package">^mysql-server[ -]5\.7</re>
+        <re key="DpkgTerminalLog">mysql_upgrade: \[ERROR\] 1007: Can\'t create database \'performance_schema\'\; database exists</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/1574040";>
+        <!-- catch both mysql-server-5.7 and mysql-server 5.7.something -->
+        <re key="Package">^mysql-server[ -]5\.7</re>
+        <re key="DpkgTerminalLog">mysql_upgrade: \[ERROR\] 1049: Unknown database \'performance_schema\'</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/1571764";>
+        <!-- catch both mysql-server-5.7 and mysql-server 5.7.something -->
+        <re key="Package">^mysql-server[ -]5\.7</re>
+        <re key="Logs.var.log.mysql.error.log">\[ERROR\] Incorrect definition of table performance_schema\.</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/1490071";>
+        <re key="Package">^mysql-server-5\.(6|7)</re>
+        <re key="DpkgTerminalLog">Aborting downgrade from \(at least\) 10\.0 to 5\.(6|7)\.</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/1579708";>
+        <re key="Package">^mysql-server-5\.7</re>
+        <re key="modified.conffile..etc.mysql.conf.d.mysql.cnf">\[deleted\]</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/1579708";>
+        <re key="Package">^(mysql-server|mysql-server-5.7|mysql-common)</re>
+        <re key="modified.conffile..etc.mysql.mysql.cnf">\[deleted\]</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/1579708";>
+        <re key="Package">^(mysql-server|mysql-server-5.7|mysql-common)</re>
+        <re key="modified.conffile..etc.mysql.conf.d.mysql.cnf">\[deleted\]</re>
+    </pattern>
+
+    <pattern url="https://launchpad.net/bugs/1579708";>
+        <re key="Package">^(mysql-server|mysql-server-5.7|mysql-common)</re>
+        <re key="modified.conffile..etc.mysql.my.cnf.fallback">\[deleted\]</re>
+    </pattern>
+
+
+</patterns>

=== added file 'check-patterns-for-fixed-bugs'
--- check-patterns-for-fixed-bugs	1970-01-01 00:00:00 +0000
+++ check-patterns-for-fixed-bugs	2017-01-23 19:55:50 +0000
@@ -0,0 +1,106 @@
+#!/usr/bin/python
+#
+# Author: Brian Murray <brian@xxxxxxxxxxxxx>
+# Copyright (C) 2012 Canonical, Ltd.
+# License: GPLv3
+#
+# Parse the bugpatterns.xml file and check to see if the bug for which a
+# pattern was written has been fixed.  If it has then check the duplicates bugs
+# to see what releases and package versions were affected.  Then one can
+# determine whether or not to remove the pattern or include version check.
+
+import os
+import re
+import sys
+import xml.dom
+
+from subprocess import Popen, PIPE
+from xml.dom.minidom import parseString
+from launchpadlib.launchpad import Launchpad
+from launchpadlib.credentials import Credentials
+from launchpadlib.errors import HTTPError
+
+OPEN_STATUS = ['New', 'Incomplete', 'Confirmed', 'Triaged', 'In Progress',
+               'Fix Committed']
+
+
+def connect():
+    cachedir = os.path.expanduser('~/.launchpadlib/cache')
+    if not os.path.exists(cachedir):
+        os.makedirs(cachedir,0700)
+    root = 'production'
+    credfile = os.path.expanduser('~/.cache/apport/launchpad.credentials')
+    launchpad = Launchpad.login_with(sys.argv[0], credentials_file=credfile,
+            service_root=root, launchpadlib_dir=cachedir, version="devel")
+    return launchpad
+
+def open_task(bug_number):
+    bug = launchpad.bugs[bug_number]
+
+    for task in bug.bug_tasks:
+        if task.status in OPEN_STATUS and 'ubuntu' in task.web_link:
+            return True
+
+    return False
+
+def check_package_available(srcpkg, version):
+    ubuntu = launchpad.distributions['ubuntu']
+    primary = ubuntu.getArchive(name='primary')
+    for pub in primary.getPublishedSources(source_name=srcpkg,
+        exact_match=True, version=version):
+        if pub.status == "Published":
+            print("  %s %s is available in %s-%s" % (srcpkg,
+                version,
+                pub.distro_series.name.lower(),
+                pub.pocket.lower()))
+        else:
+            print("  %s version %s is not available" % (srcpkg, version))
+
+if __name__ == '__main__':
+    pattern_file = open('bugpatterns.xml')
+    data = pattern_file.read()
+    pattern_file.close()
+    dom = parseString(data)
+
+    bug_numbers = []
+
+    for pattern in dom.getElementsByTagName('pattern'):
+        if not pattern.attributes.has_key('url'):
+            continue
+
+        url = pattern.attributes['url'].nodeValue
+        if 'launchpad.net' not in url:
+            continue
+
+        for cn in pattern.childNodes:
+            # regular expression condition
+            if cn.nodeType == xml.dom.Node.ELEMENT_NODE and cn.nodeName == 're' and \
+                cn.attributes.has_key('key'):
+                key = cn.attributes['key'].nodeValue
+                if key == 'SourcePackage':
+                    value = cn.childNodes[0].nodeValue
+                    if not re.search('\d', value):
+                        bug_number = url.split('/')[-1]
+                        if bug_number not in bug_numbers:
+                            bug_numbers.append(bug_number)
+
+    # Connect to Launchpad
+    launchpad = connect()
+
+    for bug_number in bug_numbers:
+        if not open_task(bug_number):
+            print('LP: #%s has no open tasks' % bug_number)
+            dup_tags = Popen(['lp-bug-dupe-properties', '--bug', bug_number, '--rtags'], stdout=PIPE).communicate()[0]
+            dup_version = Popen(['lp-bug-dupe-properties', '--bug', bug_number, '-D', 'Package'], stdout=PIPE).communicate()[0]
+            print('  %s' % dup_tags.strip('\n'))
+            for item in dup_version.split('\n')[1:]:
+                things = item.split(': ')[0].strip()
+                if things == '' or things == 'None':
+                    continue
+                if len(things.split(' ')) == 1:
+                    continue
+                srcpkg  = things.split(' ')[0]
+                version = things.split(' ')[1]
+                if 'not' in version:
+                    continue
+                check_package_available(srcpkg, version)

=== added file 'consolidate-bugs'
--- consolidate-bugs	1970-01-01 00:00:00 +0000
+++ consolidate-bugs	2017-01-23 19:55:50 +0000
@@ -0,0 +1,62 @@
+#!/usr/bin/python
+#
+# Author: Brian Murray <brian@xxxxxxxxxxxxx>
+# Copyright (C) 2011 Canonical, Ltd.
+# License: GPLv3
+#
+# Parse the bugpatterns.xml file and create a list of packages for which to
+# search for bug reports for and consolidate duplicates.  This is necessary
+# for previous releases of Ubuntu which will not check for the generic
+# bugpatterns.xml file but rather for per package ones.  Additionally useful
+# for cleaning up duplicates already reported in the event that pattern
+# writers don't use search-bugs.
+#
+# It'd be better if the xml parsing routine determined if the ProblemType was
+# a "Crash" or "Package" and then used search-bugs with the appropriate tags
+# instead of just using apport-crash.
+
+import xml.dom
+
+from subprocess import *
+from xml.dom.minidom import parseString
+
+pattern_file = open('bugpatterns.xml')
+data = pattern_file.read()
+pattern_file.close()
+
+dom = parseString(data)
+
+packages = []
+
+for pattern in dom.getElementsByTagName('pattern'):
+    if not pattern.attributes.has_key('url'):
+        continue
+
+    for cn in pattern.childNodes:
+        if cn.nodeType == xml.dom.Node.ELEMENT_NODE and cn.nodeName == 're' \
+            and cn.attributes.has_key('key'):
+            key = cn.attributes['key'].nodeValue
+            if key == 'PackageVersion':
+                continue
+            if key != 'SourcePackage' and key != 'Package':
+                continue
+            if cn.hasChildNodes() and \
+                cn.childNodes[0].nodeType == xml.dom.Node.TEXT_NODE:
+                package = cn.childNodes[0].nodeValue.encode('UTF-8')
+                package = package.replace('^', '')
+                package = package.strip()
+                if package not in packages:
+                    packages.append(package)
+
+for package in packages:
+    print 'search-bugs --package %s --tags apport-crash --within 2 -C' % \
+        package
+    results = Popen(['./search-bugs','--package', '%s' % package, '--tags',
+        'apport-crash', '--within', '2', '-C'], stdout=PIPE).communicate()[0]
+    print results
+    # need to do apport-bug bugs too
+    print 'search-bugs --package %s --tags apport-bug --within 2 -C' % \
+        package
+    results = Popen(['./search-bugs','--package', '%s' % package, '--tags',
+        'apport-bug', '--within', '2', '-C'], stdout=PIPE).communicate()[0]
+    print results

=== added file 'convert.py'
--- convert.py	1970-01-01 00:00:00 +0000
+++ convert.py	2017-01-23 19:55:50 +0000
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+
+import glob
+import os
+from xml.dom.minidom import parseString
+from codecs import open
+
+outfile = 'bugpatterns.xml'
+out = open(outfile, encoding='utf-8', mode='wb')
+out.write('''<?xml version="1.0"?>
+
+<patterns>
+''')
+
+for path in sorted(glob.glob('*.xml')):
+    if path == outfile: continue
+
+    pkg = os.path.splitext(path)[0]
+    dom = parseString(open(path).read())
+
+    out.write('\n<!-- Converted from %s -->\n\n' % path)
+    for pattern in dom.getElementsByTagName('pattern'):
+        xml = pattern.toxml()
+        out.write('    ')
+        out.write(xml)
+        out.write('\n')
+
+out.write('</patterns>\n')

=== added file 'search-bugs'
--- search-bugs	1970-01-01 00:00:00 +0000
+++ search-bugs	2017-01-23 19:55:50 +0000
@@ -0,0 +1,209 @@
+#!/usr/bin/python
+# Author: Brian Murray <brian@xxxxxxxxxxxxx>
+# Copyright (C) 2009 Canonical, Ltd.
+# License: GPLv3
+#
+# Given a package name and some criteria query Launchpad for a bug list
+# then check each bug against the package's bug pattern
+#
+# missing the ability to search for no tags
+
+from apport.crashdb import get_crashdb
+from datetime import datetime
+from datetime import timedelta
+from launchpadlib.launchpad import Launchpad
+
+import optparse
+import os
+import re
+import sys
+
+
+def connect():
+    cachedir = os.path.expanduser('~/.launchpadlib/cache')
+    if not os.path.exists(cachedir):
+        os.makedirs(cachedir,0700)
+
+    root = 'production'
+    credfile = os.path.expanduser('~/.cache/apport/launchpad.credentials')
+    launchpad = Launchpad.login_with(sys.argv[0], credentials_file=credfile,
+            service_root=root, launchpadlib_dir=cachedir, version="devel")
+    return launchpad
+
+def mark_as_duplicate(master_number, bug):
+    comment="Thank you for taking the time to report this bug and helping to make Ubuntu better. This particular bug has already been reported and is a duplicate of bug %s, so it is being marked as such. Please look at the other bug report to see if there is any missing information that you can provide, or to see if there is a workaround for the bug.  Additionally, any further discussion regarding the bug should occur in the other report.  Please continue to report any other bugs you may find." % (master_number)
+    master = lp.bugs[master_number]
+
+    # copy release tags from duplicates to the master bug
+    release_tags = []
+    for series in ubuntu.series:
+        if series.status not in ['Active Development',
+            'Current Stable Release', 'Supported']:
+                continue
+        release_tags.append(series.name)
+    dupe_tags = set(bug.tags)
+    master_tags = master.tags
+    missing_tags = dupe_tags.difference(master_tags)
+    for tag in missing_tags:
+        if tag in release_tags:
+            master_tags.append(tag)
+    master.lp_save()
+
+    for task in bug.bug_tasks:
+        task.status = 'Confirmed'
+    bug.newMessage(content=comment)
+    bug.duplicate_of = master
+    bug.lp_save()
+    print('Modified LP: #%s' % (task.bug.id))
+
+
+def trim_dpkg_log(report):
+    '''Trim DpkgTerminalLog to the most recent installation session.
+       Taken from apport data/general-hook/ubuntu.py'''
+
+    if 'DpkgTerminalLog' not in report:
+        return
+    lines = []
+    trim_re = re.compile('^\(.* ... \d+ .*\)$')
+    for line in report['DpkgTerminalLog'].splitlines():
+        if line.startswith('Log started: ') or trim_re.match(line):
+            lines = []
+            continue
+        lines.append(line)
+    report['DpkgTerminalLog'] = '\n'.join(lines)
+
+
+parser = optparse.OptionParser(usage="usage: %prog -p PACKAGE -t TAG(s) "\
+    "[options]")
+parser.add_option("-p", "--package", help="Filter on PACKAGE", dest="package",
+    metavar="PACKAGE")
+parser.add_option("-s", "--status", help="Filter on STATUS", dest="status",
+    metavar="STATUS")
+parser.add_option("-t", "--tags", help="Filter on TAG,TAG", dest="tags",
+    metavar="TAGS")
+parser.add_option("-d", "--dupes", help="Include duplicates in search",
+    dest="dupes", action="store_true")
+parser.add_option("-q", "--quiet", help="Only print bug numbers",
+    dest="quiet", action="store_true")
+parser.add_option("-a", "--all", help="Check all package bugs", dest="all",
+    action="store_true")
+parser.add_option("-k", "--keywords", help="Search for KEYWORDS",
+    dest="keywords", metavar="KEYWORDS")
+parser.add_option("-w", "--within",
+    help="Search for bugs reported within the past X days",
+    dest="within", metavar="WITHIN")
+parser.add_option("-C", "--consolidate", dest="consolidate",
+    help="Mark bugs as duplicate of master bug in pattern",
+    action="store_true")
+
+(opt, args) = parser.parse_args()
+
+# Connect to Launchpad
+lp = connect()
+
+status_list = []
+tag_list = []
+ubuntu = lp.distributions['ubuntu']
+
+valid_status = ['New', 'Incomplete', 'Invalid', "Won't Fix", 'Confirmed',
+                'Triaged', 'In Progress', 'Fix Committed', 'Fix Released',
+                'Unknown']
+
+if not opt.status:
+    status_list = ['New', 'Incomplete', 'Confirmed', 'Triaged',
+                   'In Progress', 'Fix Committed' ]
+elif opt.status:
+    if opt.status not in valid_status:
+        print >> sys.stderr, ("Invalid status '%s'. Aborting") % (opt.status)
+        sys.exit(1)
+    else:
+        status_list.append(opt.status)
+
+if opt.package == 'ubuntu':
+    package = ubuntu
+if opt.package != 'ubuntu':
+    package = ubuntu.getSourcePackage(name='%s' % opt.package)
+    if package is None:
+        print('Package %s not found in Ubuntu' % opt.package)
+        sys.exit(1)
+elif not opt.package:
+    print >> sys.stderr, ("A package is required.")
+    sys.exit(1)
+
+if opt.dupes:
+    dupes = False
+elif not opt.dupes:
+    dupes = True
+
+if opt.tags:
+    for tag in opt.tags.split(','):
+        tag_list.append(tag)
+
+if opt.within:
+    period = int(opt.within)
+    today = datetime.utcnow()
+    search_start = today - timedelta(period)
+elif not opt.within:
+    search_start = None
+
+
+search_args = {'tags': tag_list,
+               'tags_combinator': 'All',
+               'order_by': '-datecreated',
+               'status': opt.status,
+               'search_text': opt.keywords,
+               'omit_duplicates': dupes,
+               'created_since': search_start}
+
+tasks = package.searchTasks(**search_args)
+db = get_crashdb(None)
+for task in tasks:
+    # they should be retraced first
+    if 'need-i386-retrace' in task.bug.tags or 'need-amd64-retrace' in task.bug.tags:
+        continue
+    task_number = task.bug.id
+    try:
+        report = db.download(task_number)
+    except AssertionError as error:
+        print("LP: #%s: %s" % (task_number, error))
+        continue
+    except Exception as error:
+        print("LP: #%s: %s" % (task_number, error))
+        continue
+    except AttributeError as error:
+        print("LP: #%s: %s" % (task_number, error))
+        continue
+
+    # trim the dpkg log file
+    trim_dpkg_log(report)
+
+    try:
+        match = report.search_bug_patterns('bugpatterns.xml')
+    except AssertionError as error:
+        print("%s" % error)
+        continue
+
+    if match and not opt.quiet:
+        # this should handle wiki urls somehow
+        master_number = match.split('/')[-1]
+        master = lp.bugs[master_number]
+        if str(master_number) == str(task_number) and not opt.all:
+            print "Reached master bug LP: #%s" % master_number
+            break
+        if int(task_number) == int(master_number):
+            continue
+        print('LP: #%s (%s, %s): Matched bug pattern: %s with %s dupes' % (task_number,
+            task.status, task.importance, match, master.number_of_duplicates))
+        if opt.consolidate:
+            bug = task.bug
+            if 'bot-stop-nagging' in bug.tags:
+                print('LP: #%s is tagged bot-stop-nagging' % (task_number))
+                break
+            if bug.duplicate_of:
+                print('LP: #%s is already a duplicate of another bug' % (task_number))
+                break
+            elif int(bug.id) == int(master_number):
+                continue
+            mark_as_duplicate(master_number, bug)
+    elif match and opt.quiet:
+        print('%s' % (task_number))

=== added file 'test-local'
--- test-local	1970-01-01 00:00:00 +0000
+++ test-local	2017-01-23 19:55:50 +0000
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+
+import sys
+
+import apport
+from apport.crashdb import get_crashdb
+from launchpadlib.launchpad import Launchpad
+
+def match_bug(bugnumber):
+    db = get_crashdb(None)
+    try:
+        report = db.download(bugnumber)
+    except IOError, e:
+        if 'CRC check failed' in e.message:
+            print('Skipping %s because it has a bad attachment' % bugnumber)
+            return
+    match = report.search_bug_patterns('bugpatterns.xml')
+
+    if match:
+        print 'LP: #%s: Matched bug pattern: %s' % (bugnumber, match )
+    else:
+        print 'LP: #%s: No match' % bugnumber
+
+lp = Launchpad.login_with('apport', 'production')
+
+if len(sys.argv) != 2:
+    print >> sys.stderr, 'Usage: %s <.crash file or bug number>' % sys.argv[0]
+    sys.exit(1)
+
+if not sys.argv[1].isdigit():
+    report = apport.Report()
+    try:
+        f = open(sys.argv[1])
+    except IOError, e:
+        print >> sys.stderr, 'Cannot open report file: %s' % str(e)
+        sys.exit(1)
+    report.load(f)
+    f.close()
+    match = report.search_bug_patterns('bugpatterns.xml')
+
+    if match:
+        print 'LP: #%s: Matched bug pattern: %s' % ( sys.argv[1], match )
+        sys.exit(0)
+    else:
+        print 'LP: #%s: No match' % sys.argv[1]
+        sys.exit(1)
+else:
+    match_bug(sys.argv[1])
+
+    bug = lp.bugs[sys.argv[1]]
+    # if bug is a duplicate - call this for parent
+    if bug.duplicate_of:
+        dupe = bug.duplicate_of.id
+        print 'LP: #%s is a duplicate of ....' % bug.id
+        match_bug(dupe)
+    if bug.duplicates:
+        print "Checking duplicate bugs..."
+        for duplicate in bug.duplicates:
+            # Skip if not an apport bug
+            if 'apport-crash' in duplicate.tags or \
+                'apport-package' in duplicate.tags or \
+                'apport-kerneloops' in duplicate.tags or \
+                'apport-bug' in duplicate.tags:
+                match_bug(duplicate.id)
+
+    sys.exit(0)

=== added file 'update-tags'
--- update-tags	1970-01-01 00:00:00 +0000
+++ update-tags	2017-01-23 19:55:50 +0000
@@ -0,0 +1,129 @@
+#!/usr/bin/python
+# Author: Matt Zimmerman <mdz@xxxxxxxxxx>
+# Copyright (C) 2011 Canonical, Ltd.
+# License: GPLv3
+#
+# Update the bugpattern-needed / bugpattern-written tags for bugs for which
+# patterns exist
+
+from launchpadlib.launchpad import Launchpad
+
+import xml.dom.minidom
+
+import argparse
+import sys
+
+BUGPATTERNS = 'bugpatterns.xml'
+
+class BugDatabase:
+    def __init__(self):
+        self.launchpad = None
+        self.ubuntu = None
+
+    def connect(self, authenticated=False):
+        progname = 'ubuntu-bugpatterns/update-tags'
+        root = 'staging'
+
+        if authenticated:
+            self.launchpad = Launchpad.login_with(progname, root)
+        else:
+            self.launchpad = Launchpad.login_anonymously(progname, root)
+
+        self.ubuntu = self.launchpad.distributions['ubuntu']
+
+# Launchpad makes this harder than this unfortunately :-(
+#    def bugs_with_tag(self, tag):
+#        bugs = set()
+#        for task in self.ubuntu.searchTasks(tags=tag):
+#            bugs.add(task.bug.id)
+#        return bugs
+
+    def bug_has_tag(self, bug, tag):
+        return tag in self.launchpad.bugs[bug].tags
+
+    def bug_add_tag(self, bug, tag):
+        bug = self.launchpad.bugs[bug]
+        new_tags = bug.tags[:]
+        new_tags.append(tag)
+        bug.tags = new_tags
+        bug.lp_save()
+
+    def bug_remove_tag(self, bug, tag):
+        bug = self.launchpad.bugs[bug]
+        new_tags = bug.tags[:]
+        new_tags.remove(tag)
+        bug.tags = new_tags
+        bug.lp_save()
+
+def urls_from_dom(dom):
+    urls = set()
+
+    for pattern in dom.getElementsByTagName('pattern'):
+        if not pattern.attributes.has_key('url'): continue
+
+        url = pattern.attributes['url'].nodeValue
+
+        urls.add(url)
+
+    return urls
+        
+def bug_numbers_from_urls(urls):
+    bug_numbers = set()
+    for url in urls:
+        if not 'launchpad.net/bugs/' in url: continue
+
+        bug_number = int(url.split('/')[-1])
+        bug_numbers.add(bug_number)
+    return bug_numbers
+
+def bug_to_url(bug):
+    return 'http://launchpad.net/bugs/%d' % bug
+
+def bugs_to_string(bugs):
+    '\n'.join(map(bug_to_url, bugs))
+
+def main():
+    parser = argparse.ArgumentParser(description='Fix up bugpattern-{needed,written} tags')
+    parser.add_argument("--file", help="File to read bugpatterns from", dest="file", action="store")
+    parser.add_argument("--dry-run", help="Dry run (make no changes)", dest="dry_run", action="store_true")
+    parser.add_argument("-r", help="Bazaar revisionspec to compare against when checking recent patterns (ignored for --all-patterns)", dest="revision", default='last:2')
+
+    args = parser.parse_args()
+
+    dom = xml.dom.minidom.parseString(open(BUGPATTERNS).read())
+    urls = urls_from_dom(dom)
+
+    bugs_with_patterns = bug_numbers_from_urls(urls)
+    if not bugs_with_patterns:
+        print "No patterns found"
+        return
+
+    print "Found bug patterns for %d bugs" % len(bugs_with_patterns)
+
+    db = BugDatabase()
+    db.connect(authenticated=not args.dry_run)
+
+    changes = set()
+    for bug in bugs_with_patterns:
+        if db.bug_has_tag(bug, 'bugpattern-needed'):
+            # remove the bugpattern-needed tag
+            changes.add((bug, 'bugpattern-needed', False))
+        if not db.bug_has_tag(bug, 'bugpattern-written'):
+            # add the bugpattern-written tag
+            changes.add((bug, 'bugpattern-written', True))
+
+    if changes:
+        for bug, tag, state in changes:
+            print "%s - %s %s" % (bug_to_url(bug), state and 'add' or 'remove', tag)
+            if args.dry_run: continue
+
+            if state:
+                db.bug_add_tag(bug, tag)
+            else:
+                db.bug_remove_tag(bug, tag)
+    else:
+        print "All good!"
+
+if __name__ == '__main__':
+    main()
+    sys.exit(0)


Follow ups