Merge lp:~gothicx/apport/ignore_obsolete_packages into lp:~apport-hackers/apport/trunk

Proposed by Marco Rodrigues
Status: Rejected
Rejected by: Martin Pitt
Proposed branch: lp:~gothicx/apport/ignore_obsolete_packages
Merge into: lp:~apport-hackers/apport/trunk
Diff against target: None lines
To merge this branch: bzr merge lp:~gothicx/apport/ignore_obsolete_packages
Reviewer Review Type Date Requested Status
Apport upstream developers Pending
Review via email: mp+11671@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

1597. By Marco Rodrigues

APPORT_IGNORE_OBSOLETE_PACKAGES env variable not working 100%

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'NEWS'
2--- NEWS 2009-09-12 15:29:19 +0000
3+++ NEWS 2009-09-13 21:23:17 +0000
4@@ -6,7 +6,6 @@
5 Bug fixes:
6 - hookutils.py, attach_hardware(): Do not attach empty Pccardctl*.
7 - apport/report.py, add_gdb_info(): Do not throw away stderr from gdb.
8- - data/general-hooks/parse_segv.py: Handle arithmetic wrapping correctly.
9
10 1.9 (2009-09-08)
11 ----------------
12
13=== modified file 'apport/crashdb_impl/launchpad.py'
14--- apport/crashdb_impl/launchpad.py 2009-09-04 18:48:00 +0000
15+++ apport/crashdb_impl/launchpad.py 2009-09-12 12:02:56 +0000
16@@ -171,7 +171,11 @@
17 hdr['Subscribers'] = 'apport'
18 if report.has_key('Tags'):
19 hdr['Tags'] += ' ' + report['Tags']
20-
21+
22+ # Add Distro ID and Codename as Tags to better LP filtering
23+ # FIXME: ugly Ubuntu specific hack until LP has a real crash db
24+ hdr['Tags'] += ' ' + report['DistroRelease'].split()[0].lower + ' ' + report['DistroRelease'].split()[2]
25+
26 # write MIME/Multipart version into temporary file
27 mime = tempfile.TemporaryFile()
28 report.write_mime(mime, extra_headers=hdr)
29
30=== modified file 'apport/report.py'
31--- apport/report.py 2009-09-10 03:10:16 +0000
32+++ apport/report.py 2009-09-12 12:02:56 +0000
33@@ -217,13 +217,13 @@
34 '''Add operating system information.
35
36 This adds:
37- - DistroRelease: lsb_release -sir output
38+ - DistroRelease: lsb_release -sirc output
39 - Architecture: system architecture in distro specific notation
40 - Uname: uname -srm output
41 - NonfreeKernelModules: loaded kernel modules which are not free (if
42 there are none, this field will not be present)
43 '''
44- p = subprocess.Popen(['lsb_release', '-sir'], stdout=subprocess.PIPE,
45+ p = subprocess.Popen(['lsb_release', '-sirc'], stdout=subprocess.PIPE,
46 stderr=subprocess.PIPE, close_fds=True)
47 self['DistroRelease'] = p.communicate()[0].strip().replace('\n', ' ')
48
49
50=== modified file 'apport/ui.py'
51--- apport/ui.py 2009-09-09 14:57:01 +0000
52+++ apport/ui.py 2009-09-13 21:23:17 +0000
53@@ -250,7 +250,8 @@
54 return
55
56 # check unreportable flag
57- if self.report.has_key('UnreportableReason'):
58+ if self.report.has_key('UnreportableReason') and \
59+ 'APPORT_IGNORE_OBSOLETE_PACKAGES' not in os.environ:
60 self.ui_info_message(_('Problem in %s') % self.report['Package'].split()[0],
61 _('The problem cannot be reported:\n\n%s') %
62 self.report['UnreportableReason'])
63
64=== modified file 'backends/packaging-apt-dpkg.py'
65--- backends/packaging-apt-dpkg.py 2009-09-08 12:16:54 +0000
66+++ backends/packaging-apt-dpkg.py 2009-09-12 22:55:19 +0000
67@@ -189,9 +189,9 @@
68
69 for line in open(sumfile):
70 try:
71- # ignore lines with NUL bytes (happens, LP#96050)
72+ # ignore lines with NULL bytes (happens, LP#96050)
73 if '\0' in line:
74- print >> sys.stderr, 'WARNING:', sumfile, 'contains NUL character, ignoring line'
75+ print >> sys.stderr, 'WARNING:', sumfile, 'contains NULL character, ignoring line'
76 continue
77 words = line.split()
78 if not words:
79@@ -458,7 +458,7 @@
80 candidate_version = c[pkg].candidateVersion
81 else:
82 candidate_version = c[pkg].candidate.version
83- if ver and candidate_version != ver:
84+ if ver and candidate_version != ver and ver is not 'None':
85 if not pkg.endswith('-dbgsym'):
86 outdated += '%s: installed version %s, latest version: %s\n' % (
87 pkg, ver, candidate_version)
88
89=== modified file 'data/general-hooks/parse_segv.py'
90--- data/general-hooks/parse_segv.py 2009-09-13 01:14:15 +0000
91+++ data/general-hooks/parse_segv.py 2009-09-13 21:23:17 +0000
92@@ -177,7 +177,6 @@
93 val = int(text)
94 return val
95
96- # (%ebx, %ecx, 4) style
97 value = 0
98 if len(parts)>1:
99 parens = parts[1][0:-1]
100@@ -194,13 +193,7 @@
101 scale = _reg_val(self, reg_list[2], scale)
102 value = base + index * scale
103
104- value = segment + value + add
105- if 'esp' in self.regs:
106- # 32bit
107- return value % 0x100000000
108- else:
109- # 64bit
110- return value % 0x10000000000000000
111+ return segment + value + add
112
113 def report(self):
114 understood = False
115@@ -250,7 +243,7 @@
116
117 def add_info(report):
118 # Only interested in segmentation faults...
119- if report.get('Signal','0') != '11':
120+ if report.get('Signal') != '11':
121 return
122
123 needed = ['Signal', 'Architecture', 'Disassembly', 'ProcMaps', 'Registers']
124@@ -274,12 +267,9 @@
125
126
127 if __name__ == '__main__':
128- if len(sys.argv)==2 and sys.argv[1] in ['-h','--help']:
129- print 'To run self-test, run without any arguments (or with -v)'
130- print 'To do stand-alone crash parsing:'
131- print ' Usage: %s Registers.txt Disassembly.txt ProcMaps.txt' % (sys.argv[0])
132- sys.exit(0)
133- elif len(sys.argv)==4:
134+ if len(sys.argv)==4:
135+ # 'Usage: %s Registers.txt Disassembly.txt Maps.txt' % (sys.argv[0])
136+
137 segv = ParseSegv(file(sys.argv[1]).read(), \
138 file(sys.argv[2]).read(), \
139 file(sys.argv[3]).read())
140@@ -296,7 +286,7 @@
141 import unittest, tempfile, sys
142
143 # Default global registers, maps, and disassembly for testing
144- regs = '''eax 0xffffffff -1
145+ regs = '''eax 0xbfc6afc4 -1077497916
146 ecx 0xbfc6af40 -1077498048
147 edx 0x1 1
148 ebx 0x26eff4 2551796
149@@ -313,40 +303,6 @@
150 fs 0x4 4
151 gs 0x33 51
152 '''
153- regs64 = '''rax 0xffffffffffffffff -1
154-rbx 0x26eff4 2551796
155-rcx 0xffffffffffffffff -1
156-rdx 0xffffffffff600180 -10485376
157-rsi 0x0 0
158-rdi 0x7fffffffe3b0 140737488348080
159-rbp 0x0 0x0
160-rsp 0x7fffffffe388 0x7fffffffe388
161-r8 0x0 0
162-r9 0x0 0
163-r10 0x7fffffffe140 140737488347456
164-r11 0x246 582
165-r12 0x7fffffffe400 140737488348160
166-r13 0x7fffffffe468 140737488348264
167-r14 0x1 1
168-r15 0x7fffffffe460 140737488348256
169-rip 0x7ffff790be10 0x7ffff790be10 <nanosleep+16>
170-eflags 0x246 [ PF ZF IF ]
171-cs 0x33 51
172-ss 0x2b 43
173-ds 0x0 0
174-es 0x0 0
175-fs 0x0 0
176-gs 0x0 0
177-fctrl 0x37f 895
178-fstat 0x0 0
179-ftag 0xffff 65535
180-fiseg 0x0 0
181-fioff 0x40303a 4206650
182-foseg 0x0 0
183-fooff 0x0 0
184-fop 0x5d8 1496
185-mxcsr 0x1f80 [ IM DM ZM OM UM PM ]
186-'''
187 maps = '''00110000-0026c000 r-xp 00000000 08:06 375131 /lib/tls/i686/cmov/libc-2.9.so
188 0026c000-0026d000 ---p 0015c000 08:06 375131 /lib/tls/i686/cmov/libc-2.9.so
189 0026d000-0026f000 r--p 0015c000 08:06 375131 /lib/tls/i686/cmov/libc-2.9.so
190@@ -593,15 +549,6 @@
191 self.assertEqual(segv.calculate_arg('0x3404403'), 0x3404403, '0x3404403')
192 self.assertEqual(segv.calculate_arg('*0x40(%edi)'), 0x80834c0, segv.regs['edi'])
193 self.assertEqual(segv.calculate_arg('(%edx,%ebx,1)'), 0x26eff5, segv.regs['ebx'])
194- self.assertEqual(segv.calculate_arg('(%eax,%ebx,1)'), 0x26eff3, segv.regs['ebx'])
195-
196- # Again, but 64bit
197- disasm = '''0x08083540 <main+0>: mov $1,%rcx'''
198- segv = ParseSegv(regs64, disasm, maps)
199- understood, reason, details = segv.report()
200- self.assertFalse(understood, details)
201-
202- self.assertEqual(segv.calculate_arg('(%rax,%rbx,1)'), 0x26eff3, segv.regs['rbx'])
203
204 def test_segv_pc_missing(self):
205 '''Handles PC in missing VMA'''

Subscribers

People subscribed via source and target branches