Merge lp://staging/~mvo/apport/kernel-crashdump into lp://staging/~apport-hackers/apport/trunk
- kernel-crashdump
- Merge into trunk
Proposed by
Michael Vogt
Status: | Merged |
---|---|
Merge reported by: | Martin Pitt |
Merged at revision: | not available |
Proposed branch: | lp://staging/~mvo/apport/kernel-crashdump |
Merge into: | lp://staging/~apport-hackers/apport/trunk |
Diff against target: | None lines |
To merge this branch: | bzr merge lp://staging/~mvo/apport/kernel-crashdump |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Apport upstream developers | Pending | ||
Review via email: mp+8448@code.staging.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Michael Vogt (mvo) wrote : | # |
- 1462. By Michael Vogt
-
add crash_signature and simple test for it
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added directory '.bzr-builddeb' |
2 | === added file '.bzr-builddeb/default.conf' |
3 | --- .bzr-builddeb/default.conf 1970-01-01 00:00:00 +0000 |
4 | +++ .bzr-builddeb/default.conf 2009-04-06 23:58:27 +0000 |
5 | @@ -0,0 +1,2 @@ |
6 | +[BUILDDEB] |
7 | +merge = True |
8 | |
9 | === modified file 'TODO' |
10 | --- TODO 2009-04-11 18:37:37 +0000 |
11 | +++ TODO 2009-05-07 06:19:04 +0000 |
12 | @@ -13,3 +13,12 @@ |
13 | |
14 | hooks: |
15 | - add hooks which run during program crash, to collect more runtime data |
16 | + |
17 | +retracers: |
18 | + - cache Contents.gz |
19 | + |
20 | +hookutils: |
21 | +- run hooks for related packages in attach_related_packages |
22 | + |
23 | +apt-dpkg backend: |
24 | +- use python-apt's Version.get_source() instead of apt-get source |
25 | |
26 | === modified file 'apport/hookutils.py' |
27 | --- apport/hookutils.py 2009-06-12 10:19:31 +0000 |
28 | +++ apport/hookutils.py 2009-06-12 10:47:53 +0000 |
29 | @@ -63,6 +63,43 @@ |
30 | |
31 | report[key] = read_file(path) |
32 | |
33 | +def attach_conffiles(report, package, conffiles=None): |
34 | + '''Attach information about any modified or deleted conffiles''' |
35 | + |
36 | + try: |
37 | + dpkg = subprocess.Popen(['dpkg-query','-W','--showformat=${Conffiles}', |
38 | + package], stdout=subprocess.PIPE, close_fds=True) |
39 | + except OSError, e: |
40 | + return 'Error: ' + str(e) |
41 | + |
42 | + out = dpkg.communicate()[0] |
43 | + if dpkg.returncode != 0: |
44 | + return |
45 | + |
46 | + for line in out.splitlines(): |
47 | + if not line: |
48 | + continue |
49 | + path, default_md5sum = line.strip().split() |
50 | + |
51 | + if conffiles and path not in conffiles: continue |
52 | + |
53 | + key = 'modified.conffile.' + path_to_key(path) |
54 | + |
55 | + if os.path.exists(path): |
56 | + contents = open(path).read() |
57 | + m = hashlib.md5() |
58 | + m.update(contents) |
59 | + calculated_md5sum = m.hexdigest() |
60 | + |
61 | + if calculated_md5sum != default_md5sum: |
62 | + report[key] = contents |
63 | + statinfo = os.stat(path) |
64 | + mtime = datetime.datetime.fromtimestamp(statinfo.st_mtime) |
65 | + mtime_key = 'mtime.conffile.' + path_to_key(path) |
66 | + report[mtime_key] = mtime.isoformat() |
67 | + else: |
68 | + report[key] = '[deleted]' |
69 | + |
70 | def attach_dmesg(report): |
71 | '''Attach information from the kernel ring buffer (dmesg).''' |
72 | |
73 | |
74 | === added symlink 'apport/packaging_impl.py' |
75 | === target is '../backends/packaging-apt-dpkg.py' |
76 | === modified file 'apport/report.py' |
77 | --- apport/report.py 2009-06-23 09:53:14 +0000 |
78 | +++ apport/report.py 2009-07-09 11:04:18 +0000 |
79 | @@ -170,7 +170,12 @@ |
80 | appends a list of all modified files''' |
81 | |
82 | if not package: |
83 | - package = fileutils.find_file_package(self['ExecutablePath']) |
84 | + # the kernel does not have a executable path but a package |
85 | + if (not "ExecutablePath" in self and |
86 | + self["ProblemType"] == "KernelCrash"): |
87 | + package = self["Package"] |
88 | + else: |
89 | + package = fileutils.find_file_package(self['ExecutablePath']) |
90 | if not package: |
91 | return |
92 | |
93 | @@ -393,6 +398,43 @@ |
94 | self['ProcEnviron'] += '\n' |
95 | self['ProcEnviron'] += 'PATH=(custom, no user)' |
96 | |
97 | + def add_kernel_crash_info(self, debugdir=None): |
98 | + '''Add information from crash |
99 | + |
100 | + This needs a VmCore in the Report |
101 | + ''' |
102 | + if not self.has_key('VmCore'): |
103 | + return |
104 | + unlink_core = False |
105 | + ret = False |
106 | + try: |
107 | + if hasattr(self['VmCore'], 'find'): |
108 | + (fd, core) = tempfile.mkstemp() |
109 | + os.write(fd, self['VmCore']) |
110 | + os.close(fd) |
111 | + unlink_core = True |
112 | + kver = self['Uname'].split()[1] |
113 | + command = ["crash", |
114 | + "/usr/lib/debug/boot/vmlinux-%s" % kver, |
115 | + core, |
116 | + ] |
117 | + p = subprocess.Popen(command, |
118 | + stdin=subprocess.PIPE, |
119 | + stdout=subprocess.PIPE, |
120 | + stderr=subprocess.STDOUT) |
121 | + p.stdin.write("bt -a -f\n") |
122 | + p.stdin.write("ps\n") |
123 | + p.stdin.write("runq\n") |
124 | + p.stdin.write("quit\n") |
125 | + # FIXME: split it up nicely etc |
126 | + out = p.stdout.read() |
127 | + ret = (p.wait() == 0) |
128 | + self["Stacktrace"] = out |
129 | + finally: |
130 | + if unlink_core: |
131 | + os.unlink(core) |
132 | + return ret |
133 | + |
134 | def add_gdb_info(self, debugdir=None): |
135 | '''Add information from gdb. |
136 | |
137 | |
138 | === modified file 'backends/packaging-apt-dpkg.py' |
139 | --- backends/packaging-apt-dpkg.py 2009-06-30 20:35:38 +0000 |
140 | +++ backends/packaging-apt-dpkg.py 2009-07-09 11:04:18 +0000 |
141 | @@ -323,6 +323,44 @@ |
142 | # TODO: Ubuntu specific |
143 | return 'linux-image-' + os.uname()[2] |
144 | |
145 | + def _install_debug_kernel(self, report): |
146 | + '''Install kernel debug package |
147 | + |
148 | + Ideally this would be just another package but the kernel is |
149 | + special in various ways currently so we can not use the apt |
150 | + method. |
151 | + ''' |
152 | + import urllib, apt_pkg |
153 | + installed = [] |
154 | + outdated = [] |
155 | + kver = report['Uname'].split()[1] |
156 | + arch = report['Architecture'] |
157 | + ver = report['Package'].split()[1] |
158 | + debug_pkgname = 'linux-image-debug-%s' % kver |
159 | + c = self._cache() |
160 | + if c.has_key(debug_pkgname) and c[debug_pkgname].isInstalled: |
161 | + #print "kernel ddeb already installed" |
162 | + return (installed, outdated) |
163 | + target_dir = apt_pkg.Config.FindDir("Dir::Cache::archives")+"/partial" |
164 | + deb = "%s_%s_%s.ddeb" % (debug_pkgname, ver, arch) |
165 | + # FIXME: this package is currently not in Packages.gz |
166 | + url = "http://ddebs.ubuntu.com/pool/main/l/linux/%s" % deb |
167 | + out = open(os.path.join(target_dir,deb), "w") |
168 | + # urlretrieve does not return 404 in the headers so we use urlopen |
169 | + u = urllib.urlopen(url) |
170 | + if u.getcode() > 400: |
171 | + raise IOError, "urllib returned %s for %s" % (u.getcode(), url) |
172 | + while True: |
173 | + block = u.read(8*1024) |
174 | + if not block: |
175 | + break |
176 | + out.write(block) |
177 | + out.flush() |
178 | + ret = subprocess.call(["dpkg","-i",os.path.join(target_dir,deb)]) |
179 | + if ret == 0: |
180 | + installed.append(deb.split("_")[0]) |
181 | + return (installed, outdated) |
182 | + |
183 | def install_retracing_packages(self, report, verbosity=0, |
184 | unpack_only=False, no_pkg=False, extra_packages=[]): |
185 | '''Install packages which are required to retrace a report. |
186 | @@ -339,6 +377,10 @@ |
187 | |
188 | Return a tuple (list of installed packages, string with outdated packages). |
189 | ''' |
190 | + if (report['ProblemType'] == 'KernelCrash' and |
191 | + report['Package'].startswith("linux-image")): |
192 | + return self._install_debug_kernel(report) |
193 | + |
194 | c = self._cache() |
195 | |
196 | try: |
197 | |
198 | === removed file 'backends/packaging_rpm.py' |
199 | --- backends/packaging_rpm.py 2009-04-11 16:40:06 +0000 |
200 | +++ backends/packaging_rpm.py 1970-01-01 00:00:00 +0000 |
201 | @@ -1,309 +0,0 @@ |
202 | -'''A partial apport.PackageInfo class implementation for RPM, as found in |
203 | -Fedora, RHEL, openSUSE, SUSE Linux, and many other distributions. |
204 | - |
205 | -Copyright (C) 2007 Red Hat Inc. |
206 | -Copyright (C) 2008 Nikolay Derkach |
207 | -Author: Will Woods <wwoods@redhat.com>, Nikolay Derkach <nderkach@gmail.com> |
208 | - |
209 | -This program is free software; you can redistribute it and/or modify it |
210 | -under the terms of the GNU General Public License as published by the |
211 | -Free Software Foundation; either version 2 of the License, or (at your |
212 | -option) any later version. See http://www.gnu.org/copyleft/gpl.html for |
213 | -the full text of the license. |
214 | -''' |
215 | - |
216 | -# N.B. There's some distro-specific bits in here (e.g. is_distro_package()). |
217 | -# So this is actually an abstract base class (or a template, if you like) for |
218 | -# RPM-based distributions. |
219 | -# A proper implementation needs to (at least) set official_keylist to a list |
220 | -# of GPG keyids used by official packages. You might have to extend |
221 | -# is_distro_package() as well, if you don't sign all your official packages |
222 | -# (cough cough Fedora rawhide cough) |
223 | - |
224 | -# It'd be convenient to use rpmUtils from yum, but I'm trying to keep this |
225 | -# class distro-agnostic. |
226 | -import rpm, hashlib, os, stat, subprocess |
227 | - |
228 | -class RPMPackageInfo: |
229 | - '''Partial apport.PackageInfo class implementation for RPM, as |
230 | - found in Fedora, RHEL, CentOS, etc.''' |
231 | - |
232 | - # Empty keylist. Should contain a list of key ids (8 lowercase hex digits). |
233 | - # e.g. official_keylist = ('30c9ecf8','4f2a6fd2','897da07a','1ac70ce6') |
234 | - official_keylist = () |
235 | - |
236 | - def __init__(self): |
237 | - self.ts = rpm.TransactionSet() # connect to the rpmdb |
238 | - self._mirror = None |
239 | - |
240 | - def get_version(self, package): |
241 | - '''Return the installed version of a package.''' |
242 | - hdr = self._get_header(package) |
243 | - if hdr == None: |
244 | - raise ValueError |
245 | - # Note - "version" here seems to refer to the full EVR, so.. |
246 | - if not hdr['e']: |
247 | - return hdr['v'] + '-' + hdr['r'] |
248 | - if not hdr['v'] or not hdr['r']: |
249 | - return None |
250 | - else: |
251 | - return hdr['e'] + ':' + hdr['v'] + '-' + hdr['r'] |
252 | - |
253 | - def get_available_version(self, package): |
254 | - '''Return the latest available version of a package.''' |
255 | - # used in report.py, which is used by the frontends |
256 | - raise NotImplementedError, 'method must be implemented by distro-specific RPMPackageInfo subclass' |
257 | - |
258 | - def get_dependencies(self, package): |
259 | - '''Return a list of packages a package depends on.''' |
260 | - hdr = self._get_header(package) |
261 | - # parse this package's Requires |
262 | - reqs=[] |
263 | - for r in hdr['requires']: |
264 | - if r.startswith('rpmlib') or r.startswith('uname('): |
265 | - continue # we've got rpmlib, thanks |
266 | - if r[0] == '/': # file requires |
267 | - req_heads = self._get_headers_by_tag('basenames',r) |
268 | - else: # other requires |
269 | - req_heads = self._get_headers_by_tag('provides',r) |
270 | - for rh in req_heads: |
271 | - rh_envra = self._make_envra_from_header(rh) |
272 | - if rh_envra not in reqs: |
273 | - reqs.append(rh_envra) |
274 | - return reqs |
275 | - |
276 | - def get_source(self, package): |
277 | - '''Return the source package name for a package.''' |
278 | - hdr = self._get_header(package) |
279 | - return hdr['sourcerpm'] |
280 | - |
281 | - def get_architecture(self, package): |
282 | - '''Return the architecture of a package. |
283 | - |
284 | - This might differ on multiarch architectures (e. g. an i386 Firefox |
285 | - package on a x86_64 system)''' |
286 | - # Yeah, this is kind of redundant, as package is ENVRA, but I want |
287 | - # to do this the right way (in case we change what 'package' is) |
288 | - hdr = self._get_header(package) |
289 | - return hdr['arch'] |
290 | - |
291 | - def get_files(self, package): |
292 | - '''Return list of files shipped by a package.''' |
293 | - hdr = self._get_header(package) |
294 | - files = [] |
295 | - for (f, mode) in zip(hdr['filenames'],hdr['filemodes']): |
296 | - if not stat.S_ISDIR(mode): |
297 | - files.append(f) |
298 | - return files |
299 | - |
300 | - def get_modified_files(self, package): |
301 | - '''Return list of all modified files of a package.''' |
302 | - hdr = self._get_header(package) |
303 | - |
304 | - files = hdr['filenames'] |
305 | - mtimes = hdr['filemtimes'] |
306 | - md5s = hdr['filemd5s'] |
307 | - |
308 | - modified = [] |
309 | - for i in xrange(len(files)): |
310 | - # Skip files we're not tracking md5s for |
311 | - if not md5s[i]: continue |
312 | - # Skip files we can't read |
313 | - if not os.access(files[i],os.R_OK): continue |
314 | - # Skip things that aren't real files |
315 | - s = os.stat(files[i]) |
316 | - if not stat.S_ISREG(s.st_mode): continue |
317 | - # Skip things that haven't been modified |
318 | - if mtimes[i] == s.st_mtime: continue |
319 | - # Oh boy, an actual possibly-modified file. Check the md5sum! |
320 | - if not self._checkmd5(files[i],md5s[i]): |
321 | - modified.append(files[i]) |
322 | - |
323 | - return modified |
324 | - |
325 | - def get_file_package(self, file): |
326 | - '''Return the package a file belongs to, or None if the file is not |
327 | - shipped by any package. |
328 | - |
329 | - Under normal use, the 'file' argument will always be the executable |
330 | - that crashed. |
331 | - ''' |
332 | - # The policy for handling files which belong to multiple packages depends on the distro |
333 | - raise NotImplementedError, 'method must be implemented by distro-specific RPMPackageInfo subclass' |
334 | - |
335 | - def get_system_architecture(self): |
336 | - '''Return the architecture of the system, in the notation used by the |
337 | - particular distribution.''' |
338 | - rpmarch = subprocess.Popen(['rpm', '--eval', '%_target_cpu'], |
339 | - stdout=subprocess.PIPE) |
340 | - arch = rpmarch.communicate()[0].strip() |
341 | - return arch |
342 | - |
343 | - def is_distro_package(self, package): |
344 | - '''Check if a package is a genuine distro package (True) or comes from |
345 | - a third-party source.''' |
346 | - # This is a list of official keys, set by the concrete subclass |
347 | - if not self.official_keylist: |
348 | - raise Exception, 'Subclass the RPM implementation for your distro!' |
349 | - hdr = self._get_header(package) |
350 | - if not hdr: |
351 | - return False |
352 | - # Check the GPG sig and key ID to see if this package was signed |
353 | - # with an official key. |
354 | - if hdr['siggpg']: |
355 | - # Package is signed |
356 | - keyid = hdr['siggpg'][13:17].encode('hex') |
357 | - if keyid in self.official_keylist: |
358 | - return True |
359 | - return False |
360 | - |
361 | - def set_mirror(self, url): |
362 | - '''Explicitly set a distribution mirror URL for operations that need to |
363 | - fetch distribution files/packages from the network. |
364 | - |
365 | - By default, the mirror will be read from the system configuration |
366 | - files.''' |
367 | - # FIXME C&P from apt-dpkg implementation, might move to subclass |
368 | - self._mirror = url |
369 | - |
370 | - def get_source_tree(self, srcpackage, dir, version=None): |
371 | - '''Download given source package and unpack it into dir (which should |
372 | - be empty). |
373 | - |
374 | - This also has to care about applying patches etc., so that dir will |
375 | - eventually contain the actually compiled source. |
376 | - |
377 | - If version is given, this particular version will be retrieved. |
378 | - Otherwise this will fetch the latest available version. |
379 | - |
380 | - Return the directory that contains the actual source root directory |
381 | - (which might be a subdirectory of dir). Return None if the source is |
382 | - not available.''' |
383 | - # Used only by apport-retrace. |
384 | - raise NotImplementedError, 'method must be implemented by distro-specific RPMPackageInfo subclass' |
385 | - |
386 | - def compare_versions(self, ver1, ver2): |
387 | - '''Compare two package versions. |
388 | - |
389 | - Return -1 for ver < ver2, 0 for ver1 == ver2, and 1 for ver1 > ver2.''' |
390 | - # Used by crashdb.py (i.e. the frontends) |
391 | - # I could duplicate stringToVersion/compareEVR from rpmUtils.misc, |
392 | - # but I hate duplicating code. So if you don't want to require rpmUtils |
393 | - # you can implement this function yourself. Probably you've got |
394 | - # equivalent code in whatever your distro uses instead of yum anyway. |
395 | - raise NotImplementedError, 'method must be implemented by distro-specific RPMPackageInfo subclass' |
396 | - |
397 | - def package_name_glob(self, glob): |
398 | - '''Return known package names which match given glob.''' |
399 | - |
400 | - raise NotImplementedError, 'TODO' |
401 | - |
402 | - # |
403 | - # Internal helper methods. These are only single-underscore, so you can use |
404 | - # use them in extending/overriding the methods above in your subclasses |
405 | - # |
406 | - |
407 | - def _get_headers_by_tag(self,tag,arg): |
408 | - '''Get a list of RPM headers by doing dbMatch on the given tag and |
409 | - argument.''' |
410 | - matches = self.ts.dbMatch(tag,arg) |
411 | - if matches.count() == 0: |
412 | - raise ValueError, 'Could not find package with %s: %s' % (tag,arg) |
413 | - return [m for m in matches] |
414 | - |
415 | - def _get_header(self,envra): |
416 | - '''Get the RPM header that matches the given ENVRA.''' |
417 | - |
418 | - querystr = envra |
419 | - qlen = len(envra) |
420 | - while qlen > 0: |
421 | - mi = impl.ts.dbMatch('name', querystr) |
422 | - hdrs = [m for m in mi] |
423 | - if len(hdrs) > 0: |
424 | - # yay! we found something |
425 | - # Unless there's some rpmdb breakage, you should have one header |
426 | - # here. If you do manage to have two rpms with the same ENVRA, |
427 | - # who cares which one you get? |
428 | - h = hdrs[0] |
429 | - break |
430 | - |
431 | - # remove the last char of querystr and retry the search |
432 | - querystr = querystr[0:len(querystr)-1] |
433 | - qlen = qlen - 1 |
434 | - |
435 | - if qlen == 0: |
436 | - raise ValueError, 'No headers found for this envra: %s' % envra |
437 | - return h |
438 | - |
439 | - def _make_envra_from_header(self,h): |
440 | - '''Generate an ENVRA string from an rpm header''' |
441 | - nvra="%s-%s-%s.%s" % (h['n'],h['v'],h['r'],h['arch']) |
442 | - if h['e']: |
443 | - envra = "%s:%s" % (h['e'],nvra) |
444 | - else: |
445 | - envra = nvra |
446 | - return envra |
447 | - |
448 | - def _checkmd5(self,filename,filemd5): |
449 | - '''Internal function to check a file's md5sum''' |
450 | - m = hashlib.md5() |
451 | - f = open(filename) |
452 | - data = f.read() |
453 | - f.close() |
454 | - m.update(data) |
455 | - return (filemd5 == m.hexdigest()) |
456 | - |
457 | -impl = RPMPackageInfo() |
458 | - |
459 | -# |
460 | -# Unit test |
461 | -# |
462 | - |
463 | -if __name__ == '__main__': |
464 | - import unittest |
465 | - |
466 | - class RPMPackageInfoTest(unittest.TestCase): |
467 | - |
468 | - def test_get_dependencies(self): |
469 | - '''get_dependencies().''' |
470 | - |
471 | - deps = impl.get_dependencies('bash') |
472 | - self.assertNotEqual(deps, []) |
473 | - |
474 | - def test_get_header(self): |
475 | - '''_get_header().''' |
476 | - |
477 | - hdr = impl._get_header('alsa-utils') |
478 | - self.assertEqual(hdr['n'], 'alsa-utils') |
479 | - |
480 | - def test_get_headers_by_tag(self): |
481 | - '''_get_headers_by_tag().''' |
482 | - |
483 | - headersByTag = impl._get_headers_by_tag('basenames','/bin/bash') |
484 | - self.assertEqual(len(headersByTag), 1) |
485 | - self.assert_(headersByTag[0]['n'].startswith('bash')) |
486 | - |
487 | - def test_get_system_architecture(self): |
488 | - '''get_system_architecture().''' |
489 | - |
490 | - arch = impl.get_system_architecture() |
491 | - # must be nonempty without line breaks |
492 | - self.assertNotEqual(arch, '') |
493 | - self.assert_('\n' not in arch) |
494 | - |
495 | - def test_get_version(self): |
496 | - '''get_version().''' |
497 | - |
498 | - ver = impl.get_version('bash') |
499 | - self.assertNotEqual(ver, None) |
500 | - ver = impl.get_version('alsa-utils') |
501 | - self.assertNotEqual(ver, None) |
502 | - |
503 | - |
504 | - # only execute if rpm is available |
505 | - try: |
506 | - if subprocess.call(['rpm', '--help'], stdout=subprocess.PIPE, |
507 | - stderr=subprocess.PIPE) == 0: |
508 | - unittest.main() |
509 | - except OSError: |
510 | - pass |
511 | |
512 | === modified file 'bin/apport-retrace' |
513 | --- bin/apport-retrace 2009-04-05 18:21:18 +0000 |
514 | +++ bin/apport-retrace 2009-07-09 10:00:51 +0000 |
515 | @@ -104,8 +104,9 @@ |
516 | |
517 | print '--- stack trace ---' |
518 | print report['Stacktrace'] |
519 | - print '--- thread stack trace ---' |
520 | - print report['ThreadStacktrace'] |
521 | + if report.has_key('ThreadedStacktrace'): |
522 | + print '--- thread stack trace ---' |
523 | + print report['ThreadStacktrace'] |
524 | print '---' |
525 | |
526 | ch = None |
527 | @@ -243,11 +244,16 @@ |
528 | |
529 | # sanity checks |
530 | required_fields = set(['CoreDump', 'ExecutablePath', 'Package']) |
531 | -if not required_fields.issubset(set(report.keys())): |
532 | +if report['ProblemType'] == 'KernelCrash': |
533 | + if not set(['Package','VmCore']).issubset(set(report.keys())): |
534 | + print >> sys.stderr, 'report file does not contain the required fields' |
535 | + sys.exit(0) |
536 | +elif not required_fields.issubset(set(report.keys())): |
537 | print >> sys.stderr, 'report file does not contain required fields: ' + \ |
538 | ' '.join(required_fields) |
539 | sys.exit(0) |
540 | |
541 | + |
542 | (installed, outdated_msg) = apport.packaging.install_retracing_packages(report, |
543 | options.verbose, options.unpack_only, options.no_pkg, |
544 | options.extra_packages) |
545 | @@ -265,6 +271,7 @@ |
546 | # regenerate gdb info |
547 | try: |
548 | report.add_gdb_info() |
549 | + report.add_kernel_crash_info() |
550 | gen_source_stacktrace(report) |
551 | except AssertionError: |
552 | if outdated_msg: |
553 | @@ -283,8 +290,9 @@ |
554 | if options.stdout: |
555 | print '--- stack trace ---' |
556 | print report['Stacktrace'] |
557 | - print '--- thread stack trace ---' |
558 | - print report['ThreadStacktrace'] |
559 | + if report.has_key('ThreadedStacktrace'): |
560 | + print '--- thread stack trace ---' |
561 | + print report['ThreadStacktrace'] |
562 | if report.has_key('StacktraceSource'): |
563 | print '--- source code stack trace ---' |
564 | print report['StacktraceSource'] |
565 | |
566 | === modified file 'bin/kernel_crashdump' |
567 | --- bin/kernel_crashdump 2009-06-26 06:37:25 +0000 |
568 | +++ bin/kernel_crashdump 2009-07-09 10:52:51 +0000 |
569 | @@ -23,6 +23,7 @@ |
570 | pr['Package'] = apport.packaging.get_kernel_package() |
571 | |
572 | pr['VmCore'] = (vmcore_path,) |
573 | +pr.add_os_info() |
574 | if os.path.exists(vmcore_path + '.log'): |
575 | pr['VmCoreLog'] = (vmcore_path + '.log',) |
576 | |
577 | |
578 | === added file 'data/general-hooks/automatix.py' |
579 | --- data/general-hooks/automatix.py 1970-01-01 00:00:00 +0000 |
580 | +++ data/general-hooks/automatix.py 2009-03-10 17:32:02 +0000 |
581 | @@ -0,0 +1,26 @@ |
582 | +'''Do not send any crashes when automatix is or was installed, since it usually |
583 | +causes a mess in the system and causes a lot of package installation failures. |
584 | + |
585 | +Copyright (C) 2007 Canonical Ltd. |
586 | +Author: Martin Pitt <martin.pitt@ubuntu.com> |
587 | + |
588 | +This program is free software; you can redistribute it and/or modify it |
589 | +under the terms of the GNU General Public License as published by the |
590 | +Free Software Foundation; either version 2 of the License, or (at your |
591 | +option) any later version. See http://www.gnu.org/copyleft/gpl.html for |
592 | +the full text of the license. |
593 | +''' |
594 | + |
595 | +import apport.packaging |
596 | + |
597 | +def add_info(report): |
598 | + try: |
599 | + if apport.packaging.get_version('automatix') or \ |
600 | + apport.packaging.get_version('automatix2') or \ |
601 | + apport.packaging.get_version('ultamatix'): |
602 | + report['UnreportableReason'] = 'You have installed automatix or ultamatix on your \ |
603 | +system. This is known to cause a lot of instability, thus problem reports \ |
604 | +will not be sent to the %s developers.' % report.get('DistroRelease', |
605 | + 'distribution').split()[0] |
606 | + except ValueError, e: |
607 | + return |
608 | |
609 | === added file 'data/general-hooks/ubuntu.py' |
610 | --- data/general-hooks/ubuntu.py 1970-01-01 00:00:00 +0000 |
611 | +++ data/general-hooks/ubuntu.py 2009-06-03 07:42:02 +0000 |
612 | @@ -0,0 +1,31 @@ |
613 | +'''Attach generally useful information, not specific to any package. |
614 | + |
615 | +Copyright (C) 2009 Canonical Ltd. |
616 | +Author: Matt Zimmerman <mdz@canonical.com> |
617 | + |
618 | +This program is free software; you can redistribute it and/or modify it |
619 | +under the terms of the GNU General Public License as published by the |
620 | +Free Software Foundation; either version 2 of the License, or (at your |
621 | +option) any later version. See http://www.gnu.org/copyleft/gpl.html for |
622 | +the full text of the license. |
623 | +''' |
624 | + |
625 | +import apport.packaging |
626 | +from apport.hookutils import * |
627 | + |
628 | +def add_info(report): |
629 | + # crash reports from live system installer often expose target mount |
630 | + for f in ('ExecutablePath', 'InterpreterPath'): |
631 | + if f in report and report[f].startswith('/target/'): |
632 | + report[f] = report[f][7:] |
633 | + |
634 | + # if we are running from a live system, add the build timestamp |
635 | + attach_file_if_exists(report, '/cdrom/.disk/info', 'LiveMediaBuild') |
636 | + |
637 | + # This includes the Ubuntu packaged kernel version |
638 | + attach_file_if_exists(report, '/proc/version_signature', 'ProcVersionSignature') |
639 | + |
640 | + if 'Package' in report: |
641 | + package = report['Package'].split()[0] |
642 | + if package and 'attach_conffiles' in dir(): |
643 | + attach_conffiles(report, package) |
644 | |
645 | === added file 'data/package-hooks/source_linux.py' |
646 | --- data/package-hooks/source_linux.py 1970-01-01 00:00:00 +0000 |
647 | +++ data/package-hooks/source_linux.py 2009-04-28 17:09:17 +0000 |
648 | @@ -0,0 +1,40 @@ |
649 | +'''Apport package hook for the Linux kernel. |
650 | + |
651 | +(c) 2008 Canonical Ltd. |
652 | +Contributors: |
653 | +Matt Zimmerman <mdz@canonical.com> |
654 | +Martin Pitt <martin.pitt@canonical.com> |
655 | + |
656 | +This program is free software; you can redistribute it and/or modify it |
657 | +under the terms of the GNU General Public License as published by the |
658 | +Free Software Foundation; either version 2 of the License, or (at your |
659 | +option) any later version. See http://www.gnu.org/copyleft/gpl.html for |
660 | +the full text of the license. |
661 | +''' |
662 | + |
663 | +import os |
664 | +import subprocess |
665 | +from apport.hookutils import * |
666 | + |
667 | +def add_info(report): |
668 | + attach_hardware(report) |
669 | + |
670 | + attach_file_if_exists(report, "/etc/initramfs-tools/conf.d/resume", |
671 | + key="HibernationDevice") |
672 | + |
673 | + version_signature = report.get('ProcVersionSignature', '') |
674 | + if not version_signature.startswith('Ubuntu '): |
675 | + report['UnreportableReason'] = _('The running kernel is not an Ubuntu kernel') |
676 | + return |
677 | + |
678 | + uname_release = os.uname()[2] |
679 | + lrm_package_name = 'linux-restricted-modules-%s' % uname_release |
680 | + lbm_package_name = 'linux-backports-modules-%s' % uname_release |
681 | + |
682 | + attach_related_packages(report, [lrm_package_name, lbm_package_name]) |
683 | + |
684 | +if __name__ == '__main__': |
685 | + report = {} |
686 | + add_info(report) |
687 | + for key in report: |
688 | + print '%s: %s' % (key, report[key].split('\n', 1)[0]) |
689 | |
690 | === added directory 'debian' |
691 | === added file 'debian/apport-gtk.install' |
692 | --- debian/apport-gtk.install 1970-01-01 00:00:00 +0000 |
693 | +++ debian/apport-gtk.install 2009-06-29 09:59:56 +0000 |
694 | @@ -0,0 +1,2 @@ |
695 | +usr/share/apport/*gtk* |
696 | +usr/share/applications/*gtk-mime* |
697 | |
698 | === added file 'debian/apport-kde.install' |
699 | --- debian/apport-kde.install 1970-01-01 00:00:00 +0000 |
700 | +++ debian/apport-kde.install 2009-06-29 09:59:56 +0000 |
701 | @@ -0,0 +1,7 @@ |
702 | +usr/share/apport/*kde* |
703 | +usr/share/apport/progress.ui |
704 | +usr/share/apport/error.ui |
705 | +usr/share/apport/bugreport.ui |
706 | +usr/share/apport/choices.ui |
707 | +usr/share/applications/apport-kde-mime.desktop |
708 | +usr/share/applications/apport-kde-mimelnk.desktop usr/share/mimelnk/text |
709 | |
710 | === added file 'debian/apport-retrace.install' |
711 | --- debian/apport-retrace.install 1970-01-01 00:00:00 +0000 |
712 | +++ debian/apport-retrace.install 2009-04-05 18:30:06 +0000 |
713 | @@ -0,0 +1,3 @@ |
714 | +usr/share/apport/apport-retrace usr/bin |
715 | +usr/share/apport/dupdb-admin usr/bin |
716 | +../local/apport-chroot usr/bin |
717 | |
718 | === added file 'debian/apport-retrace.manpages' |
719 | --- debian/apport-retrace.manpages 1970-01-01 00:00:00 +0000 |
720 | +++ debian/apport-retrace.manpages 2009-04-05 18:30:06 +0000 |
721 | @@ -0,0 +1,3 @@ |
722 | +man/apport-retrace.1 |
723 | +man/dupdb-admin.1 |
724 | +debian/local/apport-chroot.1 |
725 | |
726 | === added file 'debian/apport.install' |
727 | --- debian/apport.install 1970-01-01 00:00:00 +0000 |
728 | +++ debian/apport.install 2009-04-05 18:15:48 +0000 |
729 | @@ -0,0 +1,21 @@ |
730 | +etc/default |
731 | +etc/init.d |
732 | +etc/cron.daily |
733 | +usr/share/apport/apport |
734 | +usr/share/apport/apport-checkreports |
735 | +usr/share/apport/package_hook |
736 | +usr/share/apport/kernel_crashdump |
737 | +usr/share/apport/kernel_oops |
738 | +usr/share/apport/gcc_ice_hook |
739 | +usr/share/apport/apportcheckresume |
740 | +usr/share/apport/apport-unpack usr/bin |
741 | +usr/share/apport/testsuite/ |
742 | +usr/share/doc/apport |
743 | +usr/share/locale |
744 | +usr/share/icons |
745 | +usr/share/mime |
746 | +usr/share/apport/package-hooks |
747 | +usr/share/apport/general-hooks |
748 | +usr/share/apport/*cli* usr/bin/ |
749 | +../local/ubuntu-bug usr/bin |
750 | +../local/apport-collect usr/bin |
751 | |
752 | === added file 'debian/apport.links' |
753 | --- debian/apport.links 1970-01-01 00:00:00 +0000 |
754 | +++ debian/apport.links 2009-04-23 22:02:32 +0000 |
755 | @@ -0,0 +1,1 @@ |
756 | +/usr/share/apport/package-hooks/source_linux.py /usr/share/apport/package-hooks/source_linux-meta.py |
757 | |
758 | === added file 'debian/apport.logrotate' |
759 | --- debian/apport.logrotate 1970-01-01 00:00:00 +0000 |
760 | +++ debian/apport.logrotate 2006-09-10 20:59:21 +0000 |
761 | @@ -0,0 +1,9 @@ |
762 | +/var/log/apport.log { |
763 | + daily |
764 | + rotate 7 |
765 | + delaycompress |
766 | + compress |
767 | + notifempty |
768 | + missingok |
769 | +} |
770 | + |
771 | |
772 | === added file 'debian/apport.manpages' |
773 | --- debian/apport.manpages 1970-01-01 00:00:00 +0000 |
774 | +++ debian/apport.manpages 2009-02-19 12:28:59 +0000 |
775 | @@ -0,0 +1,4 @@ |
776 | +man/apport-unpack.1 |
777 | +man/apport-cli.1 |
778 | +debian/local/ubuntu-bug.1 |
779 | +debian/local/apport-collect.1 |
780 | |
781 | === added file 'debian/changelog' |
782 | --- debian/changelog 1970-01-01 00:00:00 +0000 |
783 | +++ debian/changelog 2009-06-30 20:39:23 +0000 |
784 | @@ -0,0 +1,3855 @@ |
785 | +apport (1.5-0ubuntu2) karmic; urgency=low |
786 | + |
787 | + * Merge fixes from trunk: |
788 | + - packaging-apt-dpkg.py: Fix install_retracing_packages() for pre-0.7.9 |
789 | + python-apt API. |
790 | + - Sort the list of dependencies so it's easier to scan (LP: #391021) |
791 | + |
792 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 30 Jun 2009 22:39:18 +0200 |
793 | + |
794 | +apport (1.5-0ubuntu1) karmic; urgency=low |
795 | + |
796 | + * New upstream release: |
797 | + - Drop all Makefiles, po/POTFILES.in, and most code from setup.py, and use |
798 | + DistUtilsExtras.auto which "just does the right thing" for most build |
799 | + system tasks. This requires python-distutils-extra >= 2.2, see |
800 | + https://launchpad.net/python-distutils-extra |
801 | + - Move all test scripts into test/, to unclutter source tree. |
802 | + - setup.py now auto-detects the required packaging backend if |
803 | + apport/packaging_impl.py is not manually installed. |
804 | + * debian/control: Add python-distutils-extra build dependency. |
805 | + * debian/rules: Drop stuff which is now properly done by the upstream build |
806 | + system. |
807 | + * Drop debian/apport.examples, preloadlib died long ago. |
808 | + * Adapt debian/apport-{gtk,kde}.install to new upstream build system, which |
809 | + now installs the .desktop files itself. |
810 | + |
811 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 29 Jun 2009 12:00:21 +0200 |
812 | + |
813 | +apport (1.4-0ubuntu1) karmic; urgency=low |
814 | + |
815 | + * New upstream release. Compared to our previous snapshot, this changes: |
816 | + - Replace Qt4 frontend with KDE frontend, thanks to Richard Johnson! |
817 | + - apport/ui.py, run_report_bug(): Clean up PID information collection. |
818 | + - gtk/apport-gtk.ui: Drop invalid icon reference. (LP: #389064) |
819 | + - ui.py: Do not reject non-distro package reports if report sets CrashDB |
820 | + (for third-party destination). (LP: #391015) |
821 | + - bin/kernel_crashdump: Use packaging API properly. |
822 | + - apport-gtk.ui: Drop erroneous translatable flag from stock buttons. |
823 | + - Update German translations. |
824 | + * debian/*: qt → kde, add transitional package for apport-qt. |
825 | + * Drop backends/packaging_rpm.py. We don't use it in the Ubuntu package at |
826 | + all, and it's still in trunk. |
827 | + * debian/rules: Drop some deprecated dh_* calls, cdbs's debhelper.mk has |
828 | + done them for a long time. |
829 | + * debian/control: Bump Standards-Version to 3.8.2 (no changes necessary). |
830 | + * debian/control: Replace URLs in descriptions with proper Homepage: field. |
831 | + |
832 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 26 Jun 2009 10:44:54 +0200 |
833 | + |
834 | +apport (1.3-0ubuntu2) karmic; urgency=low |
835 | + |
836 | + * debian/local/apport-collect: Pass None as HookUI object. This will crash |
837 | + with interactive hooks, but is a good enough immediate bandaid. |
838 | + (LP: #385811) |
839 | + * Merge fixes from trunk: |
840 | + - packaging-apt-dpkg.py: Add backwards compatibility code for python-apt < |
841 | + 0.7.9 to not break backportability. |
842 | + - hookutils.py, command_output(): Force LC_MESSAGES=C, to avoid translated |
843 | + output in bug reports. (LP: #383230) |
844 | + - apport-gtk.ui: Make details window resizable, and lower default size, so |
845 | + that it will fit on small screens. (LP: #365517) |
846 | + |
847 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 12 Jun 2009 12:47:59 +0200 |
848 | + |
849 | +apport (1.3-0ubuntu1) karmic; urgency=low |
850 | + |
851 | + * New upstream release. Compared to our bzr snapshot, this has: |
852 | + - Interactive package hooks: |
853 | + + Add apport.ui.HookUI class which provides GUI functionality such as |
854 | + yes/no |
855 | + questions or file dialogs to hooks. |
856 | + + add_info() in package hooks now can (optionally) take a second argument |
857 | + which is the HookUI instance. |
858 | + + See doc/package-hooks.txt for details. |
859 | + + See UbuntuSpec:desktop-karmic-symptom-based-bug-reporting |
860 | + - New function apport.hookutils.root_command_output() to run a command as root, |
861 | + through gksu/kdesudo/sudo, depending on the desktop environment. |
862 | + |
863 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 10 Jun 2009 16:49:13 +0200 |
864 | + |
865 | +apport (1.2.1-0ubuntu3) karmic; urgency=low |
866 | + |
867 | + * debian/control: Bump Standards-Version to 3.8.1 (no changes necessary). |
868 | + * debian/control: Bump debhelper dependency for dh_icons, to satisfy |
869 | + lintian. |
870 | + * general-hooks/ubuntu.py: Fix IndexError crash if report does not have a |
871 | + Package field. Check whether we actually have attach_conffiles() (which is |
872 | + not the case when running the upstream version). |
873 | + * Merge trunk: |
874 | + - launchpad.py: Fix crash for unset titles. |
875 | + - Add segfault analysis hook for quick segv reviews. Thanks to Kees Cook! |
876 | + - run-tests: Replace hardcoded Python path with dynamically detected path. |
877 | + |
878 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 03 Jun 2009 09:52:03 +0200 |
879 | + |
880 | +apport (1.2.1-0ubuntu2) karmic; urgency=low |
881 | + |
882 | + * debian/control: Update Vcs-Bzr: for new location (moved from project |
883 | + branch to package branch). |
884 | + * Merge bug fixes from trunk: |
885 | + - apport-cli: Fix report saving in "bug report" mode. (LP: #353253) |
886 | + - Drop "UnsupportableReason" field, it is too similar to |
887 | + UnreportableReason and just confusing. |
888 | + - ui.py: Check UnreportableReason for run_report_bug() as well. |
889 | + (LP: #361359) |
890 | + - general-hooks/generic.py: Do not report problems with low free space on |
891 | + / or /home. (LP: #381047) |
892 | + - launchpad.py: Do not overwrite report['Title']. |
893 | + - launchpad.py: Repair support for extra tags. |
894 | + - New function apport.hookutils.root_command_output() to run a command as |
895 | + root, through gksu/kdesudo/sudo, depending on the desktop environment. |
896 | + (Part of UbuntuSpec:desktop-karmic-symptom-based-bug-reporting) |
897 | + - launchpad.py: Fetch DpkgTerminalLog. (LP: #382589) |
898 | + - launchpad.py: More robust download(), fixes other part of (LP: #382589) |
899 | + - problem_report.py: Allow dashes and underscores in key names. Update |
900 | + doc/data-format.tex accordingly. (LP: #380811) |
901 | + |
902 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 02 Jun 2009 11:59:41 +0200 |
903 | + |
904 | +apport (1.2.1-0ubuntu1) karmic; urgency=low |
905 | + |
906 | + * New upstream release: |
907 | + - Moving away from deprecated APIs: |
908 | + + packaging-apt-dpkg.py: Use python-apt >= 0.7.9 official API and drop |
909 | + usage of internal symbols. |
910 | + + hookutils.py: Drop hal related functions and queries, replace with |
911 | + udev database, udev log file, and DMI information from sysfs. |
912 | + + gtk UI: Convert from libglade to gtk.Builder. |
913 | + - Bug fixes: |
914 | + + hookutils.py: Drop /proc/version_signature collection, it is Ubuntu |
915 | + specific. |
916 | + + apportcheckresume: Fix log collection from pm-utils. |
917 | + + Fix various crashes and report properties for reporting against |
918 | + uninstalled packages. |
919 | + * debian/control: Drop python-glade2 dependency, bump python-gtk2 dependency |
920 | + to ensure availability of gtk.Builder. |
921 | + * hookutils, attach_conffiles(): Remove leftover debugging spew. |
922 | + * debian/apport-qt.install: Install the individual Qt .ui files instead of |
923 | + *.ui, since GTK's are now also called *.ui. |
924 | + |
925 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 15 May 2009 11:28:34 +0200 |
926 | + |
927 | +apport (1.1.1-0ubuntu2) karmic; urgency=low |
928 | + |
929 | + [ Martin Pitt ] |
930 | + * hookutils.py: Do not attach /proc/version_signature, it's Ubuntu specific. |
931 | + (Merged from trunk). Instead, attach it in general-hooks/ubuntu.py. |
932 | + * general-hooks/ubuntu.py: Attach package conffile information. |
933 | + * debian/local/apport-collect: Add workaround for launchpadlib bug |
934 | + LP#353805, to avoid crashing with non-UTF8 attachments. (LP: #368004) |
935 | + * debian/local/apport-collect: Fix import of launchpadlib's HTTPError. |
936 | + * apport/hookutils.py, attach_conffiles(): Ignore empty lines from |
937 | + dpkg-query output. |
938 | + * general-hooks/ubuntu.py: Strip off '/target' prefix from ExecutablePath |
939 | + and InterpreterPath, to correctly process crash reports from the live |
940 | + system installer. |
941 | + * apport/hookutils.py, attach_conffiles(): Do not use command_output(), |
942 | + since that causes error messages to get parsed as conffiles. Use |
943 | + subprocess properly. |
944 | + * backends/packaging-apt-dpkg.py: Replace deprecated python-apt properties |
945 | + with current ones (merged from trunk). Update python-apt dependency to |
946 | + >= 0.7.9. |
947 | + * packaging-apt-dpkg.py, get_modified_files(): Do not show package list file |
948 | + as modified if the package is not installed (merged from trunk). |
949 | + (LP: #364533) |
950 | + * backends/packaging-apt-dpkg.py, install_retracing_packages(): Fix syntax |
951 | + error which broke the retracers. |
952 | + |
953 | + [ Andy Whitcroft ] |
954 | + * bin/apportcheckresume: the suspend _and_ hibernate logs are both in |
955 | + pm-suspend.log. |
956 | + * bin/apportcheckresume: remove redunant check for file before attaching |
957 | + stress log. |
958 | + |
959 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 13 May 2009 15:22:53 +0200 |
960 | + |
961 | +apport (1.1.1-0ubuntu1) karmic; urgency=low |
962 | + |
963 | + [ Martin Pitt ] |
964 | + * New upstream security update: |
965 | + - etc/cron.daily/apport: Only attempt to remove files and symlinks, do not |
966 | + descend into subdirectories of /var/crash/. Doing so might be exploited by |
967 | + a race condition between find traversing a huge directory tree, changing |
968 | + an existing subdir into a symlink to e. g. /etc/, and finally getting |
969 | + that piped to rm. This also changes the find command to not use GNU |
970 | + extensions. Thanks to Stephane Chazelas for discovering this! |
971 | + (LP: #357024, CVE-2009-1295) |
972 | + - Other fixes were already cherrypicked in the previous upload. |
973 | + |
974 | + [ Matt Zimmerman ] |
975 | + * package-hooks/source_linux.py: Attach info for linux-restricted-modules |
976 | + and linux-backports-modules |
977 | + |
978 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 30 Apr 2009 09:08:29 +0200 |
979 | + |
980 | +apport (1.1-0ubuntu1) karmic; urgency=low |
981 | + |
982 | + * New upstream release: |
983 | + - Drop some remaining distro specific pieces of code from non-backends. |
984 | + - Add hookutils methods for attaching relevant packages, greatly improve |
985 | + attach_alsa() for sound problem debugging. |
986 | + - Move launchpad crash database implementation from ever-breaking |
987 | + python-launchpad-bugs (screenscraping) to launchpadlib (official and |
988 | + stable Launchpad API). (LP: #353879) |
989 | + - Add new field Report.pid which gets set on add_proc_info() and can be |
990 | + used by hooks. |
991 | + - setup.py: Properly clean up all generated files, install missing |
992 | + mimetypes/text-x-apport.svg icon symlink. |
993 | + - Add README file. |
994 | + - Add translations from Launchpad. |
995 | + - Remove preloadlib/*; it's undermaintained, and not really useful any |
996 | + more these days. |
997 | + - Various bug fixes; most visible being the misnamed |
998 | + etc/default/apport.default file (which should just be |
999 | + etc/default/apport). |
1000 | + * Merge some bug fixes from trunk: |
1001 | + - launchpad.py: Send and read Date: field again, reverting r1128; it is |
1002 | + useful after all. (LP: #349139) |
1003 | + - report.py, add_proc_info(): Only add ProcAttrCurrent if it is not |
1004 | + "unconfined". |
1005 | + - ui.py: Detect invalid PIDs (such as for kernel processes) and give a |
1006 | + friendly error message. (LP: #360608) |
1007 | + - report.py, add_hooks_info(): Always run common hooks, and run source |
1008 | + package hooks if we do not have a binary package name. (LP: #350131) |
1009 | + - launchpad.py: Consider socket errors when connecting as transient, so |
1010 | + that crash-digger doesn't stop completely on them. |
1011 | + * Drop debian/apport.README.Debian, superseded by upstream README. |
1012 | + * Drop debian/apport.links, done by upstream setup.py now. |
1013 | + * debian/rules, debian/apport.preinst: Drop upgrade fix for misnamed default |
1014 | + file again, was only necessary for intra-Jaunty upgrades. |
1015 | + * debian/control: python-launchpad-bugs → python-launchpadlib dependencies. |
1016 | + * debian/local/apport-collect: Drop launchpadlib login code, just use the |
1017 | + CrashDatabase implementation from apport/crashdb_impl/launchpad.py. |
1018 | + * Make package backportable to hardy and intrepid: |
1019 | + - debian/control: Relax python-central buil-dependency to 0.5.6. |
1020 | + - debian/rules: Determine DH_PYCENTRAL value ("include-links" vs. |
1021 | + "nomove") based on the installed pycentral version. |
1022 | + - debian/rules: Only supply --install-layout=deb when Python version is |
1023 | + 2.6. |
1024 | + * apport/hookutils.py: Add docstring for attach_hardware, thanks Matt |
1025 | + Zimmerman! (Merged from lp:~mdz/apport/hookutils) |
1026 | + * apport/crashdb_impl/launchpad.py: Support older wadllib API |
1027 | + where bug.date_created was a string instead of a datetime object. |
1028 | + (Cherrypicked from trunk). |
1029 | + * debian/control: Drop apport dependency to python-xdg, it's not required. |
1030 | + (LP: #354172) |
1031 | + * debian/control: Drop gdb from Depends: to Recommends:. (LP: #354172) |
1032 | + * debian/local/apport-collect: Print a friendly error message instead of |
1033 | + crashing if the bug number is not an integer. (LP: #351050) |
1034 | + * debian/local/apport-collect: Change incomplete tasks back to "New" after |
1035 | + data collection. (LP: #363126) |
1036 | + * debian/apport.links: source_linux-meta.py -> source_linux.py package hook, |
1037 | + so that apport-collect works on "linux" source bug tasks. These get |
1038 | + opportunistically translated into binary packages, but the binary "linux" |
1039 | + is built by the source "linux-meta". (LP: #350131) |
1040 | + * debian/local/setup-apport-retracer: |
1041 | + - Use ports.ubuntu.com for non-{i386,amd64,lpia}. |
1042 | + - Set up Jaunty by default. |
1043 | + - Fix test for being in local unpackaged apport source tree. |
1044 | + - Drop installation of python-launchpad-bugs. |
1045 | + - Install bzr branches/packages necessary for launchpad, in a shared |
1046 | + ~/launchpadlib/ tree: launchpadlib, wadllib, oauth, lazr.uri, httplib2, |
1047 | + simplejson. |
1048 | + - Clean up apport-chroot calling for extra packages. |
1049 | + |
1050 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 28 Apr 2009 10:50:49 +0200 |
1051 | + |
1052 | +apport (1.0-0ubuntu5) jaunty; urgency=low |
1053 | + |
1054 | + [ Martin Pitt ] |
1055 | + * Rename etc/default/apport.default to etc/default/apport (brown paperbag), |
1056 | + and add debian/apport.preinst to remove the apport.default file on |
1057 | + upgrades. (LP: #361543) |
1058 | + * debian/rules: Call dh_installinit with --onlyscripts, so that the package |
1059 | + calls update-rc.d again. This fixes the calling of init script again, |
1060 | + which got broken in 1.0-0ubuntu1. (LP: #361579) |
1061 | + |
1062 | + [ Matt Zimmerman ] |
1063 | + * package-hooks/source_linux.py: Attach /etc/initramfs-tools/conf.d/resume to |
1064 | + show the resume device for hibernation |
1065 | + |
1066 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 15 Apr 2009 22:36:33 +0200 |
1067 | + |
1068 | +apport (1.0-0ubuntu4) jaunty; urgency=low |
1069 | + |
1070 | + * etc/default/apport.default: Disable Apport by default for the final |
1071 | + release. |
1072 | + |
1073 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 14 Apr 2009 11:47:29 +0200 |
1074 | + |
1075 | +apport (1.0-0ubuntu3) jaunty; urgency=low |
1076 | + |
1077 | + * apport/hookutils.py: Factor out package_versions() to generate a simple |
1078 | + text listing of relevant package versions and use it in attach_printing() |
1079 | + * apport/hookutils.py: Add new function attach_relevant_packages() to attach |
1080 | + version information (and perhaps eventually run hooks?) for related |
1081 | + packages |
1082 | + * apport/hookutils.py: Add glob matching to package_versions() |
1083 | + * apport/hookutils.py: Add fuser info and dmesg to attach_alsa |
1084 | + * apport/hookutils.py: Add codec info to attach_alsa |
1085 | + |
1086 | + -- Matt Zimmerman <mdz@ubuntu.com> Thu, 09 Apr 2009 07:36:45 -0700 |
1087 | + |
1088 | +apport (1.0-0ubuntu2) jaunty; urgency=low |
1089 | + |
1090 | + * backends/packaging-apt-dpkg.py: Add missing shutil import. |
1091 | + * debian/local/ubuntu-bug: Filter out -p and -P, for backwards calling |
1092 | + compatibility. (LP: #356755) |
1093 | + |
1094 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 06 Apr 2009 23:04:39 -0700 |
1095 | + |
1096 | +apport (1.0-0ubuntu1) jaunty; urgency=low |
1097 | + |
1098 | + * Apport has a proper upstream trunk now (lp:apport) and made an 1.0 |
1099 | + upstream release. Use this as an orig.tar.gz. This does not change any |
1100 | + code for Jaunty, just removes the Fedora/OpenSUSE specific .spec and init |
1101 | + scripts. |
1102 | + * Add bzr-builddeb configuration (merge mode). |
1103 | + * Add debian/watch for upstream releases on Launchpad. |
1104 | + * Drop debian/python-apport.postinst, obsolete for a long time. |
1105 | + |
1106 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 06 Apr 2009 17:37:48 -0700 |
1107 | + |
1108 | +apport (0.149) jaunty; urgency=low |
1109 | + |
1110 | + Do some internal cleanup of distribution specific stuff: |
1111 | + |
1112 | + * problem_report.py, man/apport-unpack.1: Fix description of .crash file |
1113 | + syntax (RFC822, not "Debian control"). |
1114 | + * Move cron.daily, init script, and default file from debian/ to etc/, and |
1115 | + install them in setup.py. These files are appropriate for upstream |
1116 | + installation. |
1117 | + * Move crashdb.conf and doc/README.blacklist to etc/, to simplify setup.py. |
1118 | + * setup.py: Move *.mo generation/installation into my_install_data class, |
1119 | + for cleanliness. |
1120 | + * Move installation of missing packages for retracing from |
1121 | + bin/apport-retrace to new abstract interface apport/packaging.py, |
1122 | + install_retracing_packages() and remove_packages(), and move the apt/dpkg |
1123 | + code to backends/packaging-apt-dpkg.py. This removes a major piece of |
1124 | + apt/dpkg specific code from non-backends. |
1125 | + * bin/apport-retrace: Rename option --no-dpkg to --no-pkg and update |
1126 | + bin/apport-chroot accordingly. |
1127 | + * Move bin/apport-chroot and man/apport-chroot.1 to debian/local, since they |
1128 | + are totally Debian/Ubuntu specific. |
1129 | + * debian/local/setup-apport-retracer: Update apport-chroot and crashdb.conf |
1130 | + paths for above changes. |
1131 | + * apport/hookutils.py, files_in_package(): Replace dpkg-query call with |
1132 | + packaging.get_files(), to avoid Debianism. |
1133 | + * man/apport-retrace.1: Drop reference to "apt", simply talk about package |
1134 | + installation. |
1135 | + |
1136 | + Bug fixes: |
1137 | + |
1138 | + * setup.py: Fix homepage URL. |
1139 | + * debian/local/apport-chroot: If multiple distro IDs point to the same |
1140 | + chroot, do not upgrade them more than once with "upgrade all". |
1141 | + |
1142 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 06 Apr 2009 16:06:33 -0700 |
1143 | + |
1144 | +apport (0.148) jaunty; urgency=low |
1145 | + |
1146 | + [ Matt Zimmerman ] |
1147 | + * apport/hookutils.py: add attach_media_build to include information about |
1148 | + the build of installation media in use (i.e. in a casper live CD |
1149 | + environment) |
1150 | + * general-hooks/ubuntu.py: use attach_media_build (LP: #351781) |
1151 | + * bin/apportcheckresume: Use attach_file_if_exists rather than attach_file to |
1152 | + avoid spurious error messages about non-existent log files (LP: #351973) |
1153 | + |
1154 | + [ Martin Pitt ] |
1155 | + * debian/local/ubuntu-bug: Drop generic passthrough of apport-{cli,gtk,kde} |
1156 | + options since this leads to too much confusion. Instead just support a |
1157 | + single argument and check whether it is a pid, a package name, a .crash |
1158 | + file, or a program path. This does the right thing when calling it with a |
1159 | + .crash file (LP: #347392) and fixes the help output (LP: #344923) Update |
1160 | + manpage accordingly. |
1161 | + * apport/hookutils.py: Move attach_media_build() to |
1162 | + general-hooks/ubuntu.py, since it is Ubuntu specific. |
1163 | + * bin/apport-retrace: Fix KeyError crash on bugs with an ExecutablePath |
1164 | + which does not exist any more. Close the bug as invalid instead. |
1165 | + (LP: #352331) |
1166 | + * bin/kernel_oops: Add "kernel-oops" tag. Since both bin/kernel_oops and |
1167 | + bin/apportcheckresume use the "kerneloops" bug class, it previously was |
1168 | + hard to filter out the bug reports which were real oopses. (LP: #349621) |
1169 | + |
1170 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 01 Apr 2009 18:10:01 +0200 |
1171 | + |
1172 | +apport (0.147) jaunty; urgency=low |
1173 | + |
1174 | + * bin/apportcheckresume: report the pm-suspend.log/pm-hibernate.log |
1175 | + from /var/lib. |
1176 | + * bin/apportcheckresume: only attempt to attach the stress log if its is |
1177 | + present. |
1178 | + * bin/apportcheckresume, debian/apport.init: add detection for late |
1179 | + resume hangs, those where the user thinks the system was working. |
1180 | + (LP: #335323) |
1181 | + |
1182 | + -- Andy Whitcroft <apw@canonical.com> Mon, 30 Mar 2009 09:47:28 +0200 |
1183 | + |
1184 | +apport (0.146) jaunty; urgency=low |
1185 | + |
1186 | + * apport/report.py, _generate_sigsegv_report(): Turn into a class method, so |
1187 | + that it can be used by test cases in other modules as well. Also add |
1188 | + missing Signal field. |
1189 | + * apport/crashdb_impl/launchpad.py: Fully enable operation with |
1190 | + staging.launchpad.net. |
1191 | + * apport/crashdb_impl/launchpad.py: Add initial test suite, performing data |
1192 | + upload, Python and SEGV bug reporting, report download, report updating, |
1193 | + tag and duplicate handling. This happens on staging.launchpad.net. |
1194 | + * apport/crashdb.py: Add new interface duplicate_of(id) to return the master |
1195 | + bug of a duplicate. Also document that close_duplicate() with "None" |
1196 | + master bug will un-duplicate the bug. |
1197 | + * apport/crashdb_impl/{launchpad,memory}.py: Implement duplicate_of() and |
1198 | + add test cases. The Launchpad test case reproduces the |
1199 | + "duplicate-of-a-duplicate" regression, which now got fixed in |
1200 | + python-launchpad-bugs bzr head. |
1201 | + * apport/ui.py, open_url(): Also consider a sesssion as "GNOME" if gconfd-2 |
1202 | + is running; some variants such as UNR do not have gnome-panel; this fixes |
1203 | + using the preferred browser for them. (LP: #322386) |
1204 | + * debian/local/apport-collect: Add new option -p to explicitly specify a |
1205 | + (binary) package name instead of guesstimating it from the bug's source |
1206 | + package tasks. Document new option in debian/local/apport-collect.1. |
1207 | + (LP: #333875) |
1208 | + * apport/crashdb.py, duplicate_db_consolidate(): Add logging about removing |
1209 | + invalidated bugs from the duplicate database, now that this actually |
1210 | + works. |
1211 | + * debian/local/ubuntu-bug.1: Update for the possibility to specify a package |
1212 | + name or PID without any options. Also document the "ubuntu-bug linux" |
1213 | + special case. (LP: #348985) |
1214 | + * debian/local/ubuntu-bug.1: Add missing documentation of the case of |
1215 | + specifying a path name. |
1216 | + * backends/packaging-apt-dpkg.py: When unpacking source trees, try |
1217 | + "debian/rules setup" last, since it is the least common variant. |
1218 | + * debian/local/ubuntu-fat-chroot: Divert away |
1219 | + /usr/lib/xulrunner-1.9.1b3/xulrunner-bin. It is called on debian/rules |
1220 | + patch in xulrunner-1.9.1 and hangs eternally in the fakechroots. This is |
1221 | + only a temporary kludge, though, until the next xulrunner version lands. |
1222 | + * apport/crashdb_impl/launchpad.py: Add test case: Update a bug report which |
1223 | + got marked as a duplicate during processing. This reproduces #349407. |
1224 | + * apport/crashdb_impl/launchpad.py, update(): Intercept and ignore IOErrors |
1225 | + when changing the bug priority. This happens if a bug gets duplicated |
1226 | + underneath us. (LP: #349407) |
1227 | + * apport/crashdb.py, get_crashdb(): Print syntax errors from parsing |
1228 | + conf.d/*.conf to stderr. |
1229 | + * apport/crashdb_impl/launchpad.py: Support new CrashDB option "project" |
1230 | + which can be set to a LP project name to file bugs against that project |
1231 | + instead of the distribution. Add test case for filing crash bug against a |
1232 | + project, updating it, duplicating/unduplicating it, and determining fixed |
1233 | + version. (LP: #338835) |
1234 | + * bin/crash-digger: If apport-retrace exits with 99, consider it a transient |
1235 | + error and just stop the retracer, but don't leave the lock file behind. |
1236 | + Add appropriate test case to test-crash-digger. |
1237 | + * bin/apport-retrace: If apt update fails due to a "hash sum mismatch", exit |
1238 | + with a "transient error" code, to stop (but not break) the retracing |
1239 | + cycle. |
1240 | + |
1241 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 27 Mar 2009 17:01:08 +0100 |
1242 | + |
1243 | +apport (0.145) jaunty; urgency=low |
1244 | + |
1245 | + * apport/crashdb_impl/launchpad.py: Fix typo in previous upload. |
1246 | + * debian/local/apport-collect: Do not crash on |
1247 | + launchpadlib.errors.HTTPError, but give a proper error message and point |
1248 | + out that this script needs "change anything" privileges. (LP: #338201) |
1249 | + * apport_python_hook.py: Fix crash for already existing reports, and make |
1250 | + behaviour equivalent to bin/apport: Silently exit for existing unseen |
1251 | + crash report, and overwrite existing seen crash report. Add test cases. |
1252 | + (LP: #323714) |
1253 | + * general-hooks/automatix.py: Refuse to send bug reports when ultamatix is |
1254 | + installed. |
1255 | + |
1256 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Mar 2009 18:45:34 +0100 |
1257 | + |
1258 | +apport (0.144) jaunty; urgency=low |
1259 | + |
1260 | + * apport/crashdb_impl/launchpad.py, mark_retrace_failed(): If report is |
1261 | + invalid, remove CoreDump.gz and other attachments. |
1262 | + * bin/apport-retrace: If we didn't find the ExecutablePath on the system |
1263 | + because the package is out of date, don't crash, but close the bug as |
1264 | + invalid. |
1265 | + |
1266 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Mar 2009 10:45:56 +0100 |
1267 | + |
1268 | +apport (0.143) jaunty; urgency=low |
1269 | + |
1270 | + * debian/apport.README.Debian: Document how to temporarily and permanently |
1271 | + enable crash interception. |
1272 | + * backends/packaging-apt-dpkg.py, is_distro_package(): Do not consider a |
1273 | + package a native distro one if installed version is "None". This happens |
1274 | + with some PPA packages. (LP: #252734) |
1275 | + * apport/report.py, anonymize(): Move user name anonymization into the |
1276 | + "non-root" case as well; fixes uninitialized variable. (LP: #338847) |
1277 | + |
1278 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 09 Mar 2009 12:16:49 +0100 |
1279 | + |
1280 | +apport (0.142) jaunty; urgency=low |
1281 | + |
1282 | + * apport/report.py: Do not include lsb_release's stderr in the |
1283 | + DistroRelease: output. |
1284 | + * apport/hookutils.py: Fix attach_printing(): |
1285 | + - Correct spelling or "error_log". |
1286 | + - Do not call fgrep with no file names (if /etc/cups/ppd/ is empty), since |
1287 | + that hangs forever. |
1288 | + * apport/report.py, _gen_stacktrace_top(): Fix parsing of stacktraces |
1289 | + with some addresses missing. Add test cases. (LP: #269133) |
1290 | + * apport/ui.py, run_report_bug(): Show details of collected information and |
1291 | + give the user a chance to cancel. Previously, collected data was sent |
1292 | + directly to Launchpad. Nowadays lots of packages have hooks, so we cannot |
1293 | + guarantee any more that bug reports only have non-sensitive information. |
1294 | + (LP: #195514) This also allows the user to cancel if (s)he inadvertedly |
1295 | + clicked on "Report a problem". (LP: #279033) |
1296 | + * apport/ui.py: Fix crash in get_complete_size() for reports that are |
1297 | + constructed on the fly instead of loaded from a file (i. e. for bug |
1298 | + reports). Fixes displaying of report in apport-cli. |
1299 | + * apport/report.py: Slight robustification of test_add_gdb_info_script() |
1300 | + test case. |
1301 | + * debian/local/ubuntu-bug: Fix invocation with "--help". (LP: #305841) |
1302 | + * apport/ui.py, load_report(): Clearer error message if report file does not |
1303 | + exist. (LP: #204198) |
1304 | + * Remove redundant verbiage from test suite docstrings. |
1305 | + * apport/report.py, anonymize(): Fix crash when processing root-owned |
1306 | + reports. (LP: #338033) |
1307 | + * apport/report.py, anonymize(): Do not anonymize single-character user and |
1308 | + host names, since they create an utter mess in bug reports, and also are |
1309 | + very low-sensitive. |
1310 | + * debian/apport.init: Also start apport if force_start=1 is given. This |
1311 | + provides a convenient method of starting apport just for a session without |
1312 | + changing the default file. Add a comment to debian/apport.default about |
1313 | + this possibility. Thanks to Milan for the suggestion and the initial |
1314 | + patch! (LP: #320467) |
1315 | + * backends/packaging-apt-dpkg.py, _get_mirror(): Only consider http:// |
1316 | + mirrors for fetching Contents.gz. (LP: #315797) |
1317 | + |
1318 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 05 Mar 2009 17:01:05 +0100 |
1319 | + |
1320 | +apport (0.141) jaunty; urgency=low |
1321 | + |
1322 | + * apport/hookutils.py: Add cups error log to attach_printing() |
1323 | + |
1324 | + -- Brian Murray <brian@ubuntu.com> Mon, 02 Mar 2009 10:55:53 -0800 |
1325 | + |
1326 | +apport (0.140) jaunty; urgency=low |
1327 | + |
1328 | + * debian/python-{apport,problem-report}.install: Fix site-packages → |
1329 | + *-packages. |
1330 | + * run-tests: Only check for local packaging_impl.py if running local tests. |
1331 | + This unbreaks running tests from /usr/share/apport/testsuite/. |
1332 | + |
1333 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 02 Mar 2009 11:56:59 +0100 |
1334 | + |
1335 | +apport (0.139) jaunty; urgency=low |
1336 | + |
1337 | + * apport/report.py, anonymize(): Do not anonymize "root". (Side |
1338 | + issue in LP #333542) |
1339 | + * debian/rules: Supply --install-layout=deb to setup.py. |
1340 | + * debian/local/apport-collect: Attach new info to |
1341 | + staging.launchpad.net if $APPORT_STAGING is defined. This makes |
1342 | + testing easier. Describe in debian/local/apport-collect.1. |
1343 | + * debian/local/apport-collect: Ignore ValueErrors from |
1344 | + add_package_info(), which happens if the bug has a source package |
1345 | + task which does not have an identically named binary package name. |
1346 | + Slightly ugly, but it's nontrivial to do that in a sensible |
1347 | + manner; let's just fix the crash for now, since the focus of this |
1348 | + tool is to collect information from hooks. (LP: #334823) |
1349 | + * apport/hookutils.py, hal_dump_udi(): Filter out serial numbers. |
1350 | + (Mentioned in LP #107103) |
1351 | + |
1352 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 02 Mar 2009 11:36:18 +0100 |
1353 | + |
1354 | +apport (0.138) jaunty; urgency=low |
1355 | + |
1356 | + * apport/crashdb_impl/launchpad.py: Consider an useful stack trace |
1357 | + sufficient for automatically removing the core dump, it doesn't |
1358 | + need to be perfect. This is in accordance with not setting the |
1359 | + apport-failed-retrace tag for useful, but non-perfect retraces any |
1360 | + more. |
1361 | + * apport/hookutils.py, backends/packaging_rpm.py: Convert usage of |
1362 | + md5 module (which is deprecated in 2.6) to hashlib. |
1363 | + * Replace all instances of using an exception's .message attribute |
1364 | + with str(exception), since message is deprecated in Python 2.6. |
1365 | + * apport/hookutils.py: Add attach_printing(). Thanks to Brian Murray |
1366 | + for the initial patch! (LP: #333582) |
1367 | + |
1368 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 24 Feb 2009 22:24:31 +0100 |
1369 | + |
1370 | +apport (0.137) jaunty; urgency=low |
1371 | + |
1372 | + * Set python-version to all, include symlinks in the package. |
1373 | + |
1374 | + -- Matthias Klose <doko@ubuntu.com> Tue, 24 Feb 2009 21:22:36 +0100 |
1375 | + |
1376 | +apport (0.136) jaunty; urgency=low |
1377 | + |
1378 | + [ Andy Whitcroft ] |
1379 | + * bin/apportcheckresume: remove originator in suspend/hibernate/resume |
1380 | + reporting. This was intended for debugging only and is now redundant. |
1381 | + * bin/apportcheckresume, apport/report.py: when collecting resume failures |
1382 | + in very early boot hal may not be running and we thus unable to obtain |
1383 | + the machine type information. Move title generation to the reporting |
1384 | + engine. |
1385 | + |
1386 | + [ Martin Pitt ] |
1387 | + * debian/local/apport-collect: Add user environment information, too |
1388 | + (LANG, PATH, SHELL). (LP: #332578) |
1389 | + |
1390 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 24 Feb 2009 14:25:21 +0100 |
1391 | + |
1392 | +apport (0.135) jaunty; urgency=low |
1393 | + |
1394 | + * problem_report.py, test_write_mime_text(): Add test cases for |
1395 | + single-line and two-line UTF-8 values, single-line and two-line |
1396 | + Unicode values and a single-line LF-terminated value. Fix handling |
1397 | + of the latter two. |
1398 | + * problem_report.py, test_write(): Add test cases for single-line |
1399 | + and two-line UTF-8 and Unicode values, and fix handling of these |
1400 | + in write(). |
1401 | + * debian/local/apport-collect: Collect package, OS, and user |
1402 | + information as well. (LP: #332578) |
1403 | + * package-hooks/source_apport.py: Robustify by using hookutils, and |
1404 | + avoid stat errors if /var/crash/* does not exist. |
1405 | + * test-hooks: Update dodgy test for uninstalled package, |
1406 | + libdb4.3-tcl is not available in Jaunty any more. |
1407 | + |
1408 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 23 Feb 2009 13:14:24 +0100 |
1409 | + |
1410 | +apport (0.134) jaunty; urgency=low |
1411 | + |
1412 | + * debian/local/apport-collect: Do not collect information for closed |
1413 | + tasks. Thanks for Brian Murray for the initial patch! (LP: #331839) |
1414 | + * apport/crashdb_impl/launchpad.py, download(): Download |
1415 | + DpkgTerminalLog.txt attachment as well. |
1416 | + * apport/report.py: If downloading a nonexisting bug pattern file |
1417 | + name succeeds and returns a HTML snippet with "404 Not Found", |
1418 | + consider this as failure. This repairs falling back to source |
1419 | + package names. (LP: #328751) |
1420 | + * apport/hookutils.py: Replace tabs with spaces. |
1421 | + |
1422 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 20 Feb 2009 11:22:15 +0100 |
1423 | + |
1424 | +apport (0.133) jaunty; urgency=low |
1425 | + |
1426 | + [ Andy Whitcroft ] |
1427 | + * apport/hookutils.py: define and include a machine type from the hardware |
1428 | + information in the report, using HAL information where available. |
1429 | + * bin/apportcheckresume: include the machine type in the suspend/hibernate |
1430 | + report title. They are generally machine specific. |
1431 | + |
1432 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 19 Feb 2009 17:49:03 +0100 |
1433 | + |
1434 | +apport (0.132) jaunty; urgency=low |
1435 | + |
1436 | + [ Martin Pitt ] |
1437 | + * Add debian/local/apport-collect: Download a Launchpad bug report, |
1438 | + get its source package, check if it has apport hooks, and if so, |
1439 | + run and upload them. Add manpage, too. (LP: #124338) |
1440 | + * debian/control: Add Suggests: python-launchpadlib; this is only |
1441 | + needed by apport-collect, thus we don't need to pull that into |
1442 | + every default installation; if it's not installed apport-collect |
1443 | + will detect and point this out. |
1444 | + * debian/control: Add ${misc:Depends} dependencies. |
1445 | + |
1446 | + [ Jonathan Riddell ] |
1447 | + * Set window icon in apport-qt |
1448 | + |
1449 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 19 Feb 2009 13:50:34 +0100 |
1450 | + |
1451 | +apport (0.131) jaunty; urgency=low |
1452 | + |
1453 | + [ Andy Whitcroft ] |
1454 | + * bin/apportcheckresume, bin/kernel_oops, cli/apport-cli, gtk/apport-gtk, |
1455 | + gtk/apport-gtk.glade, qt4/apport-qt: generalised the KernelOops |
1456 | + dialog and handling to allow suspend and hibernate failures present |
1457 | + more accurate reasons for the report. Also commonises all messages |
1458 | + in the three implementations to simplify internationalisation. |
1459 | + |
1460 | + [ Martin Pitt ] |
1461 | + * po/Makefile: Fix merge-po rule to actually work again. |
1462 | + * cli/apport-cli, qt4/apport-qt: Unify string with apport-gtk. |
1463 | + * apport/ui.py: Drop some bogus translatable strings. |
1464 | + * Update German translations. |
1465 | + |
1466 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 16 Feb 2009 19:31:41 +0100 |
1467 | + |
1468 | +apport (0.130) jaunty; urgency=low |
1469 | + |
1470 | + [ Martin Pitt ] |
1471 | + * bin/kernel_crashdump: Don't crash if vmcore.log does not exist. |
1472 | + * crashdb_impl/launchpad.py: Tag bugs with the architecture they are |
1473 | + being reported on. |
1474 | + * bin/crash-digger: Revert catching "database is locked" errors |
1475 | + during consolidation, since it just hides more fundamental errors. |
1476 | + * apport/crashdb_impl/memory.py: Improve docstrings of test suite. |
1477 | + * bin/apport-retrace: Do not try to install -dbgsym packages with |
1478 | + nonmatching versions, unless --unpack-only is used. Thanks to |
1479 | + hggdh for the initial patch! (LP: #309208) |
1480 | + |
1481 | + [ Andy Whitcroft ] |
1482 | + * bin/apportcheckresume: modify the oops title and thereby the launchpad |
1483 | + bug title to say suspend or hibernate. |
1484 | + * bin/apportcheckresume: modify the tags to bin/apportcheckresume: |
1485 | + modify the oops title and thereby the launchpad be resume+suspend or |
1486 | + resume+hibernate as appropriate. |
1487 | + * bin/apportcheckresume: include any non-free modules in the bug title. |
1488 | + |
1489 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 12 Feb 2009 22:09:35 +0100 |
1490 | + |
1491 | +apport (0.129) jaunty; urgency=low |
1492 | + |
1493 | + * bin/apport-retrace: Log broken reports. |
1494 | + * bin/apport-retrace: Do not mark bugs as invalid after they are |
1495 | + already marked as a duplicate, since that does not work in |
1496 | + Launchpad. |
1497 | + * debian/local/ubuntu-fat-chroot: Symlink /target -> /, to work |
1498 | + for crashes which appear in /target during installation. |
1499 | + * bin/apport: Move argv length/usage help before lock check, so that |
1500 | + it works if the user cannot lock /var/crash/.lock. Thanks to Kees |
1501 | + Cook! |
1502 | + * doc/package-hooks.txt: Point out apport.hookutils. |
1503 | + * apport/ui.py: Check environment variable APPORT_REPORT_THIRDPARTY |
1504 | + in addition to the 'thirdparty' configuration file option for |
1505 | + overriding the "genuine distro package" check. Thanks to Oumar |
1506 | + Aziz OUATTARA! |
1507 | + * apport/crashdb_impl/launchpad.py: In third-party mode, report bugs |
1508 | + against Launchpad projects. Thanks to Oumar |
1509 | + Aziz OUATTARA for his branch! (LP: #213454) |
1510 | + * bin/apportcheckresume: Include /var/lib/pm-utils/stress.log, too. |
1511 | + Thanks to Andy Whitcroft for the initial patch, rewrote to use |
1512 | + apport.hookutils. |
1513 | + * apport/crashdb.py, init_duplicate_db(): Run an integrity check and |
1514 | + raise exception if it fails, to avoid running the retracers on a |
1515 | + corrupt duplicate db. Add test case to |
1516 | + apport/crashdb_impl/memory.py. |
1517 | + * bin/crash-digger: Create a backup of the duplicates database right |
1518 | + after initializing it (which verifies integrity). |
1519 | + * dupdb-admin: Add new command "consolidate". |
1520 | + * apport/crashdb_impl/launchpad.py: Request bug lists with batch |
1521 | + size 300, for slight speedup of consolidation. |
1522 | + * apport/crashdb.py, duplicate_db_consolidate(): Warn about a bug |
1523 | + which is not yet fixed, but does not appear in get_unfixed(). In |
1524 | + Launchpad, this means that the bug does not have the |
1525 | + 'apport-crash' tag any more; if there are many, those would be a |
1526 | + huge time/bandwidth waste. |
1527 | + |
1528 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Jan 2009 16:04:16 +0100 |
1529 | + |
1530 | +apport (0.128) jaunty; urgency=low |
1531 | + |
1532 | + * apport/ui.py: Introduce new configuration option "thirdparty" and |
1533 | + ignore the is_distro_package() check if it is set to true. |
1534 | + * bin/apport-retrace: Call Cache.open() after Cache.update(). |
1535 | + * bin/apport-retrace: If downloading a report fails (e. g. the |
1536 | + description was invalidly modified), mark the bug as invalid with |
1537 | + a proper explanation instead of crashing, unless we are in |
1538 | + "stdout" or "output file" mode. |
1539 | + * apport/crashdb_impl/launchpad.py: Apply some heuristics to attempt |
1540 | + recovering broken descriptions as in LP #315728 (intermediate |
1541 | + blank lines, and non-apport data append). |
1542 | + |
1543 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 19 Jan 2009 17:49:55 +0100 |
1544 | + |
1545 | +apport (0.127) jaunty; urgency=low |
1546 | + |
1547 | + * bin/apportcheckresume, debian/apport.init: integrate with pm-utils to |
1548 | + detect suspend/resume failures. Thanks to Steve Conklin and Andy |
1549 | + Whitcroft. LP: #316419. |
1550 | + |
1551 | + -- Steve Langasek <steve.langasek@ubuntu.com> Tue, 13 Jan 2009 12:54:12 -0800 |
1552 | + |
1553 | +apport (0.126) jaunty; urgency=low |
1554 | + |
1555 | + * bin/apport-chroot: If --auth is specified in "login" mode, symlink |
1556 | + the file into /tmp/auth in the fakechroot. This makes it much |
1557 | + easier to interactively debug retracing. |
1558 | + * bin/apport-retrace: Exit with zero for bugs which do not have a |
1559 | + core dump, so that it does not completely stop the retracers. |
1560 | + |
1561 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 09 Jan 2009 22:49:48 +0100 |
1562 | + |
1563 | +apport (0.125) jaunty; urgency=low |
1564 | + |
1565 | + * bin/apport-chroot: Exit with apport-retraces' exit status, to |
1566 | + propagate errors upwards to crash-digger. |
1567 | + * bin/apport-retrace: Do not put outdated -dbgsym comments into the |
1568 | + bug comments. |
1569 | + * Rewrite bin/crash-digger to become much more robust and easier for |
1570 | + retracer maintainers: |
1571 | + - Now designed around cron-based maintenance: start, process all |
1572 | + pending bugs, exit. This makes memory leaks irrelevant, and gets |
1573 | + rid of all the logging, daemonizing, and looping code. |
1574 | + - Adapt stdout/stderr reporting to be suitable for cron and |
1575 | + redirecting stdout to a log file. |
1576 | + - Use lock files to avoid overlapping instances and avoid damaging |
1577 | + bugs with broken retracers after crash-digger failed. |
1578 | + - Handle chroot upgrading, so that this does not need separate |
1579 | + cronjobs any more. |
1580 | + - Drop old -i option, replace with -D/--dupcheck which is a mode |
1581 | + which *only* checks duplicates of Python crashes (no fakechroot |
1582 | + handling). |
1583 | + - Mark bug as retraced after apport-chroot retrace finished |
1584 | + successfully; the process is robust enough now to avoid enless |
1585 | + loops even if retracing fails. |
1586 | + - Adapt test-crash-digger accordingly. |
1587 | + - UbuntuSpec:apport-retracer-maintenance |
1588 | + |
1589 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 09 Jan 2009 12:14:44 +0100 |
1590 | + |
1591 | +apport (0.124) jaunty; urgency=low |
1592 | + |
1593 | + * debian/local/ubuntu-fat-chroot: Divert touch to touch.real and |
1594 | + wrap it into a shell wrapper which ignores failures. Some packages |
1595 | + use "touch -m" which fails with EPERM on directories under |
1596 | + fakechroot. Also disable gconf-schemas and polkit-auth, since they |
1597 | + do not work in fakechroots. |
1598 | + * apport/crashdb_impl/launchpad.py: Allow using staging for testing. |
1599 | + * apport/crashdb.py, mark_retrace_failed(): Add new optional |
1600 | + argument "invalid_msg", intended for crashes which cannot be |
1601 | + retraced properly (e. g. due to outdated packages). Implement this |
1602 | + in apport/crashdb_impl/launchpad.py. |
1603 | + * bin/apport-retrace: If we do not have an usable stack trace, and |
1604 | + encounter outdated package versions in the crash, close the report |
1605 | + as invalid with an appropriate comment. (LP: #308917) |
1606 | + * bin/apport-retrace: Update the apt cache before looking for, and |
1607 | + installing packages. (Part of UbuntuSpec:apport-retracer-maintenance) |
1608 | + * debian/apport.default: Enable by default again for Jaunty. Let the |
1609 | + flood begin! |
1610 | + |
1611 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 08 Jan 2009 14:05:07 +0100 |
1612 | + |
1613 | +apport (0.123) jaunty; urgency=low |
1614 | + |
1615 | + * bin/apport: Do not write the report into the log file if opening |
1616 | + the report file failed; just log the error. |
1617 | + * bin/apport: Remove a previously seen report file, so that the |
1618 | + following creation with O_EXCL actually works. |
1619 | + * apport/report.py, add_proc_info(): Only try to attach |
1620 | + /proc/pid/attr/current if we are root. This works around Python |
1621 | + segfaulting regression when encountering EPERM on read() (see |
1622 | + LP #314065). |
1623 | + * apport/report.py testsuite: Use "isofs" for module license check |
1624 | + testing instead of "usbcore", since the latter is more likely to |
1625 | + get built into the kernel. |
1626 | + * apport/report.py, add_proc_environ(): Use "PATH=(...)" instead of |
1627 | + "PATH: ..." notation, to be consistent with other environment |
1628 | + variables. Unbreaks the apport test suite. |
1629 | + |
1630 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 05 Jan 2009 18:05:38 +0100 |
1631 | + |
1632 | +apport (0.122) jaunty; urgency=low |
1633 | + |
1634 | + * apport/crashdb_impl/launchpad.py: Support extra tags in the |
1635 | + report's "Tags:" field, and set them in the Launchpad bug. |
1636 | + Document this in doc/data-format.tex. Thanks to Steve Conklin for |
1637 | + the patch! |
1638 | + |
1639 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 05 Jan 2009 10:06:49 +0100 |
1640 | + |
1641 | +apport (0.121) jaunty; urgency=low |
1642 | + |
1643 | + * debian/apport.init: Drop long obsolete setting of |
1644 | + /proc/sys/kernel/crashdump-size. |
1645 | + * debian/apport.init: Make restart actually work if the default file was |
1646 | + changed. (LP: #292402) |
1647 | + * apport/report.py, add_proc_environ(): Do not include verbatim $PATH, only |
1648 | + classify it as "default" (does not appear at all then), "custom, |
1649 | + user" (/home or /tmp in $PATH), or "custom, no user". Add appropriate test |
1650 | + case. Update the data format documentation accordingly. (LP: #245263) |
1651 | + |
1652 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 08 Dec 2008 19:37:53 -0800 |
1653 | + |
1654 | +apport (0.120) jaunty; urgency=low |
1655 | + |
1656 | + * man/apport-cli.1: Fix "sytem" typo. (LP: #288977) |
1657 | + * apport/fileutils.py: Add new function get_options() to read |
1658 | + ~/.config/apport/settings. In the future, the apport-ignore.xml file will |
1659 | + move to this directory, too. Based on idea and initial patch from Nikolay |
1660 | + Derkach. |
1661 | + * bin/apport: Check config option "unpackaged", and if it is set to True, |
1662 | + create a crash dump for unpackaged programs, too. Bump apport package |
1663 | + dependency to python-apport for this. |
1664 | + * apport/ui.py: Fix regression introduced in in 0.115 for checking |
1665 | + successful package name determination. |
1666 | + * apport/report.py: Some distro portability fixes in the test suite, thanks |
1667 | + to Nikolay Derkach! |
1668 | + * Add OpenSUSE spec file, init script, and RPM packaging backend. Thanks to |
1669 | + Nikolay Derkach! |
1670 | + * apport_python_hook.py, bin/apport: Create files in a race free way to |
1671 | + avoid symlink attacks. Thanks to Sebastian Kramer <krahmer@novell.com> for |
1672 | + finding them! |
1673 | + * problem_report.py test suite: Create debugging leftover which left /tmp/r |
1674 | + behind. |
1675 | + * apport/crashdb_impl/memory.py: Use example.com, not bug.net, since the |
1676 | + latter actually exists now. |
1677 | + * apport/hookutils.py: Add attach_network(), attach_alsa(), and |
1678 | + attach_hardware(), and add proper docstrings. Thanks to Matt Zimmerman for |
1679 | + the branch! |
1680 | + * source_linux.py hook: Use above tool functions, which greatly simplifies |
1681 | + the hook. |
1682 | + * apport/report.py: Also print exceptions from binary and source package |
1683 | + hooks, not just from common ones. |
1684 | + * apport/report.py, add_hooks_info(): Do not print an error if a source |
1685 | + package hook does not exist. |
1686 | + * apport/hookutils.py, _parse_gconf_schema(): Correctly handle bool values. |
1687 | + |
1688 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 26 Nov 2008 19:24:23 +0100 |
1689 | + |
1690 | +apport (0.119) intrepid; urgency=low |
1691 | + |
1692 | + * debian/apport.default: Disable Apport by default for the final release. |
1693 | + |
1694 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 23 Oct 2008 09:34:41 +0200 |
1695 | + |
1696 | +apport (0.118) intrepid; urgency=low |
1697 | + |
1698 | + * apport/hookutils.py: add attach_gconf() function to add non-default gconf |
1699 | + settings to a report |
1700 | + |
1701 | + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 13 Oct 2008 20:10:33 +0100 |
1702 | + |
1703 | +apport (0.117) intrepid; urgency=low |
1704 | + |
1705 | + * backends/packaging-apt-dpkg.py, is_distro_package(): Fix crash if |
1706 | + apt.Cache()[pkg].origins is None. (LP: #279353) |
1707 | + * bin/apport: Log that we are ignoring SIGABRT, since it is a common cause |
1708 | + of confusion. |
1709 | + * test-apport, create_test_process(): Fix race condition: wait until the |
1710 | + child process has fully execve()ed, to avoid coredumping it while it is |
1711 | + still running as test-apport process. |
1712 | + * apport/crashdb_impl/launchpad.py, update(): Set source package of a bug if |
1713 | + the reporter removed it and the task is against 'Ubuntu'. (LP: #269045) |
1714 | + |
1715 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 07 Oct 2008 16:38:06 +0200 |
1716 | + |
1717 | +apport (0.116) intrepid; urgency=low |
1718 | + |
1719 | + * Update AUTHORS and debian/copyright, Michael and Troy released their |
1720 | + copyright to Canonical. Properly attribute them as authors in the |
1721 | + respective files. |
1722 | + * debian/local/ubuntu-bug: Fix quoting of the command line arguments, so |
1723 | + that several options do not end up as one big argument when being passed |
1724 | + to apport-{cli,gtk,qt}. This also repairs launchpad-integration. |
1725 | + (LP: #260242) |
1726 | + |
1727 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 26 Sep 2008 10:32:45 +0200 |
1728 | + |
1729 | +apport (0.115) intrepid; urgency=low |
1730 | + |
1731 | + [ Matt Zimmerman ] |
1732 | + * Add apport/hookutils.py with some convenience functions for writing hook |
1733 | + scripts (work in progress) |
1734 | + * Extend ubuntu-bug to accept a path as an argument and look up the package |
1735 | + name |
1736 | + * Rename kernel_hook to kernel_crashdump (there are other kernel hooks) |
1737 | + * Change kernel crash report type to KernelCrash |
1738 | + * Fix automatix.py to not crash when automatix isn't installed (LP: #267004) |
1739 | + * Add bin/kernel_oops hook to capture a kernel oops (eg. via kerneloops) |
1740 | + |
1741 | + [ Martin Pitt ] |
1742 | + * Add AUTHORS file for collecting the list of major contributors and |
1743 | + copyright holders. |
1744 | + * apport/report.py: If we do not find a bug pattern file for the binary |
1745 | + package, fall back to looking for one with the source package name. |
1746 | + * run-tests: Provide a better error message if apport/packaging_impl.py does |
1747 | + not exist. |
1748 | + |
1749 | + [ Brian Murray ] |
1750 | + * apport/crashdb_impl/launchpad.py: Add regression-retracer tag to bugs |
1751 | + which seem to be a regression (duplicate, and crash happens in a later |
1752 | + version than the fix). (LP: #271876) |
1753 | + |
1754 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 18 Sep 2008 18:18:03 -0700 |
1755 | + |
1756 | +apport (0.114) intrepid; urgency=low |
1757 | + |
1758 | + [ Fabien Tassin ] |
1759 | + * apport/ui.py: Use preferred browser when it's recognized as a |
1760 | + Mozilla browser (firefox, seamonkey, flock) or Epiphany (LP: #131350) |
1761 | + |
1762 | + [ Oumar Aziz OUATTARA ] |
1763 | + * apport/crashdb.py: Add support for /etc/apport/crashdb.conf.d/*.conf crash |
1764 | + database configuration files. Document it in doc/crashdb-conf.txt. |
1765 | + * apport/ui.py: Support a new field "CrashDB" in apport reports which select |
1766 | + a non-default crash database. Document this in doc/package-hooks.txt. |
1767 | + |
1768 | + [ Martin Pitt ] |
1769 | + * apport/report.py: If a hook crashes with an exception, print it to |
1770 | + stderr, for easier debugging of hooks. |
1771 | + * apport/crashdb_impl/launchpad.py: If PackageArchitecture is 'all', fall |
1772 | + back to looking at Architecture instead of not adding a |
1773 | + needs-$ARCH-retrace tag at all. This prevented signal crashes originating |
1774 | + from e. g. Python packages from being automatically retraced. |
1775 | + |
1776 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 04 Sep 2008 10:51:24 +0200 |
1777 | + |
1778 | +apport (0.113) intrepid; urgency=low |
1779 | + |
1780 | + * apport-qt recommends update-notifier-kde instead of adept-notifier |
1781 | + |
1782 | + -- Anthony Mercatante <tonio@ubuntu.com> Thu, 28 Aug 2008 15:02:20 +0200 |
1783 | + |
1784 | +apport (0.112) intrepid; urgency=low |
1785 | + |
1786 | + * apport/crashdb_impl/launchpad.py: Update attachment handling to current |
1787 | + python-launchpad-bugs API, thanks Markus Korn! |
1788 | + * apport/ui.py: Use gnome-panel as indicator for a running GNOME session; |
1789 | + 'gnome-session' now calls itself x-session-manager, which isn't useful |
1790 | + to tell apart session types. |
1791 | + |
1792 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 07 Aug 2008 17:09:49 +0200 |
1793 | + |
1794 | +apport (0.111) intrepid; urgency=low |
1795 | + |
1796 | + The "(Kernel) OOPS, I dumped it again!" release. |
1797 | + |
1798 | + * apport/ui.py: Fix test_run_report_bug_unpackaged_pid() to work with the |
1799 | + installed run-tests from the package as well. |
1800 | + * apport/crashdb_impl/launchpad.py: Ignore broken LP bug tasks instead of |
1801 | + crashing on them. |
1802 | + * apport/report.py, add_proc_info(): Report the AppArmor or SELinux context |
1803 | + in a new ProcAttrCurrent field, read from /proc/pid/attr/current. |
1804 | + Document it in doc/data-format.tex. The field will not be added if the |
1805 | + proc attribute cannot be read or isn't present. Thanks to Steve Beattie |
1806 | + for the patch and the suggestion! |
1807 | + * debian/local/setup-apport-retracer: Switch to intrepid. |
1808 | + * debian/local/setup-apport-retracer: Fix installation of python-apt. Also |
1809 | + install apt, to avoid library version mismatches to python-apt. |
1810 | + * debian/apport.default: Enable apport by default again, now that we have |
1811 | + working retracers. |
1812 | + * apport/report.py, test_add_gdb_info_script(): Use bash, not dash as test |
1813 | + program for core dumping; stack trace is awkwardly bad with dash, so that |
1814 | + the test case cannot really work any more. |
1815 | + * Add package-hooks/source_linux.py: Package hook for collecting kernel |
1816 | + related information. By Matt Zimmerman, thank you! (LP: #251441) |
1817 | + * debian/local/ubuntu-bug.1: Fix documentation of -p, it specifies the |
1818 | + binary package name, not the source. |
1819 | + * apport/packaging.py: Add get_kernel_package() to return the actual Linux |
1820 | + kernel package name; useful if the user reports a bug against just |
1821 | + "linux". Implement it in backends/packaging-apt-dpkg.py. |
1822 | + * apport/ui.py: "Do what I mean" when filing a bug against "linux" and |
1823 | + report it against the actual kernel package. |
1824 | + * debian/local/ubuntu-bug: If just one argument is given, infer -p/-P from |
1825 | + the type of the argument. |
1826 | + * apport/ui.py: Drop the PackageArchitecture field for the uploaded report |
1827 | + if it is equal to Architecture. Adapt apport/crashdb_impl/launchpad.py to |
1828 | + fall back to Architecture, and mention the change in doc/data-format.tex. |
1829 | + * problem_report.py, write_mime(): Add new "skip_keys" argument to filter |
1830 | + out keys. Add test cases. |
1831 | + * apport/crashdb_impl/launchpad.py: Do not write the "Date:" field on |
1832 | + upload(), and fetch it from the bug metadata in download(). |
1833 | + * apport/crashdb_impl/launchpad.py, download(): Support reading bugs with |
1834 | + the "--- " separator instead of "ProblemType: ". Launchpad doesn't create |
1835 | + bugs that way ATM, but at least we have the reading part implemented now. |
1836 | + * package-hooks/source_linux.py: Drop Uname, ProcVersion, and |
1837 | + RunningKernelVersion fields, since they are all subsumed in the |
1838 | + ProcVersionSignature field. |
1839 | + * apport/ui.py, run_report_bug(): Strip spaces from package argument. |
1840 | + * apport/ui.py, add_hooks_info(): Collect OS info first, then call the |
1841 | + package hooks, so that the linux hook actually has a chance to delete the |
1842 | + Uname field. |
1843 | + * bin/kernel_hook, test-hooks: Throw away the original kernel hook which |
1844 | + we never used (and got superseded by the proper source_linux.py package |
1845 | + hook now). Replace it with the new logic of looking for |
1846 | + /var/crash/vmcore{,.log} and turning that into an apport report. |
1847 | + * debian/apport.init: Call kernel_hook if /var/crash/vmcore exists. |
1848 | + (LP: #241322) |
1849 | + * apport/ui.py: Collect information for "ProblemType: Kernel" as well, so |
1850 | + that we run the package hook. Adapt test suite to cover this. |
1851 | + * debian/control: Bump Standards-Version (no required changes). |
1852 | + * gtk/apport-gtk.glade, qt4/apport-qt: Generalize notification of kernel |
1853 | + crash, since it now happens after a boot, not right after the BUG/OOPS. |
1854 | + But in the future we want to cover both cases. |
1855 | + |
1856 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 05 Aug 2008 18:13:24 +0200 |
1857 | + |
1858 | +apport (0.110) intrepid; urgency=low |
1859 | + |
1860 | + * apport/chroot.py: In the test suite, copy some system binaries/libraries |
1861 | + into a fakechroot and exercise a lot of standard shell commands (cp, ln |
1862 | + -s, rm, rm -r, mkdir, echo, chmod, chown, etc.) with absolute/relative |
1863 | + paths. This reproduces the total breakage of rm'ing, chmod'ing, and |
1864 | + chown'ing absolute paths in hardy fakechroots. |
1865 | + * bin/crash-digger: Intercept exceptions when downloading crash reports for |
1866 | + duplicate checking, so that the retracer does not crash on malformed bug |
1867 | + reports. (LP: #205178) |
1868 | + * apport/packaging.py: Introduce a new function enabled() which reports |
1869 | + whether Apport should create crash reports. Signal crashes are controlled |
1870 | + by /proc/sys/kernel/core_pattern, but we need that to control whether |
1871 | + reports for Python, package, or kernel crashes are generated. |
1872 | + * backends/packaging-apt-dpkg.py: Provide implementation for |
1873 | + PackageInfo.enabled() for Debian/Ubuntu by evaluating /etc/default/apport. |
1874 | + Add various test cases for different configuration files and absent files. |
1875 | + * apport_python_hook.py: Do not create reports if Apport is disabled (in |
1876 | + /etc/default/apport). (LP: #222260) |
1877 | + |
1878 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 17 May 2008 12:44:21 +0200 |
1879 | + |
1880 | +apport (0.109) intrepid; urgency=low |
1881 | + |
1882 | + [ Martin Pitt ] |
1883 | + * debian/local/setup-apport-retracer: Update for some changes in Hardy. |
1884 | + |
1885 | + [ Loic Minier ] |
1886 | + * apport/report.py, add_proc_info(): also strip pathnames starting with |
1887 | + 'cow', 'squashmnt', and 'persistmnt' to allow apport to locate the |
1888 | + executable pathname, additionally to 'rofs' added in 0.75. This fixes |
1889 | + apport for packages installed on the read-write part of the unionfs mounts |
1890 | + and under UME which uses different names for the mount points. Proper fix |
1891 | + is to rewrite the pathnames in the kernel. (LP: #224168) |
1892 | + |
1893 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 23 Apr 2008 14:30:03 +0200 |
1894 | + |
1895 | +apport (0.108) hardy; urgency=low |
1896 | + |
1897 | + [ Martin Pitt ] |
1898 | + * apport-{gtk,qt,cli}: Fix handling of file references added by package |
1899 | + hooks. (LP: #205163) |
1900 | + * backends/packaging_rpm.py: Fix dependency resolution of uname(*) in the |
1901 | + RPM backend. Thanks to Patryk Zawadzki! (LP: #213018) |
1902 | + * backends/packaging_rpm.py: Fix RPM platform parsing, thanks to Patryk |
1903 | + Zawadzki! (LP: #213015) |
1904 | + * po/de.po: Fix typo (missing space). |
1905 | + * debian/apport.default: Disable Apport for the final Hardy release, since |
1906 | + it is less useful in stable releases, and drains a lot of CPU and I/O |
1907 | + power on crashes. Disabling it here instead of in update-notifier/adept is |
1908 | + more discoverable and more centralized. |
1909 | + |
1910 | + [ Daniel Hahler ] |
1911 | + * bin/apport-retrace: catch the same exceptions from Report.load() like |
1912 | + ui.load_report() does (LP: #211899) |
1913 | + * Fix uncaught exceptions in apport itself (LP: #215929): |
1914 | + - apport/REThread.py: check if "sys" exists in the except block of |
1915 | + REThread.run() |
1916 | + - apport_python_hook.py: check if "sys" exists in the finally block of |
1917 | + apport_excepthook |
1918 | + * cli/apport-cli: Fix UnboundLocalError in ui_present_crash, which rendered |
1919 | + apport-cli useless (for reporting crashes) (LP: #216151) |
1920 | + |
1921 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 16 Apr 2008 12:24:32 +0200 |
1922 | + |
1923 | +apport (0.107) hardy; urgency=low |
1924 | + |
1925 | + * cli/apport-cli: Add translator comment for difficult string. (LP: #210948) |
1926 | + * Update German translations. |
1927 | + * po/Make{vars,file}: Remove the --language=python option again, since it |
1928 | + breaks extracting strings from the glade. intltool-update currently does |
1929 | + not seem to have a way to tag a file as "language python", so add an ugly |
1930 | + workaround: Create temporary .py symlinks for gtk/apport-gtk & friends, |
1931 | + and have intltool extract them. |
1932 | + * apport/ui.py: Disallow filing a bug without specifying a package or a PID. |
1933 | + Update debian/local/ubuntu-bug.1 accordingly (apport-cli manpage was |
1934 | + already correct). (LP: #210348) |
1935 | + |
1936 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 06 Apr 2008 11:44:38 -0600 |
1937 | + |
1938 | +apport (0.106) hardy; urgency=low |
1939 | + |
1940 | + [ Martin Pitt ] |
1941 | + * apport/crashdb_impl/launchpad.py: Fix spelling mistake in p-lp-bugs API |
1942 | + (now corrected there). |
1943 | + * apport_python_hook.py: Catch IndexError for invalid sys.argv[0], too. |
1944 | + (LP: #204940) |
1945 | + * apport/ui.py: Add test_run_report_bug_unpackaged_pid() test case which |
1946 | + reports a bug against a pid which belongs to an unpackaged program. This |
1947 | + reproduces LP #203764. |
1948 | + * apport/report.py: Drop add_hooks_info() assertion on nonexisting Package |
1949 | + field, return silently instead. This conforms to the behaviour of the |
1950 | + other add_*_info() functions and avoids nasty error handling. |
1951 | + * apport/ui.py: Generate proper error message when calling with -f -p PID |
1952 | + and PID belongs to an unpackaged program. (LP: #203764). |
1953 | + |
1954 | + [ Sebastien Bacher ] |
1955 | + * po/Makevars: add the --language=python xgettext option so the translations |
1956 | + template is correctly updated on build since cdbs is using intltool-update |
1957 | + directly and not the corresponding makefile target |
1958 | + |
1959 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 01 Apr 2008 16:02:46 +0200 |
1960 | + |
1961 | +apport (0.105) hardy; urgency=low |
1962 | + |
1963 | + * apport/crashdb_impl/launchpad.py: Ignore ValueErrors when subscribing a |
1964 | + team, since these are usually due to the team already being subscribed. |
1965 | + * apport/report.py, anonymize(): Be robust against empty user names and only |
1966 | + anonymize fields which can potentially contain user specific data. |
1967 | + (LP: #195706) |
1968 | + * backends/packaging-apt-dpkg.py, get_architecture(): Return 'unknown' |
1969 | + instead of None if package architecture cannot be determined. |
1970 | + (LP: #198548) |
1971 | + * apport/ui.py, run_crash(): Intercept other IOErrors, too (such as EISDIR) |
1972 | + and print out proper error message instead of crashing. (LP: #201819) |
1973 | + * apport_python_hook.py: If the Python script has mutilated sys.argv so that |
1974 | + even sys.argv[0] does not exist any more, fall back into readlink()ing |
1975 | + /proc/pid/exe and gracefully handle the failure of that, instead of |
1976 | + crashing in the crash handler (ugh). Add test case. (LP: #198183) |
1977 | + |
1978 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 18 Mar 2008 23:04:57 +0100 |
1979 | + |
1980 | +apport (0.104) hardy; urgency=low |
1981 | + |
1982 | + [ Martin Pitt ] |
1983 | + * apport/crashdb_impl/launchpad.py, get_source_version(): re-escape the |
1984 | + package name so that it doesn't stumble over '+' and similar characters. |
1985 | + * apport/ui.py tests: assert that ProcEnviron is also included into bug |
1986 | + reports where we do not have a PID, since having the local information is |
1987 | + interesting and important (and acceptable in terms of personal |
1988 | + information). |
1989 | + * apport/report.py: Split out method add_proc_environ() for getting |
1990 | + ProcEnviron, so that we can call it separately. |
1991 | + * apport/ui.py, run_report_bug(): Add ProcEnviron if we do not have a pid to |
1992 | + file a bug against. This way, bugs filed against packages or distro also |
1993 | + get locale information. (LP: #198514) |
1994 | + * apport/fileutils.py, mark_report_seen(): Do not crash if the file does not |
1995 | + exist any more, because it was removed underneath us. (LP: #199932) |
1996 | + * apport/ui.py, test_collect_info_exepath(): Add a tuple argument and a |
1997 | + CompressedValue to the test report. This reproduces LP #199349. |
1998 | + * apport/report.py, anonymize(): Only work on string values. (LP: #199349) |
1999 | + * apport/ui.py: If a report has a field "Ignore", entirely ignore the report |
2000 | + without even presenting an explanatory error dialog (as |
2001 | + "UnsupportableReason" does). Document this in doc/package-hooks.txt. |
2002 | + (LP: #198863) |
2003 | + * debian/control: Bump Standards-Version (no changes necessary). |
2004 | + * debian/control: Fix wrongly spelt project names (Python and GTK+). Thanks |
2005 | + to lintian's scrutiny. |
2006 | + * gtk/apport-gtk-mime.desktop.in, qt4/apport-qt-mime.desktop.in: Add a main |
2007 | + category. |
2008 | + |
2009 | + [ Kees Cook ] |
2010 | + * apport/report.py: fix module license checking logic (LP: #199927). |
2011 | + - nonfree_modules: being unable to find a module should not mean the |
2012 | + module is non-free. |
2013 | + - test_module_license_evaluation: check modinfo reporting. |
2014 | + * problem_report.py: Skip atime test case if file system is mounted noatime. |
2015 | + |
2016 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 13 Mar 2008 14:01:30 +0100 |
2017 | + |
2018 | +apport (0.103) hardy; urgency=low |
2019 | + |
2020 | + * bin/apport-unpack: Print error messages instead of crashing for problems |
2021 | + like nonexisting file names passed as arguments. (LP: #185273) |
2022 | + * backends/packaging-apt-dpkg.py, is_distro_package(): Explicitly check site |
2023 | + for "ppa", so that we do not automatically file bugs for PPA packages. |
2024 | + This works around Soyuz bug LP #140412 for the time being. |
2025 | + * apport/report.py: Add standard_title() test cases for Python crashes with |
2026 | + a custom message, and a custom message with newlines. The latter |
2027 | + reproduces LP #190947. |
2028 | + * apport/report.py, standard_title(): Do not rely on a fixed position of the |
2029 | + topmost function; use iteration and regular expression matching instead. |
2030 | + (LP: #190947) |
2031 | + * apport/ui.py, parse_argv(): Specify that --pid/-P argument must be an |
2032 | + integer, to avoid exceptions when it's not. (LP: #193494) |
2033 | + * apport/report.py: Use uname -srm, not -a, to hide the hostname. (part of |
2034 | + LP #192786); also use os.uname() instead of calling the system program. |
2035 | + * problem_report.py(): Make write() work for reports with CompressedValues. |
2036 | + Add test case. |
2037 | + * apport/ui.py: Add test case test_run_crash_anonymity() which asserts that |
2038 | + the crash dump does not contain strings which can identify the user, such |
2039 | + as the user name, login name, host name, and current directory. |
2040 | + * apport/report.py: Add method anonymize() which replaces user specific |
2041 | + strings with generic ones. |
2042 | + * apport/ui.py, thread_collect_info(): Call anonymize() on the report. |
2043 | + (LP: #192786) |
2044 | + * bin/apport-retrace: Only update a bug report with new attachments if it is |
2045 | + not a duplicate. (LP: #172792) |
2046 | + * bin/apport-retrace: Print out proper error message instead of an exception |
2047 | + if trying to do write operations to the bug tracker without specifying |
2048 | + a cookie file. (LP: #146423) |
2049 | + |
2050 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 25 Feb 2008 17:47:13 +0100 |
2051 | + |
2052 | +apport (0.102) hardy; urgency=low |
2053 | + |
2054 | + [ Martin Pitt ] |
2055 | + * problem_report.py: Support reading reports with legacy zlib |
2056 | + compression in 'retain compressed values' mode (as used nowadays by |
2057 | + apport when reporting a crash). Add a test case, too. (LP: #129616) |
2058 | + * debian/control, debian/rules: Switch from python-support to |
2059 | + python-central, and use 'nomove' option so that apport works during |
2060 | + upgrades, too. (LP: #121341) |
2061 | + * debian/rules: Use dh_icons instead of dh_iconcache. |
2062 | + * debian/apport.init: Do not stop apport in any runlevel (LSB header). |
2063 | + * apport/ui.py, run_crash(): Catch zlib.error on invalidly compressed core |
2064 | + dumps. (LP: #176977) |
2065 | + * apport/ui.py: Give a meaningful error message instead of crashing if the |
2066 | + package for a crash report is not installed any more. (LP: #149739) |
2067 | + * apport/ui.py: Do not include ProcCmdline in bug reports, since these are |
2068 | + not ack'ed by the user and might contain sensitive data. (LP: #132800) |
2069 | + * apport/ui.py: Add various test cases for crash reports whose packages have |
2070 | + been uninstalled between the crash and the report. This reproduces |
2071 | + LP #186684. |
2072 | + * apport/ui.py, load_report(): Produce proper error message if |
2073 | + executable/interpreter path do not exist any more. (LP: #186684) |
2074 | + * cli/apport-cli: Intercept SIGPIPE when calling sensible-pager, to avoid |
2075 | + crash when quitting it prematurely. (LP: #153872) |
2076 | + * bin/apport-checkreports: Print out a list of program names/packages which |
2077 | + have a pending crash report. (LP: #145117) |
2078 | + * apport/ui.py, run_argv(): Add return code which indicates whether any |
2079 | + report has been processed. |
2080 | + * cli/apport-cli: If no pending crash reports are present, say so and refer |
2081 | + to --help. (LP: #182985) |
2082 | + * apport/ui.py: Waive check for obsolete packages if environment defines |
2083 | + $APPORT_IGNORE_OBSOLETE_PACKAGES. Document this in the apport-cli manpage. |
2084 | + (LP: #148064) |
2085 | + |
2086 | + [ Daniel Hahler ] |
2087 | + * .crash file integration for KDE3 (LP: #177055) |
2088 | + - debian/apport-qt.install: install added files qt4/apport-qt-mime.desktop |
2089 | + and qt4/apport-qt-mimelnk.desktop |
2090 | + * Fixed minor warnings/errors from desktop-file-validate in |
2091 | + gtk/apport-gtk-mime.desktop.in and qt4/apport-qt.desktop.in (LP: #146957) |
2092 | + |
2093 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 06 Feb 2008 12:55:53 +0100 |
2094 | + |
2095 | +apport (0.101) hardy; urgency=low |
2096 | + |
2097 | + * debian/control: Add python-xdg dependency to apport, since apport-cli |
2098 | + needs it. (LP: #177095) |
2099 | + * apport/ui.py: Add test case for reporting a report which has been |
2100 | + preprocessed by apport-retrace, i. e. has a stack trace, but no core dump |
2101 | + any more (reproducing LP #185084). |
2102 | + * apport/ui.py, run_crash(): Do not reject reports which have a stack trace, |
2103 | + but no core dump. (LP: #185084) |
2104 | + * apport/report.py: Fix test_add_gdb_info_load() test case, the temporary |
2105 | + executable was already deleted when gdb ran the second time. |
2106 | + |
2107 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 23 Jan 2008 17:48:06 +0000 |
2108 | + |
2109 | +apport (0.100) hardy; urgency=low |
2110 | + |
2111 | + * bin/crash-digger: Add option --log for logging to a file, and |
2112 | + --pidfile/--stop for daemonization. Add test cases to test-crash-digger. |
2113 | + * bin/apport: Do not re-raise exceptions about failure to create the lock |
2114 | + file, to avoid crashing in the case that another apport instance tries to |
2115 | + lock at exactly the same moment. (LP: #147237) |
2116 | + * apport/report.py testsuite: Check that our methods get along with binary |
2117 | + data which turn into CompressedValue objects after loading them from a |
2118 | + file. This reproduces LP #148305. |
2119 | + * problem_report.py, CompressedValue: Add method splitlines() since we need |
2120 | + it very often. Add test case to test_compressed_values(). (LP: #148305) |
2121 | + * problem_report.py: Add test case to check that update() works and does the |
2122 | + right thing with binary values and overwriting. This confirms that |
2123 | + importing a dictionary works. |
2124 | + * debian/local/setup-apport-retracer: Update for hardy. |
2125 | + * apport/crashdb_impl/launchpad.py: get_source_info() does not work any more |
2126 | + due to HTML changes in Launchpad, and not showing the component any more |
2127 | + on /distro/+source/package. Since we do not actually need component and |
2128 | + release name any more, rename it to get_source_version(), fix the regular |
2129 | + expression to just get the version, and adapt get_fixed_version() |
2130 | + accordingly. |
2131 | + * debian/local/setup-apport-retracer: Update default apt sources to |
2132 | + http://ddebs.ubuntu.com. |
2133 | + * apport/ui.py: Robostify cleanup of forked test processes. |
2134 | + * apport/ui.py: Sleep for 0.5 seconds after creating the test process in the |
2135 | + test suite to give /proc some time to settle down. |
2136 | + * bin/apport: Drop evaluation of CORE_* environment variables and mandate |
2137 | + calling with <pid> <signal> <core ulimit>. Drop the now obsolete |
2138 | + apport/elfcore.py. Adapt test-apport accordingly. |
2139 | + * debian/apport.init, use-local: Now call apport with %p, %s, and %c kernel |
2140 | + macros (since 2.6.24). Drop Edgy support from init script. |
2141 | + |
2142 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 21 Dec 2007 02:18:48 +0100 |
2143 | + |
2144 | +apport (0.99) hardy; urgency=low |
2145 | + |
2146 | + * cli/apport-cli, qt4/apport-qt: Fix typo 'send' -> 'sent'. |
2147 | + (LP: #139288) |
2148 | + * apport_python_hook.py: Add user info, too. Also add check for this to the |
2149 | + test suite. (LP: #145109) |
2150 | + * apport/ui.py, run_crash(): Show a proper UI error message instead of just |
2151 | + crashing with an exception if the crash report is inaccessible for the |
2152 | + invoking user. (LP: #146464) |
2153 | + * apport/crashdb_impl/memory.py: Implement mark_retraced(), |
2154 | + get_unretraced(), and get_dup_unchecked() for completeness, and define |
2155 | + _MemoryCrashDBTest also when not running file as __main__. This makes the |
2156 | + class useful for higher-level test suites. Add test cases for the new |
2157 | + functions. |
2158 | + * apport/crashdb_impl/memory.py: Support 'dummy_data' option which adds a |
2159 | + few dummy crashes by default. This is useful for external test suites |
2160 | + which cannot otherwise pre-fill the in-memory db. Add checks that this |
2161 | + works properly. |
2162 | + * bin/crash-digger: Use self.log() more consistently, and flush stdout in |
2163 | + log(), so that we do not lose logs on output redirection. |
2164 | + * Add test-crash-digger: Initial test suite for bin/crash-digger. |
2165 | + * apport/ui.py, run_crash(): Intercept CRC errors from the info collection |
2166 | + thread, which happens on broken core dumps. (LP: #132212) |
2167 | + * cli/apport-cli, ui_present_package_error(): Fix running of dialog, so that |
2168 | + reporting package problems with apport-cli actually works. (LP: #136369) |
2169 | + * apport/ui.py, run_crash(): Intercept ENOSPC and present a proper error |
2170 | + message. (LP: #145100) |
2171 | + * gtk/apport-gtk.glade: Fix title of upload progress window to comply to |
2172 | + HIG. Thanks, Bruce Cowan. (LP: #144782) |
2173 | + * qt4/apport-qt: Fix Unicode <-> UTF-8 conversion. Thanks, Daniel Hahler! |
2174 | + (LP: #148177) |
2175 | + * apport/ui.py: Only import xdg.DesktopEntry when a .desktop file has been |
2176 | + found in the affected package. This avoids the dependency on servers with |
2177 | + just apport-cli. Thanks, Matthias Gug! (LP: #130013) |
2178 | + * apport/fileutils.py: Do not fail if there are no packages installed which |
2179 | + have one or several .desktop files. Thanks, Matthias Gug! |
2180 | + |
2181 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 28 Oct 2007 18:32:07 -0400 |
2182 | + |
2183 | +apport (0.98) gutsy; urgency=low |
2184 | + |
2185 | + [ Martin Pitt ] |
2186 | + * debian/local/setup-apport-retracer: launchpadBugs -> launchpadbugs |
2187 | + (recently renamed Python package in python-launchpad-bugs). |
2188 | + * apport/crashdb_impl/launchpad.py, test examples: Do not duplicate to bug |
2189 | + #1, that generates a huge amount of spam. Use another test bug. |
2190 | + * apport/crashdb_impl/launchpad.py, download(): Use Bug.description_raw, |
2191 | + since LP mangles spaces in .description. Bump p-lp-bugs dependency. |
2192 | + * apport/crashdb_impl/launchpad.py, close_duplicate(): Explicitly set the |
2193 | + duplicate after removing attachments, since the new LP does not allow any |
2194 | + modification of duplicate bugs. |
2195 | + * bin/crash-digger: Only consolidate the duplicate DB when -i is given (i. |
2196 | + e. usually only on one running instance). |
2197 | + |
2198 | + [ Colin Watson ] |
2199 | + * Use bugs.launchpad.net for +filebug and +bugs requests. (LP: #138090) |
2200 | + |
2201 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 01 Oct 2007 14:35:07 +0200 |
2202 | + |
2203 | +apport (0.97) gutsy; urgency=low |
2204 | + |
2205 | + [Martin Pitt] |
2206 | + * problem_report.py: Coerce CompressedValue.__len__() to return an int to |
2207 | + work on Python 2.4, too. |
2208 | + * debian/local/setup-apport-retracer: Adapt ddeb apt source for the move |
2209 | + from ~pitti to ~ubuntu-archive. |
2210 | + |
2211 | + [Markus Korn] |
2212 | + * port to new python-launchpad-bugs API. |
2213 | + |
2214 | + [Daniel Holbach] |
2215 | + * small fixes to the port. |
2216 | + * debian/control: bumped python-launchpad-bugs Depends to >= 0.2.2. |
2217 | + |
2218 | + -- Daniel Holbach <daniel.holbach@ubuntu.com> Tue, 04 Sep 2007 11:24:28 +0200 |
2219 | + |
2220 | +apport (0.96) gutsy; urgency=low |
2221 | + |
2222 | + * Create man pages for apport-cli, apport-chroot, and dupdb-admin. |
2223 | + * apport/fileutils.py, find_file_package(): Try to resolve symlinks in the |
2224 | + directory path. (LP: #125551) |
2225 | + * apport/crashdb_impl/launchpad.py, debian/local/setup-apport-retracer: Use |
2226 | + packaging.get_system_architecture() (which is dpkg --print-architecture on |
2227 | + Debian/Ubuntu) instead of uname, so that this does the right thing on lpia. |
2228 | + * problem_report.py, write_mime(): Use base64 encoding for gzipped |
2229 | + attachments, to not screw up mail servers. Thanks to Tim Yamin for this |
2230 | + patch! |
2231 | + * apport/crashdb.py: Drop the last argument (-1), since it is the default |
2232 | + anyway and did not yet exist on Python 2.4. |
2233 | + |
2234 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 21 Aug 2007 14:11:48 +0200 |
2235 | + |
2236 | +apport (0.95) gutsy; urgency=low |
2237 | + |
2238 | + * general-hooks/automatix.py: Remove hashbang, it's not an executable |
2239 | + script. |
2240 | + * apport/report.py: Support system-wide blacklisting: |
2241 | + /etc/apport/blacklist.d/. Add test cases. |
2242 | + * Add doc/README.blacklist: Document blacklist.d/, install it there in |
2243 | + setup.py. |
2244 | + * debian/rules: Blacklist wine-preloader, so that we ignore wine crashes |
2245 | + until an appropriate way is found to deal with them. (Point 6 of |
2246 | + apport-better-retracing spec.) |
2247 | + |
2248 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 11 Aug 2007 18:10:54 +0200 |
2249 | + |
2250 | +apport (0.94) gutsy; urgency=low |
2251 | + |
2252 | + * doc/data-format.tex: Some updates to incorporate feedback from Gnome |
2253 | + upstream: |
2254 | + - Do not talk about "Distributions" any more, but "Operating systems". |
2255 | + Gnome is used on non-Linux OSs, too. |
2256 | + - Split "DistroRelease:" field into "OS:" and "OSRelease:". |
2257 | + - Explicitly mention that CoreDump, StackTrace etc. can also contain |
2258 | + minidump output. |
2259 | + - Increase document version to 0.2. |
2260 | + * apport/report.py, obsolete_packages(): Fix crash when apt does not know an |
2261 | + available version of a package. (LP: #128176) |
2262 | + * test-apport: Add check that apport aborts immediately if another apport |
2263 | + instance is already running. Also test that a symlink attack on the lock |
2264 | + file is not possible. |
2265 | + * bin/apport: Abort running several apport instances at the same time, by |
2266 | + lockf()'ing /var/crashes/.lock and aborting on failure. (LP: #119622) |
2267 | + * Add bin/gcc_ice_hook: Script to create an apport report for a gcc ICE |
2268 | + (internal compiler exception). Add test cases to test-hooks, and ship it |
2269 | + in the 'apport' package. (LP: #125551) |
2270 | + * run-tests: In 'local' mode, only explicitly run the apt/dpkg |
2271 | + implementation instead of backends/*, since the RPM ones don't have tests |
2272 | + yet. |
2273 | + * apport/crashdb.py: Add a second optional parameter to upload() to specify |
2274 | + an upload progress callback function. Adapt the declarations in the |
2275 | + Launchpad and Memory implementations, too. |
2276 | + * apport/crashdb_impl/launchpad.py, upload(): Pass upload progress callback |
2277 | + handler to launchpadBugs.storeblob.upload(), which supports this since |
2278 | + version 0.2~39. Bump dependency to it accordingly. |
2279 | + * apport/ui.py, file_report(): Define an upload progress callback handler, |
2280 | + pass it to the crashdb upload(), and feed ui_set_upload_progress() with |
2281 | + some actual data. (LP: #91521) |
2282 | + * problem_report.py: Remove support for reading bz2 compressed binary data. |
2283 | + That was only relevant during edgy's development cycle. |
2284 | + * apport/report.py, test_add_proc_info(): Fix determination of /bin/zgrep |
2285 | + interpreter. |
2286 | + * problem_report.py: Switch encoding of binary values from bare zlib to |
2287 | + proper gzip format, since this is much more useful when reusing the |
2288 | + compressed value. Retain support for zlib-only reports. Add test cases for |
2289 | + both old and new encodings, and adapt the other test cases for the new |
2290 | + format. Update doc/data-format.tex accordingly. |
2291 | + * problem_report.py, write(): Add new permitted 'binary' argument value |
2292 | + 'compressed', which retains gzip compressed binary values instead of |
2293 | + unpacking them transparently. Add test cases. |
2294 | + * problem_report, write_mime(): Eliminate unnecessary usage of StringIO. |
2295 | + * problem_report, write_mime(): Make function work for compressed binary |
2296 | + values. Add test case. |
2297 | + * apport/report.py, add_gdb_info(): Make function work if CoreDump is a |
2298 | + compressed value. |
2299 | + * apport/ui.py: Load crash report with keeping compressed binaries. This |
2300 | + avoids loading the entire uncompressed core dump into memory, and avoids |
2301 | + recompressing it all over again for generating the crash database upload |
2302 | + MIME document. This greatly speeds up crash reporting, too. (LP: #98562) |
2303 | + |
2304 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 31 Jul 2007 21:32:00 +0200 |
2305 | + |
2306 | +apport (0.93) gutsy; urgency=low |
2307 | + |
2308 | + * apport/crashdb.py: Set sqlite connect timeout to two hours, instead of the |
2309 | + default 5 seconds. Previously, one retracer always crashed when the other |
2310 | + was consolidating the database. |
2311 | + * bin/dupdb-admin, command_dump(): Correctly interpret empty version strings |
2312 | + as 'fixed in unknown verrsion', not 'unfixed'. |
2313 | + * apport/crashdb_impl/launchpad.py: Fix typo in bug comment string. |
2314 | + * apport/crashdb_impl/launchpad.py: Add function get_source_info() which |
2315 | + parses out release, version, and component from |
2316 | + https://launchpad.net/$DISTRO/+source/$PACKAGE. |
2317 | + * apport/crashdb_impl/launchpad.py, get_fixed_version(): If a bug is fixed, |
2318 | + return the current version (as approximation of the version where the bug |
2319 | + was fixed), instead of an empty string (which meant 'fixed in unknown |
2320 | + version'). [apport-crash-duplicates spec] |
2321 | + |
2322 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 25 Jul 2007 17:04:27 +0200 |
2323 | + |
2324 | +apport (0.92) gutsy; urgency=low |
2325 | + |
2326 | + * bin/crash-digger: Do not crash if duplicate db is locked when attempting |
2327 | + to consolidate it. This happens often because in the DC we have two |
2328 | + parallel instances (for amd64 and i386). |
2329 | + * Move ubuntu-fat-chroot from bin/ to debian/local/, since it is so heavily |
2330 | + Ubuntu specific. |
2331 | + * debian/local/ubuntu-fat-chroot: Use diversions for the binaries we want to |
2332 | + disable, so that chroot upgrades do not trash the modifications. |
2333 | + * debian/local/setup-apport-retracer: launchpad-crash-digger -> |
2334 | + crash-digger. |
2335 | + * bin/crash-digger: Add option -i/--arch-indep-dupcheck to explicitly enable |
2336 | + duplicate checking of arch-independent crashes like Python exceptions. We |
2337 | + only want to process them on one architecture to avoid scattering the |
2338 | + duplicate database. |
2339 | + * apport/crashdb_impl/launchpad.py, get_unfixed(): Search for 'apport-crash' |
2340 | + tag, not 'apport'. |
2341 | + * bin/apport-unpack: Fix format string in error message. |
2342 | + * apport/ui.py, __init__(): Intercept ImportError, which can happen for |
2343 | + crashes during system upgrades. (LP: #124354) |
2344 | + * Add general-hooks/automatix.py: Refuse to send problem reports if |
2345 | + automatix is installed. |
2346 | + * doc/package-hooks.txt: Do not document UnsupportableReason, since it does |
2347 | + not make sense to set it in package hooks (it is checked before calling |
2348 | + the hooks). Hooks should use UnreportableReason only. |
2349 | + * apport/ui.py, test_run_crash_package(): Check that 'Package' problem |
2350 | + reports collect additional information, too. |
2351 | + * apport/ui.py, collect_info(): Collect additional information for 'Package' |
2352 | + problem reports, too. |
2353 | + * Revive preloadlib/: |
2354 | + - Remove PIPE_CORE #ifdefs and make them the default. We do not need to |
2355 | + support the Edgy kernel patches in this version any more. |
2356 | + - Install signal handler for SIGABRT, too. |
2357 | + - Read core ulimit, pass it to apport in CORE_REAL_RLIM, and set it to |
2358 | + zero for the program, since we do not actually want the kernel to write |
2359 | + core files when we pipe the core dump to apport. |
2360 | + - test-apport: Pass APPORT_REPORT_DIR to the manually called apport |
2361 | + instance in the memory clipping test; otherwise it'll write into |
2362 | + /var/crash/, which we do not consider in library mode. |
2363 | + * apport/crashdb_impl/launchpad.py, __init__(): Only do the "download bug |
2364 | + #2" hack if we actually have an authentication cookie. Thus, do it only on |
2365 | + the retracing servers, not on the client side. (LP: #125142) |
2366 | + * apport/report.py, crash_signature(): Generate a signature for one-line |
2367 | + Python tracebacks, too. This sometimes seems to happen, e. g. LP#124588. |
2368 | + (LP: #125020) |
2369 | + * apport/crashdb_impl/launchpad.py, update(): Set bug importance to Medium |
2370 | + if retracing was successful. (LP: #106379) |
2371 | + |
2372 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 24 Jul 2007 21:50:34 +0200 |
2373 | + |
2374 | +apport (0.91) gutsy; urgency=low |
2375 | + |
2376 | + * bin/apport: Remove code that supported the Edgy kernel way of core dump |
2377 | + passing. Also factorize the CORE_REAL_RLIM evaluation, since it is likely |
2378 | + to change in the near future. |
2379 | + * apport/crashdb_impl/launchpad.py, close_duplicate(): Delete some |
2380 | + attachments, as specified in apport-crash-duplicates spec, and make the |
2381 | + bug public afterwards. |
2382 | + * apport/crashdb_impl/launchpad.py, close_duplicate(): If the master bug is |
2383 | + already duped to yet another bug, mark the bug to that one instead of the |
2384 | + master. |
2385 | + * apport/crashdb.py: Split out duplicate_db_last_consolidation() for getting |
2386 | + the date (or seconds since) the last consolidation, so that we can use it |
2387 | + externally. |
2388 | + * apport/crashdb.py: Add duplicate_db_change_master_id() to change the |
2389 | + master ID of a crash. Add test case to apport/crashdb_impl/memory.py. |
2390 | + * Add bin/dupdb-admin: Initial version of duplicate db CLI app; can dump the |
2391 | + db, display consolidation state, and change master bug IDs for now. Ship |
2392 | + it in apport-retrace. |
2393 | + * apport/crashdb.py, duplicate_db_last_consolidation(): Fix timedelta |
2394 | + seconds calculation to actually take the days into account, too. |
2395 | + * bin/crash-digger: Fix dumping of dup db after consolidation. |
2396 | + * apport/ui.py: |
2397 | + - test_run_report_bug_package(): Add test case for calling the UI in bug |
2398 | + filing mode with an invalid package name. |
2399 | + - run_report_bug(): Do not crash on invalid package name, generate an |
2400 | + error message instead. (LP: #123644) |
2401 | + * apport/fileutils.py, mark_report_seen(): Do not crash if the file has |
2402 | + already been deleted underneath us. (LP: #122347) |
2403 | + * apport/ui.py, run_report_bug(): Do not crash if the target process runs as |
2404 | + a different user. Print a proper error message instead. Add test case |
2405 | + test_run_report_bug_noperm_pid(). (LP: #121121) |
2406 | + * apport/fileutils.py, likely_packaged(): Ignore /var/lib/schroot. Add test |
2407 | + case. (LP: #122859) |
2408 | + * apport/ui.py, open_url(): Intercept weird race condition for os.close() |
2409 | + trying to close an already invalidated fd. (LP: #123180) |
2410 | + |
2411 | + Merge the fedora branch, thanks to Will Woods <wwoods@redhat.com>: |
2412 | + |
2413 | + * Add apport.init.fedora: Fedora specific init script. |
2414 | + * Add apport.spec: RPM build recipe. |
2415 | + * Add backends/packaging_rpm.py: Partial implementation of the packaging |
2416 | + backend for RPM which applies to all RPM-based distros. |
2417 | + * Add backends/packaging_fedora.py: Concrete packaging backend |
2418 | + implementation for Fedora. |
2419 | + * apport/elfcore.py: Classes for parsing general ELF files, and information |
2420 | + from core dumps. |
2421 | + * bin/apport: Fall back to reading signal number and PID directly from the |
2422 | + core file (via elfcore.py) if CORE_SIGNAL and CORE_PID are not defined (i. |
2423 | + e. when running on a non-Ubuntu kernel). |
2424 | + * crashdb.conf: Add stanzas for Fedora and a 'debug' database which uses the |
2425 | + 'memory' crashdb implementation. |
2426 | + |
2427 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 14 Jul 2007 15:08:35 +0200 |
2428 | + |
2429 | +apport (0.90) gutsy; urgency=low |
2430 | + |
2431 | + * apport/ui.py, load_report(): Catch IOError, too. LP: #118827 |
2432 | + * Merge apport-cli package into apport itself. The program itself is just 3 |
2433 | + kB compressed, and it's not worth wasting another 34 kB compressed |
2434 | + changelog for this tiny bit. |
2435 | + * apport/report.py, obsolete_packages(): Use the version comparison from the |
2436 | + packaging system instead of just testing for inequality. This catches zero |
2437 | + epochs. Thanks to Will Woods <wwoods@redhat.com>! |
2438 | + * apport/ui.py: Add option -c/--crash-file to run the UI with a particular |
2439 | + crash file (which can be anywhere) instead of all pending crashes in |
2440 | + /var/crash/. |
2441 | + * Add xdg-mime/apport.xml: XDG MIME type definition for .crash files. |
2442 | + * Add gtk/apport-gtk-mime.desktop.in: Link text/x-apport MIME type to |
2443 | + apport-gtk -c, so that .crash files can be reported with Gnome. |
2444 | + * Add debian/apport.links: Install an icon symlink for the MIME type. |
2445 | + * apport/ui.py: Do not ask the initial "Do you want to report this?" |
2446 | + question when being invoked with --crash-file. |
2447 | + * po/POTFILES.in: Add missing cli/apport-cli. |
2448 | + * po/de.po: Updated for apport-cli. |
2449 | + * cli/apport-cli: Add option for keeping the report file without sending it, |
2450 | + and to display its path. This is for sending the report later, copying |
2451 | + it from a server to a workstation with internet connection, etc. |
2452 | + * apport/crashdb_impl/launchpad.py: Simplify _subscribe_triaging_team(), now |
2453 | + that we do not differ between main and universe policies any more. |
2454 | + * apport/report.py: Support another hook directory |
2455 | + /usr/share/apport/general-hooks/ for scripts which are run for every |
2456 | + problem report. This was requested for adding e. g. AppArmor logs, etc. |
2457 | + Add test cases. |
2458 | + * Add debian/apport.dirs again to ship that hook directory. |
2459 | + * doc/package-hooks.txt: Document the general hooks. |
2460 | + |
2461 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Jul 2007 21:10:19 +0100 |
2462 | + |
2463 | +apport (0.89) gutsy; urgency=low |
2464 | + |
2465 | + Implement private crash bug handling, according to |
2466 | + https://wiki.ubuntu.com/CrashReporting: |
2467 | + |
2468 | + * apport/crashdb_impl/launchpad.py: |
2469 | + - upload(): If we have an Ubuntu bug, mark it as private and only |
2470 | + subscribe 'apport' (the 'Apport retracing service' user). |
2471 | + - Add function _subscribe_triaging_team() which subscribes |
2472 | + ubuntu-crashes-main for source packages in Ubuntu main or restricted, or |
2473 | + ubuntu-crashes-universe for other packages. It does not touch non-Ubuntu |
2474 | + bugs, since these are not marked private by default and are outside of |
2475 | + the scope of this spec. |
2476 | + - update(), _mark_dup_checked(): Call _subscribe_triaging_team(). |
2477 | + - Note: This entire spec is a gross hack, and Ubuntu derivatives do not |
2478 | + benefit from it at all. We have to live with this until LP grows a real |
2479 | + crash database. |
2480 | + - get_distro_release(): Make this function work with private bugs, too, by |
2481 | + using p-lp-bugs' safe_urlopen(). |
2482 | + |
2483 | + Bug fixes: |
2484 | + |
2485 | + * apport/crashdb_impl/launchpad.py: Revert simplification change of 0.85: |
2486 | + BugList returns a set of strings, not integers; due to non-identity they |
2487 | + do not work with the usual set operations. |
2488 | + * apport/crashdb_impl/launchpad.py: Add function get_source_component() to |
2489 | + query Launchpad for the component of a given distribution and source |
2490 | + package. (This will be required for implementing crash-reporting). |
2491 | + * backends/packaging-apt-dpkg.py, _search_contents(): Package list is |
2492 | + actually comma separated, only take the first item. This fixes retracing |
2493 | + of e. g. #124139. |
2494 | + * backends/packaging-apt-dpkg.py, _search_contents(): Fix package name |
2495 | + parsing for non-main components. This fixes retracing of e. g. #124111. |
2496 | + * apport/report.py, _read_maps(): Revert ptrace hack when maps cannot be |
2497 | + read. maps file is now protected based on process ownership, not ptracing. |
2498 | + * apport/crashdb.py, apport/crashdb_impl/launchpad.py, |
2499 | + apport/crashdb_impl/memory.py: Remove official interface |
2500 | + mark_dup_checked(), as it should only be an internally used function. Add |
2501 | + report parameter, since we will need it there in the future. Remove |
2502 | + explicit call from bin/crash-digger and instead change check_duplicate() |
2503 | + to call it on its own. |
2504 | + * apport/crashdb_impl/launchpad.py, download(): Replace dodgy parsing of |
2505 | + fields from the description with proper code, so that multi-line fields |
2506 | + are read correctly, too. |
2507 | + |
2508 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 06 Jul 2007 11:19:22 +0200 |
2509 | + |
2510 | +apport (0.88) gutsy; urgency=low |
2511 | + |
2512 | + * po/de.po: Update. |
2513 | + * backends/packaging-apt-dpkg.py, _search_contents(): Do not check the |
2514 | + return value of zgrep. It usually errors out with 'stdout: broken pipe' |
2515 | + when called with -m1. |
2516 | + * bin/crash-digger: Mark a bug as retraced if DistroRelease: cannot be |
2517 | + determined. Those are bugs apport cannot handle. |
2518 | + * backends/packaging-apt-dpkg.py, get_source_tree(): Call apt-get source |
2519 | + with --assume-yes to not block on VCS confirmations. |
2520 | + * apport/crashdb.py: Add interface mark_retrace_failed(). Implement it in |
2521 | + apport/crashdb_impl/launchpad.py. |
2522 | + * bin/apport-retrace: If retraced report does not have a crash signature, |
2523 | + mark it as failed with above new function. Bump python-apport dependency |
2524 | + for this. |
2525 | + * apport/crashdb_impl/launchpad.py, update(): Delete CoreDump.gz attachment |
2526 | + if the retrace was successful (i. e. if the report has a crash signature). |
2527 | + * apport/ui.py, test_run_crash(): Set the message box title, text, and |
2528 | + severity as assertion message if the run_crash() test fails, so that you |
2529 | + know why it fails. This usually happens if libc6 or another dependency of |
2530 | + the test crash is out of date. |
2531 | + * gtk/apport-gtk.glade: Mark string as translatable. LP: #119621 |
2532 | + |
2533 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 03 Jul 2007 21:38:05 +0200 |
2534 | + |
2535 | +apport (0.87) gutsy; urgency=low |
2536 | + |
2537 | + * apport/report.py: |
2538 | + - test_gen_stacktrace_top(): Add test case for unwinding a Gnome assertion |
2539 | + (g_logv(), g_assert_warning() and similar), see LP #123462. |
2540 | + - _gen_stacktrace_top(): Generalize for unwinding multiple functions and a |
2541 | + set of function names, and add the Gnome assertion ones. |
2542 | + |
2543 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 02 Jul 2007 11:00:44 +0200 |
2544 | + |
2545 | +apport (0.86) gutsy; urgency=low |
2546 | + |
2547 | + * test-apport: Check that apport does not create reports for emtpy core |
2548 | + dumps. |
2549 | + * problem_report.py: Introduce a fourth optional parameter "fail_on_empty" |
2550 | + to file pointer tuples which causes write() to raise an IOError if no data |
2551 | + was read. Add test cases. |
2552 | + * bin/apport: Enforce non-emptyness of CoreDump. |
2553 | + * problem_report.py: Add test case for delayed piping of data passed as file |
2554 | + object pointers. This was supposed to explain the reason for getting bugs |
2555 | + with zero-byte core dumps, but already works correctly. |
2556 | + * apport/report.py, check_ignored(): round the mtime to an int (just like |
2557 | + mark_ignore() does), to not get wrong results on file systems that support |
2558 | + subsecond file timestamps. This fixes running the test suite on the live |
2559 | + CD. |
2560 | + * test-apport: Clarify assertion message if /var/crash is not empty. |
2561 | + |
2562 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 28 Jun 2007 19:14:36 +0200 |
2563 | + |
2564 | +apport (0.85) gutsy; urgency=low |
2565 | + |
2566 | + * apport/crashdb_impl/launchpad.py: BugList.bugs is already a set, simplify |
2567 | + code a bit. |
2568 | + * debian/control: Add dpkg-dev dependency to apport-retrace, for getting |
2569 | + dpkg-source. |
2570 | + * apport/report.py, crash_signature(): Allow ':' and '~' as part of function |
2571 | + names to cover C++. Adapt test case to cover this. |
2572 | + * apport/report.py test suite: Do not assume that /bin/zgrep uses /bin/sh, |
2573 | + it was recently changed to use bash. Directly read the interpreter from |
2574 | + the shebang line. |
2575 | + * bin/apport-chroot, command_upgrade(): Supply -y to 'apt-get upgrade' also |
2576 | + in verbose mode. |
2577 | + * bin/apport-chroot, command_upgrade(): Run 'apt-get clean' before |
2578 | + regenerating the chroot tarball. |
2579 | + * backends/packaging-apt-dpkg.py, get_dependencies(): Fix crash when |
2580 | + encountering a virtual package. LP: #122274 |
2581 | + * apport/report.py, obsolete_packages(): Do not consider virtual packages as |
2582 | + obsolete. |
2583 | + * apport/crashdb_impl/launchpad.py: Do a bogus call to Bug() in the ctor. |
2584 | + This initializes python-launchpad-bugs to use a cookie for the urlopen in |
2585 | + BugList, so that get_unretraced() and get_dup_unchecked() return private |
2586 | + bugs, too. This works around LP #122126. |
2587 | + |
2588 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 25 Jun 2007 16:38:43 +0200 |
2589 | + |
2590 | +apport (0.84) gutsy; urgency=low |
2591 | + |
2592 | + * apport/crashdb.py: Add new abstract methods: |
2593 | + - get_unretraced() and mark_retraced(id) to get a list of crashes that |
2594 | + need to be retraced and chalk them off. |
2595 | + - get_dup_unchecked() and mark_dup_checked() to get a list of crashes that |
2596 | + need to be checked for being a duplicate and chalk them off. This is |
2597 | + aimed at crashes which do not need retracing, such as unhandled Python |
2598 | + exceptions. |
2599 | + * apport/crashdb_impl/launchpad.py: Implement above methods for launchpad |
2600 | + (moving the code from bin/launchpad-crash-digger). |
2601 | + * apport/crashdb_impl/launchpad.py: Set "need-duplicate-check" tag for |
2602 | + Python crashes. |
2603 | + * apport/crashdb_impl/launchpad.py, download(): Fetch Traceback.txt, too, so |
2604 | + that we can do duplicate checking for Python crashes. |
2605 | + * bin/launchpad-crash-digger: Drop Launchpad specific code and replace it |
2606 | + with calls to above new functions. Rename to bin/crash-digger. Also rename |
2607 | + all 'cookie' to 'auth' (as happened with the other applications earlier). |
2608 | + * bin/crash-digger: Do duplicate checking for needs-duplicate-check crash |
2609 | + bugs (such as Python crashes). |
2610 | + * bin/apport-retrace, bin/crash-digger: More language cleanup; we should |
2611 | + stop talking about 'bugs' and use 'crash' consistently. |
2612 | + |
2613 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 14 Jun 2007 19:50:24 +0200 |
2614 | + |
2615 | +apport (0.83) gutsy; urgency=low |
2616 | + |
2617 | + * apport/crashdb.py: Separate abstract from implemented functions. |
2618 | + * apport/crashdb.py, apport/packaging.py, apport/ui.py: Use |
2619 | + NotImplementedError instead of Exception in the abstract methods. |
2620 | + * apport/packaging.py: Add interface compare_versions() for comparing |
2621 | + package version numbers. |
2622 | + * backends/packaging-apt-dpkg.py: Implement compare_versions() using |
2623 | + apt.VersionCompare(), add some test cases. |
2624 | + * apport/report.py: Fix typo: 'none' -> 'None'. |
2625 | + * apport/chroot.py: Do not include /usr/local/lib and /usr/lib in |
2626 | + LD_LIBRARY_PATH, just /lib, so that we still use the libc from outside, |
2627 | + but e. g. libxml2 from inside the chroot. |
2628 | + |
2629 | + https://blueprints.launchpad.net/ubuntu/+spec/apport-crash-duplicates: Merge |
2630 | + crash-dups branch, which implements automatic crash duplicate detection: |
2631 | + |
2632 | + * apport/crashdb.py: Add methods for crash duplicate detection. |
2633 | + * apport/crashdb_impl/memory.py: Change internal data management to track |
2634 | + fixed version and duplicates. |
2635 | + * apport/crashdb_impl/memory.py: Add a test suite for all methods, including |
2636 | + the duplicate detection API of the base CrashDatabase (since it is |
2637 | + much easier to test it here, on an actual implementation). |
2638 | + * debian/pyversions: Bump minimal Python version to 2.5, since this starts |
2639 | + providing the sqlite3 module. |
2640 | + * apport/crashdb_impl/launchpad.py: Implement new methods required for crash |
2641 | + duplicate detection. get_fixed_version() does not approximate version |
2642 | + tracking yet; it just returns '' for fixed bugs (which means 'fixed, but |
2643 | + unknown version'). Bump python-launchpad-bugs dependency for this to |
2644 | + ensure the availability of Bug.mark_duplicate(). |
2645 | + * bin/apport-retrace: Add option --duplicate-db which specifies the path to |
2646 | + the duplicate sqlite database and enables duplicate detection. |
2647 | + * Abin/apport-chroot: Add option --duplicate-db. If a file is given, symlink |
2648 | + it into the chroot and pass --duplicate-db to apport-retrace. |
2649 | + * bin/launchpad-crash-digger: Add --duplicate-db and pass it to |
2650 | + apport-chroot. |
2651 | + * apport/crashdb.py: Track last run of duplicate_db_consolidate() in an |
2652 | + extra table and add a method duplicate_db_needs_consolidation() which |
2653 | + returns True if the last run was more than a given number of seconds ago. |
2654 | + Add test cases to apport/crashdb_impl/memory.py. |
2655 | + * bin/launchpad-crash-digger, fill_pool(): Check whether the duplicate |
2656 | + database needs consolidation (i. e. updating the bug states to the reality |
2657 | + in the bug tracker) and if so, trigger it. |
2658 | + |
2659 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 13 Jun 2007 13:09:57 +0200 |
2660 | + |
2661 | +apport (0.82) gutsy; urgency=low |
2662 | + |
2663 | + * Add bin/ubuntu-fat-chroot: Script to install a set of commonly needed |
2664 | + packages into a minimal Ubuntu chroot (as created by apport-chroot). This |
2665 | + requires some hacking of postinst and /usr/sbin/ files in between the |
2666 | + installation stages and thus deserves a script on its own. |
2667 | + * apport/packaging.py: |
2668 | + - Add "uninstalled" option to get_file_package(). If set to True, this |
2669 | + will do an expensive search of files/packages which are not installed. |
2670 | + - Add interface "set_mirror(URL)" for functions which need to retrieve |
2671 | + packages and data from distribution mirrors. |
2672 | + * backends/packaging-apt-dpkg.py: Implement "uninstalled" option and |
2673 | + "set_mirror(URL)", add test cases. |
2674 | + * bin/apport-retrace: Use "uninstalled" option now to install packages and |
2675 | + corresponding -dbgsyms for uninstalled files mentioned in ProcMaps |
2676 | + (Point 1 of apport-better-retracing spec). Bump python-apport dependency. |
2677 | + * apport/packaging.py: Add interface get_available_version(package). |
2678 | + * backends/packaging-apt-dpkg.py: Implement get_available_version(), add |
2679 | + shallow test case. |
2680 | + * apport/report.py: Add function obsolete_packages() to return packages in |
2681 | + Package: and Depends: which are not up to date. Add test cases. |
2682 | + * apport/ui.py, thread_collect_info(): For crashes, call obsolete_packages() |
2683 | + and set UnreportableReason: if there are any (Point 2 of |
2684 | + apport-better-retracing spec). |
2685 | + * apport/ui.py, thread_collect_info(): call standard_title() and add it to |
2686 | + the report as 'Title' field. This is useful if reporters modify the |
2687 | + default title (per request of Brian Murray, thanks). Add test case. |
2688 | + * apport/ui.py: Fix declaration of the test suite's |
2689 | + ui_set_upload_progress(). Funny that this has never been triggered before. |
2690 | + * apport/report.py, add_gdb_info(): Split out StacktraceTop generation into |
2691 | + separate funtion _gen_stacktrace_top(), so that we can test it separately. |
2692 | + * apport/report.py, _gen_stacktrace_top(): Step back from the crashed |
2693 | + program's own signal handlers, since those are generally not useful for |
2694 | + the purposes of StacktraceTop and only impede duplicate matching |
2695 | + (Point 4 of apport-better-retracing spec). Add various test cases. |
2696 | + * apport/report.py: Add method crash_signature() to calculate an unique |
2697 | + identifier of a signal or Python crash, to be used for duplicate |
2698 | + detection. Add various test cases. |
2699 | + * apport/packaging.py: Add interface get_source_tree() to fetch and unpack a |
2700 | + source package to a given directory, optionally specifying a particular |
2701 | + version. |
2702 | + * backends/packaging-apt-dpkg.py: Implement get_source_tree(). This has a |
2703 | + rather crude 'call apt-get source and guess about directories' |
2704 | + implementation until python-apt learns about doing this directly and more |
2705 | + elegantly (see LP #118788). |
2706 | + * bin/apport-retrace: Add gen_source_stacktrace() and a few helper functions |
2707 | + to construct a field 'StacktraceSource' with the source code around the |
2708 | + affected lines in the stack trace (as available). (Point 5 of |
2709 | + apport-better-retracing spec). |
2710 | + * apport/crashdb_impl/launchpad.py, update(): Attach StacktraceSource to the |
2711 | + bug if it exists. |
2712 | + * apport/crashdb_impl/launchpad.py: Check PackageArchitecture for 'all', to |
2713 | + not set a retracer tag 'need-all-retrace'. |
2714 | + * test-apport: Clarify assertion failure message when an unexpected core |
2715 | + dump is present. |
2716 | + * apport/report.py, get_module_license(): Do not iterate over Popen.stdout, |
2717 | + use communicate() instead. The latter is already fixed to not trip over |
2718 | + SIGINTR. (LP: #118965) |
2719 | + |
2720 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 08 Jun 2007 07:47:04 +0200 |
2721 | + |
2722 | +apport (0.81) gutsy; urgency=low |
2723 | + |
2724 | + * apport/report.py: Remove '[apport]' default bug title prefix. (LP: #94819) |
2725 | + * apport/crashdb_impl/launchpad.py: Tag new bugs with |
2726 | + 'apport-<problemtype>'. This replaces the former '[apport]' prefixing. |
2727 | + * debian/local/setup-apport-retracer: Specify a path in '.' command and |
2728 | + use sh again. Yay for me needing three attempts before actually RTFMing |
2729 | + how '.' works (which is really nasty and strange IMHO). |
2730 | + * bin/apport-chroot: Fix symlinks before repackaging the chroot tarball in |
2731 | + 'install' and 'installdeb' modes. |
2732 | + * debian/local/setup-apport-retracer: Install python-libxml2 and python-apt. |
2733 | + * bin/launchpad-crash-digger: Supply --auth instead of the deprecated |
2734 | + --cookie to apport-chroot. |
2735 | + * bin/apport-chroot: Fix identifier name in command_retrace(). |
2736 | + * debian/local/setup-apport-retracer: Set APPORT_CRASHDB_CONF to the local |
2737 | + crashdb.conf. |
2738 | + * bin/apport-chroot: Unset APPORT_CRASHDB_CONF for login and retrace. |
2739 | + * bin/launchpad-crash-digger: Check the release of a bug and whether we have |
2740 | + a chroot for it before untagging it. This avoids loosing tags for bugs we |
2741 | + do not yet have a working retracer chroot for. |
2742 | + * bin/apport-retrace: Do not abort with an exception if package installation |
2743 | + fails. Give a proper error message instead and point to -u. (LP: #115681) |
2744 | + * apport/crashdb_impl/launchpad.py, update(): Create a temporary directory |
2745 | + and use proper file names for the new attachments. With TemporaryFile(), |
2746 | + attachment file names ended up as '<fdopen>'. (LP: #115347) |
2747 | + * apport/report.py, add_os_info(): Add field 'NonfreeKernelModules' which |
2748 | + lists loaded kernel modules which do not have a FOSS license. This is |
2749 | + particularly helpful for quickly checking for restricted graphics drivers. |
2750 | + (LP: #103239) |
2751 | + * apport_python_hook.py: Move the apport.* imports into the try: block and |
2752 | + move the likely_packaged() test to the top, to avoid importing |
2753 | + apport.report and creating a Report object for non-packaged scripts. This |
2754 | + makes the entire code more efficient and robust against errors in the |
2755 | + apport modules. (LP: #109955) |
2756 | + * apport/report.py, add_gdb_info(): Intercept OSError from gdb invocation |
2757 | + (which might be segfaulting itself) and just do not put any gdb output |
2758 | + into the report. The automatic retracers can try their luck again. |
2759 | + (LP: #112501) |
2760 | + * bin/apport-retrace: Fix handling of packages which are still known to |
2761 | + /var/lib/dpkg/status, but do not have an apt record any more; treat them |
2762 | + like virtual packages and just issue a warning instead of falling over. |
2763 | + (LP: #107474) |
2764 | + * Add doc/data-format.tex: Documentation of the structure, encoding, and |
2765 | + standard keys of the Apport report file format. [apport-for-upstreams |
2766 | + blueprint] |
2767 | + * Add doc/Makefile: Build and clean rules for generating data-format.pdf. |
2768 | + * debian/rules, setup.py: Call doc/Makefile and install the PDF |
2769 | + documentation. Add texlive-latex-recommended build dependency for that. |
2770 | + |
2771 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 24 May 2007 19:39:12 +0200 |
2772 | + |
2773 | +apport (0.80) gutsy; urgency=low |
2774 | + |
2775 | + Collect all Launchpad specific bits in a separate class and provide an |
2776 | + abstract base class. This will greatly help for getting upstream acceptance |
2777 | + and the possibility of automatically forwarding crashes upstream |
2778 | + (apport-for-upstreams specification): |
2779 | + |
2780 | + * Add apport/crashdb.py: Abstract crash database interface. This also offers |
2781 | + a factory function get_crashdb() which reads a configuration file to find |
2782 | + the default crash database to be used. |
2783 | + * Add ./crashdb.conf: Crash database configuration file, for Ubuntu on |
2784 | + Launchpad. Modify setup.py and debian/python-apport.install to ship it in |
2785 | + python-apport. |
2786 | + * Add apport/crashdb_impl/memory.py: Simple in-memory implementation of |
2787 | + crash database interface for testing. |
2788 | + * Add apport/crashdb_impl/launchpad.py: Launchpad implementation of crash |
2789 | + database interface. |
2790 | + * apport/ui.py: Drop LP specific bits and move towards new CrashDatabase |
2791 | + interface. |
2792 | + * apport/ui.py, test suite: Do not overwrite file_report() any more, but |
2793 | + use the memory CrashDatabase. This will test the actual file_report() |
2794 | + implementation and allows the test suite to check the precise value of |
2795 | + opened URLs. |
2796 | + * apport/{report,ui}.py: Move UserInterface.create_crash_bug_title() and its |
2797 | + test cases to Report.standard_title(). It is much more appropriate there |
2798 | + and can be used in the retracer as well. |
2799 | + * bin/apport-retrace: Drop LP specific bits and move to CrashDatabase |
2800 | + interface. Remove the --remove-tag option, we really should not have it |
2801 | + here; remove it from man/apport-retrace.1 as well. |
2802 | + * bin/apport-chroot: Drop --remove-tag option here, too. |
2803 | + * bin/apport-chroot: Drop LP specific bits and move to CrashDatabase |
2804 | + interface. |
2805 | + * bin/launchpad-crash-digger: Remove retracing tag directly instead of |
2806 | + passing --remove-tag to apport-chroot. This is a much cleaner design and |
2807 | + avoids infinitely looping on some weirdly failing retraces. |
2808 | + * debian/control: Bump some python-apport dependencies for the API changes. |
2809 | + |
2810 | + Some debranding: |
2811 | + |
2812 | + * setup.py: Use apport wiki home page for 'url'. |
2813 | + * Remove 'X-Ubuntu-Gettext-Domain' from *.desktop.in, since langpack.mk will |
2814 | + add it automatically now. |
2815 | + * *.desktop.in: Remove 'in Ubuntu' from comment. |
2816 | + * cli/apport-cli, qt4/apport-qt: Generalize window titles. |
2817 | + |
2818 | + Other fixes: |
2819 | + * po/de.po: Update. |
2820 | + * debian/local/setup-apport-retracer: Revert back 'source' to '.' and use |
2821 | + bash instead of sh. POSIX sh does not seem to have a 'source' command. |
2822 | + |
2823 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 21 May 2007 19:25:31 +0200 |
2824 | + |
2825 | +apport (0.79) gutsy; urgency=low |
2826 | + |
2827 | + * debian/local/setup-apport-retracer: Fix '.' bashism, replace it with |
2828 | + 'source'. |
2829 | + * problem_report.py, write_mime(): Drop preamble argument, replace it with |
2830 | + an extra_headers dictionary. This is much easier to evaluate on clients. |
2831 | + * apport/ui.py: Convert to new write_mime() interface from above. This |
2832 | + finally automatically tags bugs with need-$ARCH-retrace. Bump |
2833 | + p-problem-report dependency of python-apport for this. |
2834 | + * apport/report.py: Change example URLs in the testsuite from launchpad to |
2835 | + an artificial ones to avoid the impression that it is LP specific. |
2836 | + * backends/packaging-apt-dpkg.py: Formally make this a subclass of |
2837 | + apport.packaging.PackageInfo. |
2838 | + * debian/control: Use code.lp.net instead of bazaar.lp.net VCS URL. |
2839 | + * bin/kernel_hook: Fix/improve the collected information: |
2840 | + - Read /proc/modules instead of lsmod. |
2841 | + - Fix lspci argument: -n instead of -m. |
2842 | + - Add /proc/cmdline. |
2843 | + * debian/rules: Use langpack.mk for updating the .desktop files. |
2844 | + * Add po/Makevars to specify the domain, to make intltool figure out the |
2845 | + gettext domain automatically. |
2846 | + * bin/kernel_hook, ./test-hooks: Do not rely on /proc/version_signature any |
2847 | + more, it's gone in the gutsy kernel. |
2848 | + |
2849 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 21 May 2007 15:55:10 +0200 |
2850 | + |
2851 | +apport (0.78) gutsy; urgency=low |
2852 | + |
2853 | + * apport/packaging.py, backends/packaging-dpkg.py: Add new interface |
2854 | + is_distro_package(package) which verifies the origin of a given package. |
2855 | + Move the dodgy hack from apport/ui.py to the backend, where it belongs to. |
2856 | + Also add a test case. |
2857 | + * debian/control: Add python-apt dependency to python-apport. |
2858 | + * debian/control: Remove debianutils dependency, it's essential. |
2859 | + * Drop backends/packaging-dpkg.py. It had some hackish usage of python-apt |
2860 | + anyway, since some things just cannot be figured out with dpkg alone. |
2861 | + Since we have to give up on that idea, implement a new clean packaging |
2862 | + backend 'packaging-apt-dpkg.py' which now uses python-apt and dpkg in a |
2863 | + clean way. |
2864 | + * apport/report.py, add_gdb_info(): Fix crash when Stacktrace could not be |
2865 | + created. (LP: #107853) |
2866 | + * ./test-apport: Check that crashes create a core dump (with proper ulimits) |
2867 | + when an unseen crash report exists already. This reproduces LP #105976. |
2868 | + * bin/apport: Create core dump file if aborting because an unseen crash |
2869 | + report already exists. (LP: #105976) |
2870 | + * apport/ui.py: Add a comment for translators. (LP: #104703) |
2871 | + * apport/ui.py, load_report(): Also catch zlib.error on invalid reports. |
2872 | + (LP: #103547) |
2873 | + * apport/report.py: Add method has_useful_stacktrace() to determine whether |
2874 | + the stack trace can be considered useful. The current heuristic is to |
2875 | + consider it useless if it either is shorter than three lines and has any |
2876 | + unknown function, or for longer traces, a minority of known functions. Add |
2877 | + test cases. |
2878 | + * gtk/apport-gtk, qt4/apport-qt, cli/apport-cli: Do not offer 'reduced |
2879 | + report' option if the stack trace is useless. (LP: #87430) Bump the |
2880 | + python-apport dependencies of the frontend packages to ensure that we have |
2881 | + has_useful_stacktrace(). |
2882 | + |
2883 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 5 May 2007 17:53:42 +0200 |
2884 | + |
2885 | +apport (0.77) gutsy; urgency=low |
2886 | + |
2887 | + * apport/report.py: Replace any() call with a list comprehension to work |
2888 | + with Python < 2.5. (LP: #104864) |
2889 | + * apport/report.py: Move the ctypes import to the one place where we |
2890 | + actually need it, and do not entirely fail if they do not exist (such as |
2891 | + in Python 2.4). It is only required for non-default Feisty kernels anyway. |
2892 | + (LP: #107662) |
2893 | + * apport/chroot.py: Fix test suite to work with Python 2.4's tarfile module |
2894 | + output format. |
2895 | + * debian/local/setup-apport-retracer: Generalized some feisty specific |
2896 | + bits, set default release to gutsy. |
2897 | + |
2898 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 23 Apr 2007 12:22:17 +0200 |
2899 | + |
2900 | +apport (0.76) feisty; urgency=low |
2901 | + |
2902 | + * Move python_hook.py out of the apport module to apport_python_hook.py, so |
2903 | + that it does not inflict the expensive import of all apport related |
2904 | + modules to every python program. Adapt module prefixes accordingly. |
2905 | + (LP: #105764) |
2906 | + * setup.py, debian/python-apport.install: Install apport_python_hook.py into |
2907 | + the python-apport binary package. |
2908 | + * apport/ui.py test suite: Unset locale related environment variables so |
2909 | + that the tests which check strings are not invalidated by translations. |
2910 | + |
2911 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 12 Apr 2007 11:47:50 +0200 |
2912 | + |
2913 | +apport (0.75) feisty; urgency=low |
2914 | + |
2915 | + * apport/report.py, add_proc_info(): Chop off /rofs/ prefix from |
2916 | + ExecutablePath, so that crashes work on the live system, too. Arguably a |
2917 | + kernel bug, but probably too hard to fix at this time. (LP: #102909) |
2918 | + * backends/packaging-dpkg.py, get_modified_files(): Ignore empty lines in |
2919 | + broken .md5sums file rather than crashing on them. (LP: #102906) |
2920 | + |
2921 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 4 Apr 2007 21:51:28 +0200 |
2922 | + |
2923 | +apport (0.74) feisty; urgency=low |
2924 | + |
2925 | + * debian/apport-{gtk,qt}.install: Do not install .desktop files for now, |
2926 | + until we get a proper guided bug reporting. |
2927 | + * problem_report.py, write_mime(): Do not re-compress keys which already end |
2928 | + in .gz. Add test cases. |
2929 | + * test-hooks: Add a (dodgy) test case for calling package_hook on an |
2930 | + uninstalled package. After all, this is very likely to happen for |
2931 | + installation errors. This reproduces #97636. |
2932 | + * backends/packaging-dpkg.py, get_source(): Add a similarly dodgy fallback |
2933 | + to apt if the queried package is not installed. This needs to be |
2934 | + generalized and cleaned up later, but now is the time for unintrusive |
2935 | + small patches. (LP: #97636) |
2936 | + * test-apport: Do not fail on non-empty gdb stderr if it only consists of a |
2937 | + single warning (as happens on powerpc). |
2938 | + * apport/report.py, test_check_interpreted(): Run gedit test on an actually |
2939 | + existing file, reproducing the interpreter confusion reported in #102056. |
2940 | + * apport/report.py, _check_interpreted(): Add a whitelist of common |
2941 | + interpreters and check ExecutablePath against it. (LP: #102056) |
2942 | + * apport/ui.py: Ignore SystemError exceptions from apt, which happen on |
2943 | + badly formatted source.list entries. (LP: #98901) |
2944 | + * apport/ui.py: Fix crash on None candiateOrigin from the apt cache object. |
2945 | + (LP: #98961) |
2946 | + * gtk/apport-gtk.glade: Add window titles to progress and details dialogs. |
2947 | + (LP: #97640) |
2948 | + |
2949 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 4 Apr 2007 14:44:08 +0200 |
2950 | + |
2951 | +apport (0.73) feisty; urgency=low |
2952 | + |
2953 | + * problem_report.py, write(): Allow a third optional argument in tuple |
2954 | + values, which specify a maximum file size. Above it, the entire key gets |
2955 | + removed. Add testsuite checks for all boundary cases. |
2956 | + * bin/apport: Limit core dump size to 75% of usable RAM |
2957 | + (MemFree+Cached-Writeback). This should avoid trashing people's boxes hard |
2958 | + on huge core dumps. Bump dependencies on python-problem-report. Create an |
2959 | + expensive, but realistic check for this in test-apport. |
2960 | + (LP: #71560) |
2961 | + * apport/ui.py, run_crash(): If a signal crash report does not have a core |
2962 | + dump, explain that the computer has too little memory for an automatic |
2963 | + analysis/report of the crash. Add test suite check. |
2964 | + |
2965 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 29 Mar 2007 23:38:23 +0200 |
2966 | + |
2967 | +apport (0.72) feisty; urgency=low |
2968 | + |
2969 | + [ Martin Pitt ] |
2970 | + * bin/apport-chroot, command_create(): Install gpgv. |
2971 | + * bin/apport-retrace: Fix error handling in fetch_unpack(). |
2972 | + * Move apport-retrace.1 manpage from package apport to apport-retrace. Bump |
2973 | + Conflicts/Replaces accordingly. |
2974 | + * bin/launchpad-crash-digger, apport/ui.py: Remove the special case |
2975 | + 'powerpc'->'ppc' and use need-powerpc-retrace uniformly. |
2976 | + * debian/control: Add XS-Vcs-Bzr: header. |
2977 | + * apport/ui.py: Fix wrong parameter name in help message. |
2978 | + * Another grammar fix, thanks to Brian Murray! |
2979 | + |
2980 | + [ Michael Hofmann ] |
2981 | + * debian/local/ubuntu-bug: Try to use apport-cli, if we do not have a |
2982 | + $DISPLAY, or neither Gnome nor KDE are running. |
2983 | + * debian/control: Recommend elinks, since it is the only text browser so far |
2984 | + that works with Launchpad (see #59510) |
2985 | + * Add debian/apport-cli.README.Debian: Describe how to integrate |
2986 | + apport-checkreports and apport-cli into .bashrc for crash notification on |
2987 | + servers. |
2988 | + * qt4/apport-qt: Fix undefined symbol in ui_present_package_error(). |
2989 | + (LP: #97282) |
2990 | + |
2991 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 29 Mar 2007 11:41:39 +0200 |
2992 | + |
2993 | +apport (0.71) feisty; urgency=low |
2994 | + |
2995 | + * cli/apport-cli, qt4/apport-qt: Fix bad grammar 'some minutes'. |
2996 | + (LP: #95296) |
2997 | + * problem_report.py, write_mime(): Add optional 'preamble' parameter. Add |
2998 | + test case. |
2999 | + * apport/ui.py, upload_launchpad_blob(): Set need-$ARCH-retrace tag in MIME |
3000 | + preamble. Bump p-problem-report dependency. (LP: #94790) |
3001 | + * bin/apport-retrace: In verbose mode, display the path of currently |
3002 | + extracting deb. |
3003 | + * bin/apport-retrace: Do not fall over errors of dpkg -x (which happens e. |
3004 | + g. on udev, where it cannot unpack /dev, since this is a symlink to the |
3005 | + real /dev). Merely print out a warning about it. |
3006 | + * apport/ui.py, run_report_bug(): Ignore ENOENT from add_proc_info(). This |
3007 | + happens if the user closes the application prematurely, so that /proc/pid |
3008 | + does not exist any more. Add test case. (LP: #95954) |
3009 | + * backends/packaging-dpkg.py, get_modified_files(): Ignore lines in .md5sums |
3010 | + files which contain a NUL byte. This Should Not Happenâ„¢, but nevertheless |
3011 | + did. (LP: #96050) |
3012 | + * apport/ui.py, doc/package-hooks.txt: Check for a field |
3013 | + "UnreportableReason: <text>" and display an information box that the |
3014 | + current crash cannot be reported because of <text>. Add test case. |
3015 | + Document the new field. |
3016 | + * apport/ui.py: Check package origin, compare it to DistroRelease:, and |
3017 | + report crash as unreportable if they do not match. This particularly saves |
3018 | + the user from uploading large reports for e. g. opera crashes, and avoids |
3019 | + filing Ubuntu bugs from Debian installations. (LP: #75513) |
3020 | + |
3021 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Mar 2007 18:01:24 +0200 |
3022 | + |
3023 | +apport (0.70) feisty; urgency=low |
3024 | + |
3025 | + [ Martin Pitt ] |
3026 | + * bin/apport-retrace: Add option --remove-tag to remove a Launchpad bug |
3027 | + tag. This is intended for an automatic Malone crash retracing system. |
3028 | + * debian/control: Bump python-launchpad-bugs dependency to ensure that we |
3029 | + have Bug.[gs]et_metadata(). |
3030 | + * man/apport-retrace.1: Add documentation for --confirm and --remove-tag. |
3031 | + * bin/apport-chroot: Add option --remove-tag and pass it to apport-retrace. |
3032 | + * apport/chroot.py, fix_symlinks(): Convert chroot path prefixed absolute |
3033 | + symlinks to relative symlinks to avoid fakechroot's weird handling of |
3034 | + absolute symlinks. |
3035 | + * Add bin/launchpad-crash-digger: Daemon for watching out for |
3036 | + need-$ARCH-retrace tagged Ubuntu bugs in Launchpad and calling |
3037 | + apport-retrace on them. |
3038 | + * bin/apport-retrace: Mangle bug comment with StacktraceTop to not contain |
3039 | + invalid UTF-8, to avoid getting Internal Server Errors from LP. |
3040 | + * debian/local/setup-apport-retracer: Install libc6-i686{,-dbgsym} into an |
3041 | + x86 chroot, to get sane x86 backtraces for crashes in libc. |
3042 | + * debian/local/setup-apport-retracer: |
3043 | + - Unpack and install python-launchpad-bugs locally if the package is not |
3044 | + installed. |
3045 | + - Link launchpad-crash-digger into the retracer's bin/ dir. |
3046 | + * run-tests: Run tests with python's -tt flag to catch whitespace errors. |
3047 | + * Replace tabs with spaces in all Python files. (LP: #93561) |
3048 | + * Remove trailing white space in all Python files. |
3049 | + * apport/report.py, add_proc_info(): Do not regard symlinks to executables |
3050 | + as interpreted scripts any more (such as Debian alternatives). Add test |
3051 | + case. (LP: #94732) |
3052 | + * problem_report.py: Add new method get_new() which returns a set of all |
3053 | + keys which have been added since load() or construction. Add test cases. |
3054 | + * problem_report.py: Add optional parameter only_new to write(), which |
3055 | + writes only the get_new() keys. Add test case. |
3056 | + * apport/ui.py: Remember currently processed report file and update it with |
3057 | + the added information, so that it becomes useful for local evaluation, |
3058 | + too. Bump python-problem-report dependency to ensure write()'s only_new |
3059 | + availability. (LP: #94678) |
3060 | + * apport-chroot: Add forgotten sys.exit(1) after printing the error message |
3061 | + about an invalid chroot specification. |
3062 | + * apport/ui.py, run_crash(): Check for a field "UnsupportableReason: <text>" |
3063 | + and display an information box that the current configuration cannot be |
3064 | + supported because of <text>, instead of processing and reporting the |
3065 | + crash. Add test case for this workflow. With special regards to our |
3066 | + Firefox crash triagers who want to get rid of the hundreds of |
3067 | + flash-related crashes. :) |
3068 | + * apport/report.py, add_hooks_info(): Use execfile() instead of |
3069 | + __import__(), since package names might conflict with module names already |
3070 | + imported into apport's namespace. Also search for hook named after the |
3071 | + source package name (prefixed with 'source_'). Add test cases. |
3072 | + * bin/apport-chroot: When specifying --save for login, only save the tarball |
3073 | + if the exit status is 0. |
3074 | + * bin/apport-chroot, create: Install /usr/sbin/policy-rc.d to disable init |
3075 | + scripts. |
3076 | + * bin/apport-chroot: Fixed command function selection to not abort with |
3077 | + 'unknown command' if the DistroRelease: was unknown. |
3078 | + * bin/apport-retrace: Replace --no-purge with --no-dpkg. With this option, |
3079 | + do not call dpkg --unpack any more, but dpkg -x, to avoid any fchmod() and |
3080 | + other calls which cause problems in fakechroots. |
3081 | + * bin/apport-retrace: Fix ordering of version numbers in warning message. |
3082 | + * doc/package-hooks.txt: Add some examples, document source package hook. |
3083 | + |
3084 | + [ Kees Cook ] |
3085 | + * apport/report.py, add_proc_info(): If reading /proc/pid/maps fails, |
3086 | + ptrace() the target process to make it readable (proposed security |
3087 | + improvement in future kernels). |
3088 | + * bin/apport-retrace: Fix crash for packages unknown to the apt cache. |
3089 | + * apport/report.py, add_gdb_info(): Limit maximum backtrace depth to 2000 to |
3090 | + avoid infinitely looped stacks and gdb crashes. (LP: #94455) |
3091 | + This also caps the maximum size of information that we add to reports. |
3092 | + (LP: #92653) |
3093 | + * bin/apport-retrace: Add option -R/--rebuild-package-info, so that |
3094 | + apport-retrace works on unprocessed crash dumps in /var/crash. |
3095 | + * Some grammar corrections. |
3096 | + * Add package-hooks/source_apport.py: Package hook for apport itself. |
3097 | + Include /var/log/apport.log and the status of files in /var/crash. |
3098 | + |
3099 | + [ Michael Hofmann ] |
3100 | + * Add cli/apport-cli, setup.py, debian/apport-cli.install, debian/control: |
3101 | + Add command line user interface. |
3102 | + * apport/ui.py, format_filesize(): Use MiB and GiB instead of MB and GB; |
3103 | + these are the official units. Adapt test cases. |
3104 | + * apport/ui.py, collect_info()/file_report(): Do not raise an exception on |
3105 | + KeyboardInterrupt in the subthreads. |
3106 | + * apport/ui.py, open_url(): Do not use gtk.MessageDialog(), but |
3107 | + ui_error_message(), and fix error passing so that the message is |
3108 | + displayed in the parent thread. |
3109 | + * apport/ui.py, open_url(): Check that $DISPLAY is set before considering |
3110 | + the KDE/Gnome web browsers. |
3111 | + |
3112 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Mar 2007 09:41:03 +0200 |
3113 | + |
3114 | +apport (0.69) feisty; urgency=low |
3115 | + |
3116 | + * apport-chroot: Add command 'installdeb' to conveniently install a bunch of |
3117 | + .debs into a chroot. |
3118 | + * apport-chroot: Fix 'login' and 'upgrade' commands to not require |
3119 | + specifying a chroot map when giving a chroot tarball path as argument. |
3120 | + * test-apport: Check that core dumps are written for packaged programs as |
3121 | + well, if ulimits want them. (Test for #92029) |
3122 | + * bin/apport: Call write_user_coredump() for packaged program crashes and |
3123 | + SIGABRT as well. (LP: #92029) |
3124 | + |
3125 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 19 Mar 2007 17:37:23 +0100 |
3126 | + |
3127 | +apport (0.68) feisty; urgency=low |
3128 | + |
3129 | + [ Michael Hofmann ] |
3130 | + * qt4/apport-qt: Fix taskbar entry, remove an unused method. |
3131 | + * qt4/error.ui: Fix icon spacing. |
3132 | + |
3133 | + [ Martin Pitt ] |
3134 | + * apport-retrace: Add option --confirm to display the retraced stack traces |
3135 | + and ask for confirmation before uploading them as LP bug attachments. |
3136 | + (LP: #91878) |
3137 | + * apport-chroot: Add option --confirm-attach; if given, call apport-retrace |
3138 | + with --confirm. |
3139 | + |
3140 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 15 Mar 2007 00:05:18 +0100 |
3141 | + |
3142 | +apport (0.67) feisty; urgency=low |
3143 | + |
3144 | + * debian/local/setup-apport-retracer: Add apt sources for restricted, |
3145 | + universe, and multiverse, too. |
3146 | + * po/de.po: Update from Rosetta. |
3147 | + * apport/report.py: Remove undefined call to error_log() in |
3148 | + _command_output(), replace it with raising proper exceptions. |
3149 | + * bin/apport-retrace: Fix 'numer' typo. (LP: #91680) |
3150 | + * test-apport: Check that non-packaged executables generate a core dump on |
3151 | + SIGABRT, too (test case for bug #92029). |
3152 | + * bin/apport: Move check for ignoring SIGABRT below the core dump file |
3153 | + writing for non-packaged binaries. (LP: #92029) |
3154 | + * gtk/apport-gtk.glade: |
3155 | + - Remove titles from the progress windows to comply with Gnome HIG and not |
3156 | + repeat the text content. |
3157 | + - Improve wording a bit. |
3158 | + - LP: #92114 |
3159 | + * gtk/apport-gtk{,.glade}: Fix signal handler name of the Cancel button in |
3160 | + the upload progress dialog, so that it actually works. (LP: #92115) |
3161 | + |
3162 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 14 Mar 2007 17:34:57 +0100 |
3163 | + |
3164 | +apport (0.66) feisty; urgency=low |
3165 | + |
3166 | + * Remove apport/MultipartPostHandler.py, this functionality moved to |
3167 | + python-launchpad-bugs now. Add a dependency to that package. |
3168 | + * apport/ui.py, upload_launchpad_blob(): Use the shiny new |
3169 | + launchpadBugs.storeblob.upload(). |
3170 | + * bin/apport-retrace: Attach retraced stack traces back to the Launchpad bug |
3171 | + report if no other output option is given (This corresponds to the |
3172 | + in-place editing when a report file is specified). Add option --cookie to |
3173 | + specify a Mozilla-style cookie file for the necessary Launchpad |
3174 | + authentication. |
3175 | + * man/apport-retrace.1: Document above apport-retrace changes. |
3176 | + * bin/apport-chroot: Add --cookie option: temporarily symlink cookie into |
3177 | + the chroot and pass it to apport-retrace in retrace mode. |
3178 | + |
3179 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 10 Mar 2007 15:01:57 +0100 |
3180 | + |
3181 | +apport (0.65) feisty; urgency=low |
3182 | + |
3183 | + * debian/local/setup-apport-retracer: |
3184 | + - Replace grep-dctrl with grep call, since grep-dctrl is not installed in |
3185 | + all the DC chroots. |
3186 | + - Do not download apport source from archive.u.c., instead require that |
3187 | + this script lives in the unpacked apport source tree. |
3188 | + * bin/apport-chroot: Use apt-get options -y and --allow-unauthenticated when |
3189 | + installing additional packages. |
3190 | + * bin/apport-chroot: Handle --extra-package for 'upgrade', too, to provide a |
3191 | + simple way of adding a package to an existing chroot tarball. |
3192 | + * debian/local/setup-apport-retracer: Create tarball chroots by default. |
3193 | + It only imposes a negligible overhead, and sharing unpacked directories |
3194 | + with multiple people is just too brittle. |
3195 | + * bin/apport-retrace: Add option --no-purge to not purge unpacked packages |
3196 | + after retracing. This is (only) useful with temporarily unpacked chroots, |
3197 | + since it's only a waste of time there. |
3198 | + * bin/apport-chroot: Call apport-retrace with --no-purge when retracing in a |
3199 | + chroot tarball. |
3200 | + * apport/chroot.py: Add fix_symlinks() method to remove the chroot root |
3201 | + directory prefix from symbolic links; they prevent function of tarball |
3202 | + chroots and moving around directory chroots. Add test case. |
3203 | + * bin/apport: Fix symlinks after creating and upgrading a chroot. |
3204 | + * bin/apport-chroot: Add option --save to update a tarball after logging |
3205 | + in to it. |
3206 | + |
3207 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 10 Mar 2007 21:21:25 +0100 |
3208 | + |
3209 | +apport (0.64) feisty; urgency=low |
3210 | + |
3211 | + * bin/apport-chroot: Add 'login' command. |
3212 | + * bin/apport-chroot: Install apport-retrace into a newly created chroot. |
3213 | + * Add debian/local/setup-apport-retracer: Script to install local versions |
3214 | + of apport, debootstrap, fake{,ch}root libraries, and a feisty apport |
3215 | + fakechroot. This works OOTB on ronne's amd64 and i386 feisty chroots. The |
3216 | + script is not shipped in any package yet, but it's convenient to ship it |
3217 | + in revision control and in the source. |
3218 | + * apport/report.py, _check_interpreted(): When calling an interpreter with a |
3219 | + script name as argument, set ExecutablePath to the script instead of the |
3220 | + interpreter. Add test case. (LP: #88794) |
3221 | + * apport/report.py, search_bug_patterns(): Catch all exceptions from |
3222 | + urlopen(), not just IOError. Sometimes this fails with funnier errors. |
3223 | + (LP: #89589) |
3224 | + * bin/apport-retrace: Give some additional explanation when installing |
3225 | + packages fails. (LP: #89916) |
3226 | + * apport/fileutils.py, get_all_{system_,}reports(): Fix file access race |
3227 | + condition. (LP: #89977) |
3228 | + * bin/apport-retrace: Add option -p/--extra-package to install an additional |
3229 | + package for retracing. May be specified multiple times. Document new |
3230 | + option in man/apport-retrace.1. (LP: #90077) |
3231 | + * bin/apport-chroot: Add a similar option -p/--extra-package and install |
3232 | + those in the 'create' command and simply pass it to apport-retrace in the |
3233 | + 'retrace' command. (LP: #90077) |
3234 | + * bin/apport-chroot: Add a -v/--verbose option. |
3235 | + * bin/apport-retrace: Do not complain about missing ddebs for Arch: all |
3236 | + packages. |
3237 | + |
3238 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 6 Mar 2007 16:20:41 +0100 |
3239 | + |
3240 | +apport (0.63) feisty; urgency=low |
3241 | + |
3242 | + New feature: fakechroot support for apport-retrace |
3243 | + |
3244 | + * bin/apport-retrace: |
3245 | + - Simplify program design and throw away the complicated debug symbol |
3246 | + sandbox generation, along with the -d and -C options. Instead, directly |
3247 | + install the missing packages and ddebs with apt. This makes the tool more |
3248 | + suitable for running in chroots and has often been requested anyway. |
3249 | + - Add option -u/--unpack-only which causes additionally installed packages |
3250 | + to be unpacked without being configured and purged again after |
3251 | + retracing. This allows apport-retrace to work under fakechroot and has |
3252 | + the nice side effect of speeding up package installation (we do not care |
3253 | + about configuration for retracing anyway). |
3254 | + * man/apport-retrace.1: Update description for the new behaviour, drop |
3255 | + documentation of the -d and -C options, and add documentation of -u. |
3256 | + * Add apport/chroot.py: Class for representing and working with chroots; |
3257 | + this uses the fakeroot and fakechroot libraries when being called as |
3258 | + non-root. |
3259 | + * Add bin/apport-chroot: CLI frontend for doing various things with |
3260 | + chroots (including fakeroot/fakechroot support from the Chroot class). For |
3261 | + now, this implements: |
3262 | + - create a chroot (tarball or directory) |
3263 | + - dist-upgrade a particular or all chroots |
3264 | + - apport-retrace a bug or Apport report file |
3265 | + * setup.py: Ship apport-chroot in scripts directory. |
3266 | + * Add a new package apport-retrace which ships apport-retrace and |
3267 | + apport-chroot and carries all the heavier dependencies (binutils, |
3268 | + python-launchpad-bugs, python-apt, etc.). Drop the latter two dependencies |
3269 | + from the apport package. This allows us to install the apport-retrace |
3270 | + package in fakechroots (not possible with apport itself) and avoid |
3271 | + unnecessary dependencies on normal desktop installations. |
3272 | + |
3273 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 5 Mar 2007 11:20:36 +0100 |
3274 | + |
3275 | +apport (0.62) feisty; urgency=low |
3276 | + |
3277 | + * apport/ui.py, collect_info(): Use REThread instead of Thread and raise |
3278 | + exceptions from it, so that errors during info collection actually become |
3279 | + visible. |
3280 | + * apport/report.py, add_proc_info(): Check that ExecutablePath actually |
3281 | + exists, so that invalid values from transient error conditions are ignored |
3282 | + (such as '/usr/bin/gnome-panel\x00\x00\x8b (deleted)'). |
3283 | + * apport/packaging.py: Add interface get_system_architecture() to return the |
3284 | + system architecture in the distro specific notation. This can differ from |
3285 | + get_architecture(package) on multiarch platforms such as amd64. |
3286 | + * backends/packaging-dpkg.py: Implement get_system_architecture() to return |
3287 | + dpkg --print-architecture, add a shallow test case. |
3288 | + * apport/report.py, add_package_info(): Rename key 'Architecture:' to |
3289 | + 'PackageArchitecture:' for clarity. |
3290 | + * apport/report.py, add_os_info(): Add system architecture as |
3291 | + 'Architecture:' field. |
3292 | + * apport/ui.py, create_crash_bug_title(): Append warning about non-native |
3293 | + package if package architecture does not match the system's one. |
3294 | + * All test suites: Remove redundant word 'behaviour' from test descriptions. |
3295 | + * test-hooks: Run tests on installed hooks in /usr/share/apport by default |
3296 | + and add a '--local' switch to test the hooks in the source tree instead. |
3297 | + Use this option in run-tests. |
3298 | + * apport/report.py, test_add_proc_info(): Change the python script test |
3299 | + so that it does not depend on being run in the source tree. |
3300 | + * run-tests: Add a 'local' command line option which runs tests on the files |
3301 | + and modules in the build tree. Run tests on system files/modules by |
3302 | + default. |
3303 | + * setup.py, debian/apport.install: Ship test-hooks, test-apport, and |
3304 | + run-tests in /usr/share/apport/testsuite/, so that the full test suite can |
3305 | + be run in the installed system. |
3306 | + * gtk/apport-gtk.desktop.in: Only show in Gnome and Xfce. |
3307 | + * qt4/apport-qt.desktop.in: Only show in KDE. |
3308 | + |
3309 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 1 Mar 2007 10:43:29 +0100 |
3310 | + |
3311 | +apport (0.61) feisty; urgency=low |
3312 | + |
3313 | + * bin/apport: |
3314 | + - Kernel 2.6.20-9 now sets CORE_REAL_RLIM to -1 instead of not setting it; |
3315 | + handle this case correctly. (LP: #87065) |
3316 | + - Add forgotten multiplication of CORE_REAL_RLIM with 1024, since ulimit |
3317 | + sets kB, not bytes. |
3318 | + |
3319 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 27 Feb 2007 16:06:11 +0100 |
3320 | + |
3321 | +apport (0.60) feisty; urgency=low |
3322 | + |
3323 | + * gtk/apport-gtk.glade: Reintroduce window titles. Since the crash |
3324 | + notifications are like alerts, title have been removed recently to comply |
3325 | + with Gnome HIG standards, but then the user will get 'nameless window' |
3326 | + buttons in the task bar. Let's have the smaller evil then. (LP: #87164) |
3327 | + * apport/packaging.py: Add get_architecture() interface for determining the |
3328 | + architecture of a particular package (which might not match the overall |
3329 | + system architecture on multiarch-capable systems, e. g. an i386 Firefox |
3330 | + package installed on amd64). |
3331 | + * backends/packaging-dpkg.py: Implement get_architecture() and add test |
3332 | + case. |
3333 | + * apport/report.py, add_package_info(): Add Architecture: field. |
3334 | + (LP: #87424) |
3335 | + * apport/ui.py: Already mark report as seen when we load it, not just in the |
3336 | + information collection thread. That way, reports will only be shown once |
3337 | + on systems which have /var/crash mounted noatime, too. (LP: #85809) |
3338 | + * apport/fileutils.py, mark_report_seen(): If os.utime() fails, and opening |
3339 | + the report file for reading does not change the atime (happens with |
3340 | + noatime mount option), don't throw an exception, just delete the report. |
3341 | + (other aspect of LP: #85809) |
3342 | + * qt4/apport-qt: Wrap gettext() into an unicode(str, 'UTF-8') call, |
3343 | + otherwise all non-ASCII unicode strings are broken. (LP: #87757) |
3344 | + |
3345 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Feb 2007 20:55:40 +0100 |
3346 | + |
3347 | +apport (0.59) feisty; urgency=low |
3348 | + |
3349 | + * apport/report.py: Check that interpreter options are discarded in |
3350 | + test_check_interpreted_script(). This replicates bug #87005. |
3351 | + * apport/report.py, _check_interpreted_script(): Filter out interpreter |
3352 | + command line options. This should make the detection of interpreted |
3353 | + scripts more robust. (LP: #87005) |
3354 | + * test-apport, check_crash(): Differ between expecting the program dumping |
3355 | + core and finding a core dump on disk, because this is not equivalent any |
3356 | + more with core pipelining. |
3357 | + * bin/apport: Write core files into a process' cwd if the process' ulimit |
3358 | + requests and permits it and the crashes process is not packaged, so that |
3359 | + developers get happy again. Test this behaviour with various ulimits in |
3360 | + test-apport. |
3361 | + * test-apport: Check that the core file written by apport is valid. This |
3362 | + uncovers kernel bugs like #87065 |
3363 | + * problem_report.py test suite: Use assertAlmostEqual() when comparing stat |
3364 | + times, since they are floats on some systems. |
3365 | + * apport/report.py, add_gdb_info(): |
3366 | + - Remove all the initial gdb output, which gets rid of the duplicated #0 |
3367 | + line. |
3368 | + - Replace some stray tabs with spaces. |
3369 | + - Thanks to Kees Cook for this! |
3370 | + |
3371 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 22 Feb 2007 19:52:52 +0100 |
3372 | + |
3373 | +apport (0.58) feisty; urgency=low |
3374 | + |
3375 | + * qt4/apport-qt.desktop.in move to System menu |
3376 | + |
3377 | + -- Jonathan Riddell <jriddell@ubuntu.com> Tue, 20 Feb 2007 11:35:17 +0000 |
3378 | + |
3379 | +apport (0.57) feisty; urgency=low |
3380 | + |
3381 | + * apport/ui.py: Intercept ENOMEM and fail gracefully; there is little else |
3382 | + we can do at that point, and there is no point in presenting a crash |
3383 | + report for this. (LP: #85155) |
3384 | + * apport/ui.py: Ignore KeyError when deleting the CoreDump field on sending |
3385 | + a reduced report. This Should Not Happenâ„¢, but nevertheless did. |
3386 | + (LP: #86083) |
3387 | + * gtk/apport-gtk, qt4/apport-qt: Intercept ImportError for the non-builtin |
3388 | + Python modules. This usually happens for crashes when there is a |
3389 | + dist-upgrade active and some Python packages have not been configured yet. |
3390 | + (LP: #86007) |
3391 | + * apport/ui.py: If the problem report does not apply to a packaged program, |
3392 | + and we have an ExecutablePath, mention it in the error message for easier |
3393 | + debugging. |
3394 | + * apport/python_hook.py: Resolve symbolic links in ExecutablePath. |
3395 | + (LP: #85529) |
3396 | + * apport/ui.py, open_url(): Remove debugging print statement again, now |
3397 | + that we tracked down bug #83974. |
3398 | + |
3399 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 19 Feb 2007 14:40:29 +0100 |
3400 | + |
3401 | +apport (0.56) feisty; urgency=low |
3402 | + |
3403 | + * apport/ui.py, open_url(): When being invoked as root, call gnome-open or |
3404 | + firefox as root through sudo instead of dropping our uid/gid and calling |
3405 | + it normally. The latter does not work for Firefox for some mysterious |
3406 | + reason. Thanks to Mika Fischer for this trick. (LP: #81207) |
3407 | + * Add debian/local/ubuntu-bug.1: Manpage for ubuntu-bug. Add it to |
3408 | + debian/apport.manpages. |
3409 | + * qt4/apport-qt: Add some missing features that are present in the GTK UI: |
3410 | + - Do not show details by default, add a button to show them. |
3411 | + - Add complete/reduced bug report radio buttons. |
3412 | + - Thanks to Michael Hofmann for this! |
3413 | + |
3414 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 15 Feb 2007 14:59:07 +0100 |
3415 | + |
3416 | +apport (0.55) feisty; urgency=low |
3417 | + |
3418 | + * Add debian/local/ubuntu-bug: Check for a running KDE or Gnome session, |
3419 | + availability of apport-gtk and -qt, and open the appropriate GUI in bug |
3420 | + filing mode. This makes it convenient for shell users and is also required |
3421 | + for proper Firefox 'Report a bug...' menu integration (see bug #85041). |
3422 | + * debian/apport.install: Install ubuntu-bug to /usr/bin. |
3423 | + * gtk/apport-gtk: Generously add some gtk.main_iteration() calls to avoid |
3424 | + hanging dialogs, since we do not have a main loop. |
3425 | + * apport/ui.py: Do not silently ignore exceptions while uploading data to |
3426 | + Launchpad, but intercept them and display their message in the error |
3427 | + dialog. (Part of LP: #84992) |
3428 | + * apport/ui.py: Switch from edge.launchpad.net to production launchpad.net, |
3429 | + since the necessary bits are now there. (LP: #84992) |
3430 | + |
3431 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 14 Feb 2007 13:37:52 +0100 |
3432 | + |
3433 | +apport (0.54) feisty; urgency=low |
3434 | + |
3435 | + * bin/apport: Re-enable, now that our kernel has been fixed to pipe complete |
3436 | + core dumps to us. |
3437 | + |
3438 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 13 Feb 2007 09:33:38 +0100 |
3439 | + |
3440 | +apport (0.53) feisty; urgency=low |
3441 | + |
3442 | + * apport/ui.py, open_url(): Remove some accidentally left-over debugging |
3443 | + junk. |
3444 | + * gtk/apport-gtk: Process pending GTK events after hiding the info |
3445 | + collection window to avoid a hanging dead dialog. |
3446 | + * gtk/apport-gtk: Do not count the lines of fields with binary data. This |
3447 | + particularly avoids long delays with huge core dumps. (LP: #81979) |
3448 | + * apport/ui.py, open_url(): Print URL to stdout, so that we can debug the |
3449 | + weirdness in #83974. |
3450 | + |
3451 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 12 Feb 2007 16:57:05 +0100 |
3452 | + |
3453 | +apport (0.52) feisty; urgency=low |
3454 | + |
3455 | + * apport/report.py: Fix hook directory to be |
3456 | + /usr/share/apport/package-hooks/, not /u/s/apport/. |
3457 | + * Add doc/package-hooks.txt: Document per-package hooks, ship in package |
3458 | + apport. |
3459 | + * Add debian/apport.dirs: Ship package-hooks/ directory. |
3460 | + * gtk/apport-gtk, qt4/apport-qt: Fix detection of binary data so that the |
3461 | + CoreDump is not displayed as incomprehensible gibberish any more. |
3462 | + * Add qt4/apport-qt.desktop.in and add it to POTFILES.in. |
3463 | + * bin/apport-retrace: --verbose can now be specified multiple times to |
3464 | + increase verbosity and debug package installation. Also, fix some quoting |
3465 | + bugs. Thanks to Kees Cook for this! |
3466 | + * qt4/apport-qt: Fix restart button handling. (LP: #84202) |
3467 | + * qt4/apport-qt: Do not try to call splitlines() on a report value that is a |
3468 | + file reference; just display the reference instead. (LP: #84196) |
3469 | + * bin/apport: Disable for now, since the current kernel produces cropped |
3470 | + core dumps and thus we get totally useless crash reports |
3471 | + |
3472 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 9 Feb 2007 18:58:08 +0100 |
3473 | + |
3474 | +apport (0.51) feisty; urgency=low |
3475 | + |
3476 | + New feature: Qt4 GUI implementation: |
3477 | + |
3478 | + * Added qt4/: Qt4 implementation of the abstract user interface. Thanks to |
3479 | + Michael Hofmann <mh21@piware.de> for that! |
3480 | + * debian/copyright: Add Michael as copyright holder. |
3481 | + * setup.py, debian/control, debian/apport-qt.install: Packaging bits for |
3482 | + apport-qt. |
3483 | + * Move translations from apport-gtk to apport, since they are shared between |
3484 | + frontends. Add appropriate Conflicts/Replaces (we don't strictly need it |
3485 | + here because we strip them anyway, but we need that for the moving icon |
3486 | + anyway). |
3487 | + * Move icon from apport-gtk to apport, since it is/can be shared between |
3488 | + frontends. |
3489 | + |
3490 | + Improvements: |
3491 | + |
3492 | + * Replaced old apport.png icon stolen from bug-buddy with nice SVG one. |
3493 | + Thanks to Troy Sobotka for this! |
3494 | + * debian/copyright: Add Troy as copyright holder for the icon. |
3495 | + * bin/apport-retrace, man/apport-retrace.1: Document that report can now be |
3496 | + a LP bug number. |
3497 | + |
3498 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 8 Feb 2007 20:01:12 +0100 |
3499 | + |
3500 | +apport (0.50) feisty; urgency=low |
3501 | + |
3502 | + * gtk/apport-gtk.glade: Fix 'prolem' typo. |
3503 | + * bin/apport-retrace: Use python-launchpad-bugs to create a Report object |
3504 | + from a given Launchpad bug number (given as argument instead of the report |
3505 | + file path). Add appropriate p-l-b dependency. |
3506 | + * gtk/apport-gtk: Mark '(binary data)' string as translatable. |
3507 | + |
3508 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 8 Feb 2007 15:15:47 +0100 |
3509 | + |
3510 | +apport (0.49) feisty; urgency=low |
3511 | + |
3512 | + * gtk/apport-gtk.glade: Fix s/send/sent/ typo. Closes: LP#83061 |
3513 | + * apport/ui.py, create_crash_bug_title(): Cope with odd Tracebacks that are |
3514 | + shorter than three lines. Add test case from the bug. Closes: LP#83556 |
3515 | + * apport/python_hook: Do not create a report if the binary is ignored. Add |
3516 | + test case. Closes: LP#83566 |
3517 | + * gtk/apport-gtk: Do not save/alter crash dialog title any more, it's empty |
3518 | + now. |
3519 | + * apport/ui.py, open_url(): Check the user's session for |
3520 | + ksmserver/gnome-session to decide whether to prefer kfmclient or |
3521 | + gnome-open. Also, only call Firefox directly if gconf's prefered browser |
3522 | + is actually Firefox. Closes: LP#82007 |
3523 | + |
3524 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 6 Feb 2007 18:33:15 +0100 |
3525 | + |
3526 | +apport (0.48) feisty; urgency=low |
3527 | + |
3528 | + New feature: Infrastructure for reporting kernel Oopses: |
3529 | + |
3530 | + * Add bin/kernel_hook and ship it in /usr/share/apport. The kernel can call |
3531 | + this on an Oops. Add a test suite for it to test-hooks. |
3532 | + * apport/ui.py: Add support for reporting ProblemType: Kernel reports, and |
3533 | + add test suite for the workflow. |
3534 | + * gtk/apport-gtk{,.glade}: Add implementation for ui_present_kernel_error(). |
3535 | + |
3536 | + Improvements: |
3537 | + |
3538 | + * Merged various apport-retrace improvements from Kees' branch: |
3539 | + - Add various options to override some report fields with local values. |
3540 | + - Add --verbose option and be quiet by default. |
3541 | + - Read ProcMaps for additional library dependencies, to also catch |
3542 | + libraries loaded at runtime (plugins). |
3543 | + - Set correct debug file directory when starting an interactive gdb |
3544 | + session with -g. |
3545 | + * Add gtk/apport-gtk.desktop.in: Desktop file for calling apport-gtk in |
3546 | + 'file a distro bug' mode, to be displayed in gnome-panel's System menu |
3547 | + (see bug-reporting-tool spec). Also add a Makefile to do the |
3548 | + intltool-merge dance, add it to POTFILES.in, and ship it in |
3549 | + debian/apport-gtk.install. |
3550 | + * bin/apport: Call add_os_info(), so that we get architecture information |
3551 | + even for 'naked' reports which didn't go through UI enrichment. |
3552 | + * Add ./test-hooks: Test suite for the various package hooks shipped with |
3553 | + apport. Test the package problem hook for now. |
3554 | + |
3555 | + Bug fixes: |
3556 | + |
3557 | + * debian/control: Add missing python-apt dependency to apport |
3558 | + (apport-retrace needs it). Thanks to Kees Cook for noticing. |
3559 | + * debian/control: Add gdb dependency to python-apport. |
3560 | + * backends/packaging-dpkg.py test suite: Verify that packages returned by |
3561 | + get_dependencies() actually exist. This catches the 'chops off first |
3562 | + letter of package name sometimes' bug. |
3563 | + * backends/packaging-dpkg.py, _init_status(): Add missing space to Depends: |
3564 | + field format in dpkg-query call. This fixes the chopped-off first letters |
3565 | + in the 'Dependencies' report field. |
3566 | + * setup.py: Remove version attribute, we do not update and use it anyway. |
3567 | + * apport/ui.py: Do not crash if Package: specifies a nonexisting package. |
3568 | + Display a proper error message instead. Add test_run_crash_errors() test |
3569 | + case. |
3570 | + * apport/report.py, add_package_info(): Fix crash when the first dependency |
3571 | + is not installed. Closes: LP#82561 |
3572 | + * gtk/apport-gtk.glade: Remove window titles in alert dialogs to comply with |
3573 | + Gnome HIG. Closes: LP#83123 |
3574 | + |
3575 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 5 Feb 2007 12:19:35 +0100 |
3576 | + |
3577 | +apport (0.47) feisty; urgency=low |
3578 | + |
3579 | + * apport/report.py, add_hooks_info(): Only use first part of 'Package:', |
3580 | + there might be a version number and a changed files list which we must not |
3581 | + propagate to the import statement. Closes: LP#82566 |
3582 | + |
3583 | + -- Kees Cook <kees@ubuntu.com> Wed, 31 Jan 2007 15:37:11 -0800 |
3584 | + |
3585 | +apport (0.46) feisty; urgency=low |
3586 | + |
3587 | + * debian/control: Bump dependencies to python-apport due to recent changes |
3588 | + in expected return values in some UI functions. Closes: LP#82267 |
3589 | + * bin/package_hook: Remove erroneous 'import apport.packaging', which |
3590 | + shadows the packaging variable in the apport package. This unbreaks the |
3591 | + package problem hook. Closes: LP#82297 |
3592 | + |
3593 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 31 Jan 2007 07:51:24 +0100 |
3594 | + |
3595 | +apport (0.45) feisty; urgency=low |
3596 | + |
3597 | + New feature: Infrastructure for package install/upgrade failures: |
3598 | + |
3599 | + * Add bin/package_hook: Script for creating a report for a package |
3600 | + installation/upgrade failure. It receives a package name, a number of log |
3601 | + files, and an ErrorMessage: from stdin. This will be called from e.g. |
3602 | + dist-upgrader. |
3603 | + * setup.py, debian/apport.install: Ship package_hook. |
3604 | + * apport/ui.py: If ProblemType is 'Package', call a new function |
3605 | + self.ui_present_package_error() instead of presenting a crash. Add test |
3606 | + suite checks for the package error report workflow. |
3607 | + * apport/ui.py, create_crash_bug_title(): Create default bug title for |
3608 | + package reports. Add various test cases. |
3609 | + * gtk/apport-gtk{,.glade}: GTK implementation of ui_present_package_error(). |
3610 | + |
3611 | + New feature: Maintain a per-binary blacklist to inhibit apport crash reports |
3612 | + until the binary changes. Closes: LP#79408 |
3613 | + |
3614 | + * apport/report.py: Add new Report methods check_ignored() and mark_ignore() |
3615 | + to check for/set ignore list entries. Add test cases. |
3616 | + * apport/ui.py: Add another return value of ui_present_crash() to specify |
3617 | + whether or not to blacklist the current crash's executable. Check workflow |
3618 | + of both responses in the test suite. |
3619 | + * gtk/apport-gtk{,.glade}: Add a blacklist checkbox to the crash |
3620 | + notification dialogs. |
3621 | + * bin/apport: Do nothing if the current crash is blacklisted. |
3622 | + * test-apport: Test blacklisting. |
3623 | + |
3624 | + Bug fixes: |
3625 | + |
3626 | + * gtk/apport-gtk: Fix return code for restarting the application ('reopen' -> |
3627 | + 'restart'). Closes: LP#81422 |
3628 | + * test-apport: Adapt to new core_pattern kernel interface mode: |
3629 | + - Check core_pattern instead of the obsolete crashdump sysctl to determine |
3630 | + whether or not apport is running. |
3631 | + - Give apport max. 10 seconds to complete. The current kernel reaps the |
3632 | + crashed process as soon as writing the core dump to the pipe is |
3633 | + finished, but apport still needs to write the report file. |
3634 | + - Do not EXFAIL the test for crashes in nonwriteable cwd any more, since |
3635 | + it is now supposed to work (we do not write a core dump to the disk any |
3636 | + more). |
3637 | + * run-tests, use-local: Adapt to new core_pattern kernel interface. |
3638 | + * apport: Improve logging of exceptions, include environment variables. |
3639 | + * apport/report.py test suite: Use gdb to generate a test core dump, do not |
3640 | + rely on kill(SIGSEGV) and the kernel to do it (since we now use a pipe in |
3641 | + core_pattern). |
3642 | + * backends/packaging-dpkg.py: Fix return value of get_modified_files() if |
3643 | + dpkg .list file is missing. |
3644 | + * apport/report.py, add_package_info(): Do not produce stray empty lines for |
3645 | + uninstalled alternative dependencies. |
3646 | + * apport/report.py: Fix test_add_gdb_info_script() to not leave behind a |
3647 | + stray gzip process which randomly blocks stdin. Closes: LP#78421 |
3648 | + * backends/packaging-dpkg.py: Do not read the dpkg status in the |
3649 | + constructor, but lazily initialize it when actually calling a query |
3650 | + function. This avoids imposing the dpkg-query overhead for programs that |
3651 | + import the apport package without doing package queries (such as any |
3652 | + Python program under Ubuntu, due to the Python crash hook). |
3653 | + * apport/ui.py, create_crash_bug_title(): |
3654 | + - Do not crash on an empty StacktraceTop. Closes: LP#81677 |
3655 | + - Do not mention an unknown function name ('??') in the bug title; |
3656 | + instead, use the topmost function with a known name, or leave it out |
3657 | + at all. |
3658 | + - Add test cases for these situations. |
3659 | + * apport/report.py, _get_ignore_dom(): Do not throw an error for an empty |
3660 | + ignore list file. |
3661 | + |
3662 | + Code cleanups: |
3663 | + |
3664 | + * apport/report.py test suite: Refactorize generation of test crash program |
3665 | + and core dump generation. |
3666 | + * Consistently use 'in'/'not in' instead of find() for substring searches. |
3667 | + * Changed the packaging backend import, so that its methods can now be |
3668 | + accessed at apport.packaging instead of apport.packging.impl. |
3669 | + |
3670 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 28 Jan 2007 12:34:05 +0100 |
3671 | + |
3672 | +apport (0.44) feisty; urgency=low |
3673 | + |
3674 | + Some more 'Need for Speed' optimizations: |
3675 | + |
3676 | + * backends/packaging-dpkg.py, _check_files_md5(): Also accept a md5sum |
3677 | + string in addition to a md5sum file. |
3678 | + * backends/packaging-dpkg.py, get_modified_files(): Compare package file's |
3679 | + ctime and mtime against the package list file's mtime and only md5sum the |
3680 | + files that are newer. This drastically reduces the amount of md5suming |
3681 | + (usually to zero) and thus speeds up the information collection. |
3682 | + * backends/packaging-dpkg.py: Use a single hackish 'dpkg-query --show *' |
3683 | + as a portable variant of 'cat /var/lib/dpkg/status' to pre-fill the status |
3684 | + cache with all packages instead of calling dpkg -s on every single package |
3685 | + we query. This changes the time for figuring out dependencies and their |
3686 | + versions from 'unbearable for many packages' to 'barely noticeable'. |
3687 | + |
3688 | + New feature: per-package apport hooks to collect additional information: |
3689 | + |
3690 | + * apport/report.py: Add method add_hooks_info() which executes a function |
3691 | + add_info(report) from /usr/share/apport/<package>.py. Also add |
3692 | + appropriate test cases. This provides per-package hooks for apport. |
3693 | + * apport/ui.py: Call add_hooks_info() in the information collection thread. |
3694 | + |
3695 | + Bug fixes: |
3696 | + |
3697 | + * apport/report.py: Add some more test cases for _check_interpreted() for |
3698 | + Python scripts. |
3699 | + * apport/python_hook.py: Check for a correct ExecutablePath in |
3700 | + test_general(). |
3701 | + * apport/python_hook.py: Use fileutils.likely_packaged() instead of |
3702 | + checking for /tmp and home, so that we ignore stuff in /usr/local, too. |
3703 | + Closes: LP#81244 |
3704 | + * apport/python_hook.py: If we figure out an ExecutablePath which is not |
3705 | + actually an executable, do not create a report. This particularly affects |
3706 | + interactive python sessions where sys.argv[0] is empty and thus |
3707 | + ExecutablePath ends up being the current directory. Add test cases. |
3708 | + Closes: LP#81237 |
3709 | + |
3710 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 24 Jan 2007 17:16:04 +0100 |
3711 | + |
3712 | +apport (0.43) feisty; urgency=low |
3713 | + |
3714 | + * apport/ui.py: Add method create_crash_bug_title() to construct a |
3715 | + reasonable standard bug title for crash reports, so that the automatic |
3716 | + duplicate detection actually has a chance to work. Also add test cases for |
3717 | + various signal crashes and an unhandled Python exception. |
3718 | + * apport/ui.py, file_report(): Submit a default bug title for crash reports. |
3719 | + Closes: LP#79657 |
3720 | + |
3721 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 23 Jan 2007 16:26:40 +0100 |
3722 | + |
3723 | +apport (0.42) feisty; urgency=low |
3724 | + |
3725 | + New feature: https://wiki.ubuntu.com/ApportImprovements (kernel interface |
3726 | + change): |
3727 | + |
3728 | + * bin/apport: Support calling without arguments, to support new semantics |
3729 | + agreed in the ApportImprovements spec: macro values (in particular, pid |
3730 | + and signal number) are passed as environment variables. |
3731 | + * preloadlib/libapport.c: Simulate new kernel behaviour described above. |
3732 | + * debian/apport.init: Set the kernel's core_pattern sysctl to pipe to apport |
3733 | + if the edgy-style 'crashdump-helper' sysctl helper does not exist. |
3734 | + |
3735 | + Bug fixes: |
3736 | + |
3737 | + * bin/apport-retrace: Beautify error message when report file is not |
3738 | + accessible. Closes: LP#79568 |
3739 | + * apport/ui.py: Fix crash in the bug pattern search thread if we could |
3740 | + not determine a package name. Closes: LP#77872 |
3741 | + * bin/apport: Only unlink the core dump if it still exists. Closes: LP#80866 |
3742 | + * gtk/apport-gtk.glade: Fix expand/fill attributes so that the expander gets |
3743 | + all the space when resizing the window. Closes: LP#80987 |
3744 | + * problem_report.py, write_mime(): Make sure that multi-line values that go |
3745 | + to the summary are terminated with a newline. |
3746 | + * apport/ui.py: Fix error message invocation for reporting cloakroom upload |
3747 | + failure. |
3748 | + * problem_report.py, write_mime(): Fix off-by-one comparison of the 'inline |
3749 | + text' treshold, so that apport's StacktraceTop field appears in bug |
3750 | + summaries. Also fix a corner case in CR line ending handling. Check both |
3751 | + things in the test suite. |
3752 | + * gtk/apport-gtk: Add missing 'import subprocess.'. Closes: LP#81007 |
3753 | + * debian/control: Bump apport's and apport-gtk's dependency to python-apport |
3754 | + to make sure that apport.ui is available. Closes: LP#81019 |
3755 | + * apport/ui.py: Add missing 'import pwd'. Closes: LP#81033 |
3756 | + |
3757 | + Minor improvements: |
3758 | + |
3759 | + * apport/ui.py: Get the cloakroom ticket number from the |
3760 | + X-Launchpad-Blob-Token HTTP header instead of parsing the resulting page. |
3761 | + |
3762 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 23 Jan 2007 11:27:20 +0100 |
3763 | + |
3764 | +apport (0.41) feisty; urgency=low |
3765 | + |
3766 | + New feature: Use Malone cloakroom for uploading reports. Closes: LP#70919 |
3767 | + |
3768 | + * gtk/apport-gtk.glade: Redesign bug reporting dialog to have a 'Create bug |
3769 | + report' and a 'Cancel' button. Also assign GTK_RESPONSE_* constants to the |
3770 | + dialog buttons. Go back to Glade 2 since Glade 3 still sucks too much. |
3771 | + * gtk/apport-gtk: Adjust workflow for sending report to Malone cloakroom |
3772 | + instead of asking the user to attach the file. Sending is not yet |
3773 | + implemented, though. |
3774 | + * gtk/apport-gtk: Do not show any dialogs any more when filing a bug. |
3775 | + * Add apport/MultipartPostHandler.py: This module provides an urllib2 opener |
3776 | + for uploading file attachments to forms over HTTP POST. This module is |
3777 | + (C) 2006 Will Holcomb <wholcomb@gmail.com> and was taken from |
3778 | + http://odin.himinbi.org/MultipartPostHandler.py. (This is a serious hole |
3779 | + of the Python standard library IMHO.) |
3780 | + * apport/ui.py, file_report(): Upload blob to Malone (edge.launchpad.net for |
3781 | + now), retrieve the ticket, and pass it to +filebug. |
3782 | + |
3783 | + Refactorizations: |
3784 | + |
3785 | + * gtk/apport-gtk: Major refactorization to use modal dialogs and run() |
3786 | + instead of loosely coupled event handlers. |
3787 | + * Add apport/ui.py: Abstract frontend which encapsulates the logic, workflow |
3788 | + and UI independent bits and provides UI hooks for concrete |
3789 | + implementations. This both makes it easy to write more frontends like Qt |
3790 | + or CLI, and also makes the code automatically testable. Add an extensive |
3791 | + testsuite. |
3792 | + * run-tests: Add ui.py testsuite. |
3793 | + * gtk/apport-gtk: Port to ui.py's UserInterface (which means moving 1/3 of |
3794 | + the code into the new ui_*() methods and throwing away the rest). |
3795 | + * Add apport/REThread.py: Enhanced threading.Thread class that can propagate |
3796 | + the return value and uncaught exceptions of run() to the calling thread. |
3797 | + * apport/ui.py: Get rid of thread_check_bugpatterns() and hackish exception |
3798 | + handling, rewrite using REThread. |
3799 | + * apport/ui.py, gtk/apport-gtk: Add progress bar to report upload. It is |
3800 | + indefinite for now, because neither urllib2 nor httplib support upload |
3801 | + progress. |
3802 | + |
3803 | + Bug fixes: |
3804 | + |
3805 | + * gtk/apport-gtk.glade: Merged Gnome HIG fixes from Sebastian Heinlein, |
3806 | + thank you! |
3807 | + * Merge patch from Sebastian Heinlein to properly treat the apport-gtk icon |
3808 | + the dh_iconcache way and make it themeable. Thank you! |
3809 | + * gtk/apport-gtk: Remove periods from primary dialog texts to comply with |
3810 | + Gnome HIG standards. |
3811 | + * backends/packaging-dpkg.py, get_file_package(): Process list files in |
3812 | + chunks of 100, so that we do not exceed the maximum command line length if |
3813 | + there is a large number of packages installed. Closes: LP#64839 |
3814 | + * gtk/apport-gtk: Use pgrep with -u instead of pidof for testing whether the |
3815 | + crashed process is already running again, so that we do not match |
3816 | + processes of other users. Add procps package dependency for this. |
3817 | + * gtk/apport-gtk: Only offer to restart programs that are in the $PATH. E. |
3818 | + g. /usr/lib/firefox/firefox-bin cannot be called directly. |
3819 | + Closes: LP#79623 |
3820 | + * apport/report.py: Disassemble 16 instructions instead of 32 bytes to |
3821 | + become independent of the instruction size. Thanks to Kees Cook for the |
3822 | + patch! |
3823 | + |
3824 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 22 Jan 2007 10:47:33 +0100 |
3825 | + |
3826 | +apport (0.40) feisty; urgency=low |
3827 | + |
3828 | + * debian/control: Add missing python-dev build dependency, which is |
3829 | + apparently required for 2.5 now. |
3830 | + |
3831 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 15 Jan 2007 11:06:20 +0100 |
3832 | + |
3833 | +apport (0.39) feisty; urgency=low |
3834 | + |
3835 | + * Introduce abstract packaging interface and move all dpkg/apt specific bits |
3836 | + to a dpkg implementation of this packaging interface (merge |
3837 | + apport/abstract-pkg branch): |
3838 | + - Add apport/packaging.py: Abstract packaging system query interface. |
3839 | + - Add backends/packaging-dpkg.py: dpkg implementation of abstract |
3840 | + packaging interface. |
3841 | + - run-tests: Run tests of all backends. |
3842 | + - apport/fileutils.py, apport/report.py: Port to packaging.py interface. |
3843 | + - debian/control: Drop python-apport's 'python-apt' dependency since the |
3844 | + backend only uses dpkg now (without measurable performance penalty since |
3845 | + it uses internal caching). |
3846 | + - debian/rules: Install backends/packaging-dpkg.py as our packaging |
3847 | + backend to apport/packaging_impl.py and remove it again on clean. |
3848 | + |
3849 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 13 Jan 2007 15:53:08 +0100 |
3850 | + |
3851 | +apport (0.38) feisty; urgency=low |
3852 | + |
3853 | + * Add ./COPYING: GPL license. |
3854 | + * debian/rules: Build POT file again. |
3855 | + * apport/fileutils.py: Add get_all_system_reports() and |
3856 | + get_new_system_reports() and added test cases. Now the test suite can also |
3857 | + be run as root to be able to actually check their complete behaviour. |
3858 | + Adapt the other tests to get along with running the tests as root. |
3859 | + * bin/apport-checkreports: Add option --system to check for system crash |
3860 | + reports. Closes: LP#62316 |
3861 | + * gtk/apport-gtk: If called through sudo to process system crashes, drop |
3862 | + privileges to the original user in open_url() so that we get the web |
3863 | + browser correctly. (LP#62316) Caveat: The user cannot actually attach the |
3864 | + crash report file directly since it is not accessible to the user; this |
3865 | + will get fixed once Malone is able to link a bug report with uploaded |
3866 | + blobs. |
3867 | + |
3868 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 12 Jan 2007 14:29:44 +0100 |
3869 | + |
3870 | +apport (0.37) feisty; urgency=low |
3871 | + |
3872 | + * problem_report.py: Remove the requirement that values must not contain |
3873 | + empty lines. Add test cases that reading and writing values with empty |
3874 | + lines works, and add a test case that load() properly complains about |
3875 | + empty lines in debcontrol encoding (empty lines in values are encoded with |
3876 | + a single space). Closes: LP#78094 |
3877 | + * apport/report.py test suite: Do not rely on a particular structure of the |
3878 | + 'cat' stacktrace; apparently this is not consistent across architectures. |
3879 | + Instead, compile a segfaulting mini C program, let it dump core, and test |
3880 | + add_gdb_info() on it instead. This also allows us for a more rigid check |
3881 | + of StacktraceTop. |
3882 | + |
3883 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 8 Jan 2007 14:44:08 +0100 |
3884 | + |
3885 | +apport (0.36) feisty; urgency=low |
3886 | + |
3887 | + * gtk/apport-gtk.glade: Restore pulse step of progress bar (this apparently |
3888 | + got destroyed when saving with Glade 3). |
3889 | + * gtk/apport-gtk{,.glade}: Terminate the program properly when closing the |
3890 | + progress dialog instead of exiting with an exception. |
3891 | + * gtk/apport-gtk: Defer opening of the bug reporting window a bit so that |
3892 | + it appears on top of the browser window. Also enable the task bar blinking |
3893 | + for it when it is in the background. |
3894 | + * gtk/apport-gtk.glade: Restore vertical padding of bug report dialog labels |
3895 | + (another Glade 3 transition regression). |
3896 | + * bin/apport-retrace, apport/report.py: Call gdb on InterpreterPath if |
3897 | + present; calling it on a script does not yield anything useful. Add a test |
3898 | + case to report.py. |
3899 | + * debian/apport.init: Use mkdir -p instead of install -d, since install is |
3900 | + not in /bin. Thanks to Kees Cook for catching this. |
3901 | + * debian/control: Add missing python-apport dependency 'python-apt', which |
3902 | + is not caught by ${python:Depends}. |
3903 | + * gtk/apport-gtk: Catch MemoryError when loading a report and display an |
3904 | + error dialog instead of just crashing. Closes: LP#76235 |
3905 | + * gtk/apport-gtk: Properly catch exceptions from the bug pattern check |
3906 | + thread to avoid useless backtraces like in bug #75160. |
3907 | + * gtk/apport-gtk: Catch exceptions from decoding of damaged reports and |
3908 | + display an error message instead of crashing. Closes: LP#77149 |
3909 | + * apport/report.py: Add missing import of 'time' to test suite. |
3910 | + |
3911 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 5 Jan 2007 09:49:01 +0100 |
3912 | + |
3913 | +apport (0.35) feisty; urgency=low |
3914 | + |
3915 | + Optimizations: |
3916 | + |
3917 | + * apport/fileutils.py: Split out heuristics for determining whether a file |
3918 | + belongs to a package to new function likely_packaged() and add test cases. |
3919 | + * bin/apport: Do not use the expensive find_file_package() any more, use |
3920 | + likely_packaged() instead. This will create initial reports in some |
3921 | + corner cases (like custom non-packaged executables in /usr/bin/), but |
3922 | + greatly reduces I/O impact at crash time. We rely on apport-gtk to deal |
3923 | + with reports that do not actually belong to a packaged executable. |
3924 | + * apport/report.py, add_gdb_info(): Call gdb just once and split the output |
3925 | + instead of calling it again for each command. This should significantly |
3926 | + speed up the gdb stage especially for large programs/core dumps. |
3927 | + * Use cStringIO instead of StringIO in modules. |
3928 | + * gtk/apport-gtk: Code cleanup and refactorization: |
3929 | + - Move iteration over crash reports into __main__ to simplify housekeeping |
3930 | + in the ApportGTK class and get rid of some functions. |
3931 | + - Refactor creation of temporary report file. |
3932 | + * gtk/apport-gtk.glade: Split the text in the progress bar dialog so that we |
3933 | + can use it for multiple steps (like uploading data to Malone) while not |
3934 | + breaking translations. |
3935 | + |
3936 | + New feature: Bug reporting tool (https://wiki.ubuntu.com/BugReportingTool) |
3937 | + |
3938 | + * gtk/apport-gtk: Split out crash report initialization to new function |
3939 | + show_crashes() so that we can use the frontend for other purposes like bug |
3940 | + reporting. |
3941 | + * gtk/apport-gtk: Add --file-bug, --package, and --pid options; if given, |
3942 | + create a bug report about the given package instead of viewing crash |
3943 | + reports. |
3944 | + * gtk/apport-gtk{,.glade}: Generalize some strings to not talk about 'crash' |
3945 | + any more, to make them suitable for bug reporting, too. |
3946 | + * gtk/apport-gtk: Support --file-bug without specifying a package or a PID |
3947 | + for filing generic distro bugs. |
3948 | + * problem_report.py: Add new method write_mime() to encode a problem report |
3949 | + in MIME/Multipart RFC 2822 format (i. e. an email with attachments). Short |
3950 | + values are aggregated into the first inline text/plain part, large values, |
3951 | + binary values, and file references get gzip compressed separate |
3952 | + attachments. Also add various test cases. |
3953 | + |
3954 | + Bug/crash information: |
3955 | + |
3956 | + * apport/report.py, add_user_info(): Add list of system groups that the user |
3957 | + belongs to. |
3958 | + * bin/apport: Call add_user_info(), check functionality in test-apport. |
3959 | + * apport/report.py, add_gdb_info(): Add field 'StacktraceTop' with the top |
3960 | + five functions on the stack and no local variables. This reduced 'glimpse' |
3961 | + is suitable for inline display in bug reports and automatic processing |
3962 | + (dup finders, etc). |
3963 | + |
3964 | + Bug fixes: |
3965 | + |
3966 | + * po/Makefile: Add top_srcdir to work with current intltool. |
3967 | + * po/de.po: Unfuzz some strings. |
3968 | + * apport/report.py, add_gdb_info(): Strip away the 'No symbol table info |
3969 | + available' messages from stack traces. |
3970 | + * apport/report.py, test_search_bug_patterns(): Use security.u.c. instead |
3971 | + of archive.u.c., since the latter times out too often. |
3972 | + |
3973 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 3 Jan 2007 16:45:20 +0100 |
3974 | + |
3975 | +apport (0.34) feisty; urgency=low |
3976 | + |
3977 | + * apport/fileutils.py, mark_report_seen(): Do not bail out if os.utime() |
3978 | + fails due to access permissions. This happens if the file does not belong |
3979 | + to the user calling apport-gtk, but is world-readable (such as ubiquity |
3980 | + crash reports). If utime() fails, repeatedly open()/close() the file for |
3981 | + reading until atime != ctime, or the 1.2s timeout is reached. |
3982 | + Closes: LP#72250 |
3983 | + * apport/python_hook.py: Add unit test, call that in run-tests. |
3984 | + * apport/python_hook.py: Chmod the generated report to 0600 to not expose |
3985 | + potentially private data to the world, and to be consistent with other |
3986 | + crash reports. |
3987 | + * apport/fileutils.py: Add check_files_md5() and test cases. |
3988 | + * apport/report.py, add_package_info(): Append list of modified package |
3989 | + files to Package: and Dependencies: value. Closes: LP#70946 |
3990 | + * bin/apport-retrace: Get along with Package:/Dependencies: fields with list |
3991 | + of modified files. |
3992 | + |
3993 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 22 Dec 2006 12:40:55 +0100 |
3994 | + |
3995 | +apport (0.33) feisty; urgency=low |
3996 | + |
3997 | + * debian/rules: Convert to cdbs. This fixes the dh_pysupport invocation |
3998 | + along the way, too. |
3999 | + * gtk/apport-gtk: Rework web browser invocation: Use kfmclient if available, |
4000 | + fall back to firefox-remote, then to webbrowser.open(). Do not call |
4001 | + x-www-browser any more since this would block if no running browser was |
4002 | + open before. |
4003 | + * Drop the apport_utils module (and with it the python-apport-utils |
4004 | + package), it became too much of a dumping ground. The report file handling |
4005 | + functions now live in apport.fileutils, and the debugging information |
4006 | + collectors are now methods of a new 'Report' class (subclass of |
4007 | + ProblemReport) in the new apport.report module. Adjust all programs |
4008 | + accordingly. |
4009 | + * Add debian/python-apport.postinst: Remove old .pyc and .pyo cruft on |
4010 | + upgrades to clean up after our broken dh_pysupport invocation in earlier |
4011 | + versions, so that the new modules are actually used. |
4012 | + * Remove debian/apport.postinst: Those cleanups were only necessary for |
4013 | + intra-edgy upgrades. |
4014 | + |
4015 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 19 Dec 2006 01:15:27 +0100 |
4016 | + |
4017 | +apport (0.32) feisty; urgency=low |
4018 | + |
4019 | + * apport_utils.py: Filter out "no debugging symbols found" warnings from gdb |
4020 | + outputs, and add some tests for this. Thanks to Kees Cook for the patch! |
4021 | + * test-apport: Fix AGENTPATH directory when building the preload library |
4022 | + (recently moved to bin/). |
4023 | + * use-local: Fix path to apport as well (recently moved to bin/). |
4024 | + * apport-retrace: Use ldd on InterpreterPath if present; ldd'ing scripts |
4025 | + will not get us very far. Closes: LP#72201 |
4026 | + |
4027 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 14 Dec 2006 13:42:58 +0100 |
4028 | + |
4029 | +apport (0.31) feisty; urgency=low |
4030 | + |
4031 | + * Move scripts to bin/ in source package. |
4032 | + * Add apport/python_hook.py: Default exception handler for Python, to create |
4033 | + apport reports for unhandled exceptions. Thanks to Robert Collins |
4034 | + <robert@ubuntu.com> for this! Closes: LP#70957 |
4035 | + * Add new package python-apport to ship the new Python package 'apport'. |
4036 | + This includes the python crash hook for now, but in the near future |
4037 | + apport-utils will get redesigned and put into this package, too. |
4038 | + * debian/control: apport now depends on python-apport instead of |
4039 | + python-apport-utils. |
4040 | + * apport_utils.py: Quiesce gdb error messages in test suite. |
4041 | + |
4042 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 25 Nov 2006 12:30:41 +0100 |
4043 | + |
4044 | +apport (0.30) feisty; urgency=low |
4045 | + |
4046 | + * test-apport, use-local: Support both kernel 2.6.17 and 2.6.19 sysctl names |
4047 | + (crashdump-helper vs. crashdump). |
4048 | + * gtk/apport-gtk.glade: Improve dialog title capitalization. |
4049 | + Closes: LP#70652. |
4050 | + * debian/apport.cron.daily: Immediately exit if /var/crash does not exist. |
4051 | + Create /var/crash in debian/apport.init if it does not exist. |
4052 | + Closes: LP#71599 |
4053 | + * Convert all tabs in Python source code files to spaces to comply to PEP 8. |
4054 | + Thanks to Robert Collins for pointing this out. |
4055 | + * apport_utils.py, gtk/apport-gtk: Do not pass None to subprocess arguments |
4056 | + if report belongs to a non-packaged program. Thanks to Robert Collins for |
4057 | + discovering and fixing this! Closes: LP#70942 |
4058 | + * debian/apport.init: Change /var/crash permissions to 1777, so that custom |
4059 | + crash handlers (in Python/Mono/etc.) can put reports there. |
4060 | + |
4061 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 25 Nov 2006 10:44:33 +0100 |
4062 | + |
4063 | +apport (0.29) feisty; urgency=low |
4064 | + |
4065 | + * apport-retrace: Do not crash if a linked library is not a dependency. |
4066 | + Closes: LP#65914 |
4067 | + * apport_utils.py: |
4068 | + - Add test_find_file_package_diversion() selftest to check diversion |
4069 | + handling. |
4070 | + - find_file_package(): Check for and respect diversions. |
4071 | + - Closes: LP#65917 |
4072 | + * debian/apport.init, test-apport, use-local: Adapt to 'crashdump-helper' -> |
4073 | + 'crashdump' sysctl renaming in 2.6.19. |
4074 | + * test-apport: Restore cwd even when failing a test. |
4075 | + * problem_report.py, ProblemReport.write(): Support file-like objects as |
4076 | + argument of file references to support direct reading from pipes. Add test |
4077 | + case test_write_fileobj(). |
4078 | + * apport: Support '-' as core file argument, in which case the core will be |
4079 | + read from stdin. This paves the way for using Linux 2.6.19's 'pipe |
4080 | + core_pattern' feature. Bump python-problem-report dependency to >= 0.29 |
4081 | + for this. |
4082 | + * apport: Confine permissions of log file to root:adm 0640, just in case. |
4083 | + * apport: Temporarily drop real u/gid to target user for the os.access() |
4084 | + tests, so that normal users cannot verify the existence of a given |
4085 | + inaccessible file. Add comprehensive tests to apport_utils' test suite and |
4086 | + test-apport. Thanks to Kees Cook for this patch! |
4087 | + * apport_utils.py, find_file_package(): Terminate fgrep options with '--' to |
4088 | + avoid problems with funny file names. Thanks to Kees Cook for spotting |
4089 | + this! |
4090 | + * test-apport: Automatically detect whether ULIMIT_CORE is nonzero, and |
4091 | + adapt tests accordingly: check that core still exists after invoking |
4092 | + apport, and clean it up. |
4093 | + * apport-retrace: Add new mode -g/--gdb which starts an interactive gdb |
4094 | + session with the report's core dump. Add this to man/apport-retrace.1, too. |
4095 | + * apport-retrace: If -c is given, completely remove the CoreDump field from |
4096 | + the report instead of setting it to 'removed'. |
4097 | + * test-apport: When using 'lib' mode, point APPORT_LOG_FILE to a temporary |
4098 | + file. Print it if the test suite fails. |
4099 | + * test-apport: Fix EXFAILure of the 'core dump works for non-writable cwds' |
4100 | + test case. |
4101 | + * preloadlib: Support -DPIPE_CORE mode which emulates the |
4102 | + pipe-in-core_pattern mode of kernel 2.6.19. |
4103 | + * test-apport: Build preload library with core piping. No more failed test |
4104 | + suite checks in 'lib' mode. |
4105 | + |
4106 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 5 Nov 2006 07:10:30 -0800 |
4107 | + |
4108 | +apport (0.28) edgy; urgency=low |
4109 | + |
4110 | + "No core - ignore!" |
4111 | + |
4112 | + * apport: Do not create a report for crashes which we do not get a core dump |
4113 | + for. The reports are useless and only clutter our bug tracker. |
4114 | + |
4115 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 9 Oct 2006 15:22:32 +0200 |
4116 | + |
4117 | +apport (0.27) edgy; urgency=low |
4118 | + |
4119 | + * apport: Ignore SIGABRT for now; it's usually signalled from abort() or |
4120 | + assertion failures and we only get reports with unusable stack traces for |
4121 | + it (see #61938). |
4122 | + * gtk/apport-gtk: If gnome-open is not available, fall back to x-www-browser |
4123 | + instead of using webbrowser.py, to respect default browser in XFCE. |
4124 | + Closes: LP#64209 |
4125 | + * apport: use os.nice() instead of executing 'renice'. Thanks to Benoit |
4126 | + Boissinot for noticing. |
4127 | + * apport_utils.py, find_file_package(): Lower() both strings in the speedup |
4128 | + heuristics to match e. g. /usr/bin/Xorg -> xserver-xorg. Thanks to Kees |
4129 | + Cook! |
4130 | + * apport_utils.py, report_add_package_info(): Do not crash if we encounter a |
4131 | + 'None' current version, which can happen with uninstalled alternative |
4132 | + dependencies. Thanks to Kees Cook for tracking this down! |
4133 | + |
4134 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 6 Oct 2006 17:15:08 +0200 |
4135 | + |
4136 | +apport (0.26) edgy; urgency=low |
4137 | + |
4138 | + * apport-retrace: Clean up code a bit: |
4139 | + - Move option parsing to separate function. |
4140 | + - Use apport_utils' report_add_gdb_info() instead of duplicating the gdb |
4141 | + code. |
4142 | + * apport_utils.py, report_add_gdb_info(): Add optional parameter 'debugdir' |
4143 | + to specify an alternate debug file symbol root directory. |
4144 | + * apport-retrace: Add option -d/--download-debug to automatically download |
4145 | + available ddebs, create a temporary debug symbol directory from already |
4146 | + installed and downloaded ddebs, and point gdb to use that. Also add option |
4147 | + -C/--cache-dir to specify a permanent ddeb cache directory (by default, a |
4148 | + temporary one is used). Update the manpage accordingly. |
4149 | + * apport-retrace: Make the best out of a report without packaging |
4150 | + information (which can happen if the user does not click on 'report bug' |
4151 | + in apport-gtk). |
4152 | + * apport_utils, report_add_proc_info(): |
4153 | + - Move heuristics for detecting interpreted scripts to a separate function |
4154 | + to be able to provide separate test cases for it. Check a few more |
4155 | + special cases for mono programs. |
4156 | + - Make interpreter heuristics even scarier to detect some more mono corner |
4157 | + cases (like banshee and beagled-helper). Closes: LP#58859 |
4158 | + |
4159 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 4 Oct 2006 19:10:47 +0200 |
4160 | + |
4161 | +apport (0.25) edgy; urgency=low |
4162 | + |
4163 | + * Drop apport-gtk's update-notifier dependency to a Recommends:. |
4164 | + * apport_utils.py, report_add_gdb_info(): Add register dump and disassembly |
4165 | + of the last 32 bytes, they might be useful to see what's going on |
4166 | + sometimes. Thanks to Kees Cook for the idea and the patch. |
4167 | + * test-apport, check_crash(): Verify that a crash does not leave a core file |
4168 | + behind. (Test for LP#62972) |
4169 | + * preloadlib/libapport.c: Do not unlink the core file after calling apport, |
4170 | + but set REMOVE_CORE=1 environment instead. This matches the current |
4171 | + kernel behaviour. |
4172 | + * apport: Register an atexit handler as early as possible for unlinking the |
4173 | + core dump if REMOVE_CORE environment is set. Closes: LP#62972 |
4174 | + * apport: Set nice level 10 instead of 5. Closes: LP#63099 |
4175 | + |
4176 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 2 Oct 2006 14:21:53 +0200 |
4177 | + |
4178 | +apport (0.24) edgy; urgency=low |
4179 | + |
4180 | + The "Need for speed" release -- rrrroarrr! |
4181 | + |
4182 | + * apport: Remove _copy_shrink_corefile(): While this has an enormous impact |
4183 | + on the size of an uncompressed core dump, it only causes a negligible size |
4184 | + reduction of the bzip2'ed core, but it needs a lot of I/O resources for |
4185 | + large core dumps. |
4186 | + * problem_report.py: |
4187 | + - Use zlib instead of bzip2 for compressing the binary data (in |
4188 | + particular, core dumps). This results in slightly bigger files, but speeds |
4189 | + up compression a lot (30 seconds vs. ~2:45 minutes for a Firefox core dump |
4190 | + on my slow iBook). Closes: LP#61538 |
4191 | + - ProblemReport.read(): Support both bzip2 and zlib compression to be able |
4192 | + to read existing reports, too. |
4193 | + - Add/Adapt test cases. |
4194 | + * Move InformationCollector._get_gdb() from apport to apport_utils.py |
4195 | + report_add_gdb_info(), and add a test case for it. |
4196 | + * apport_utils.py, report_add_package_info(): Support calling without a |
4197 | + package name, then it will be figured out from ExecutableName. Extend test |
4198 | + case accordingly. |
4199 | + * test-apport: Do not require apport reports to contain gdb, packaging, and |
4200 | + OS information, since we are going to move them out of apport. |
4201 | + * apport: Do not collect static information. It requires a lot of CPU and |
4202 | + I/O resources and slows down the machine a lot, and it can be added to |
4203 | + the report later in the frontend. This also gets rid of the entire |
4204 | + InformationCollector class, since everything has been moved to |
4205 | + apport_utils.py now. Closes: LP#62542 |
4206 | + * apport: Do not intercept KeyboardInterrupt as unhandled exception (only |
4207 | + useful for command line debugging, though). |
4208 | + * problem_report.py: Add test case for appending new data to an existing |
4209 | + report, fix write() function to not rely on an existing ProblemType key. |
4210 | + * problem_report.py: Add new method ProblemReport.add_to_existing() to |
4211 | + update an already existing problem report with new data. Add test case. |
4212 | + * apport_utils.py, mark_report_seen(): Use os.utime() instead of |
4213 | + open()/read() and a timeout for simpler and faster operation. |
4214 | + * gtk/apport-gtk: |
4215 | + - Collect gdb/packaging/operating system information when the user chooses |
4216 | + to file a bug and update the apport report. |
4217 | + - Change the 'Downloading bug patterns...' progress dialog to 'Collecting |
4218 | + information about the crash...'. |
4219 | + * debian/control: Bumped library dependencies of apport-gtk, added |
4220 | + update-notifer dependency. |
4221 | + |
4222 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 29 Sep 2006 15:47:56 +0200 |
4223 | + |
4224 | +apport (0.23) edgy; urgency=low |
4225 | + |
4226 | + * apport: Reset signal handler to SIG_IGN in the crash signal handler, to |
4227 | + avoid an endless crash/handler loop (noticed during debugging LP#61708). |
4228 | + * debian/apport.init: Do not let the script run with set -e, so that |
4229 | + do_{start,stop} can deliver their return codes for proper evaluation, |
4230 | + instead of immediately existing. Closes: LP#61796 |
4231 | + * test-apport: Check that SIGQUIT does not generate a report. (Check for |
4232 | + bug #62511). |
4233 | + * apport: Ignore SIGQUIT. Closes: LP#62511 |
4234 | + |
4235 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 28 Sep 2006 20:57:38 +0200 |
4236 | + |
4237 | +apport (0.22) edgy; urgency=low |
4238 | + |
4239 | + * apport_utils.py, report_add_proc_info(): Make 'interpreted script' |
4240 | + detection more general to also work for mono programs. |
4241 | + * test-apport: Check that non-packaged scripts do not generate a report. |
4242 | + * apport: Call ic.collect_runtime_information() earlier and drop the local |
4243 | + /proc/pid/exe examination, so that we get proper script detection. This |
4244 | + avoids getting crash reports for non-packaged scripts (see test case |
4245 | + change from above). |
4246 | + * apport: Do not try to chmod the report file if we could not create it and |
4247 | + output to stderr instead (this mainly affects local testing only). |
4248 | + * apport_utils.py, find_file_package(): First grep the package lists whose |
4249 | + names are a substring of the crashed binary name (or vice versa), to |
4250 | + immensely speed up the package name determination in many cases. |
4251 | + * apport: Drop the maximum number of consecutive crashes per executable |
4252 | + from 5 to 2. 5 creates a too bad user experience and creates the |
4253 | + impression that it will never stop. Closes: LP#61078 |
4254 | + |
4255 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 19 Sep 2006 16:16:46 +0200 |
4256 | + |
4257 | +apport (0.21) edgy; urgency=low |
4258 | + |
4259 | + * apport: Keep a partially written report with '000' permissions, and only |
4260 | + chmod it to 0600 when it is fully written. This stops update-notifier from |
4261 | + picking up half-written reports and get activated several times. |
4262 | + Closes: LP#59988 |
4263 | + * apport: Add the executable path to the first line of logging. |
4264 | + * apport: Run the complete code under control of the general exception |
4265 | + fallback handler. |
4266 | + * debian/apport.default: Increase maximum core size to 200 MB, to also catch |
4267 | + Firefox and Evolution core dumps. |
4268 | + * apport_utils.py, find_file_package(): Before searching the dpkg database |
4269 | + (which is expensive), check if the executable path matches a whitelist of |
4270 | + path prefixes. This replaces the weaker blacklist (/tmp and /home) in |
4271 | + apport itself. |
4272 | + * gtk/apport-gtk: Show a progress dialog while checking for bug patterns and |
4273 | + execute report_search_bug_patterns() in a separate thread, so that the UI |
4274 | + is not potentially blocked for a long time. |
4275 | + * apport: Gracefully abort if we cannot readlink /proc/pid/exe, instead of |
4276 | + falling over with an exception. Closes: LP#59993 |
4277 | + * debian/rules: Use 'multiuser' instead of 'defaults' for dh_installinit. |
4278 | + Clean up the unnecessary rc symlinks in postinst and add appropriate |
4279 | + sysv-rc dependency. |
4280 | + |
4281 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 14 Sep 2006 23:16:26 +0200 |
4282 | + |
4283 | +apport (0.20) edgy; urgency=low |
4284 | + |
4285 | + * apport: Renice ourself to priority 5 to not slow down the user's processes |
4286 | + so heavily. |
4287 | + * Add manpages for apport-retrace(1) and apport-unpack(1) and install them |
4288 | + into apport. Closes: LP#58463 |
4289 | + * problem_report.py: Test attaching two files instead of one in the |
4290 | + test_write_file() regression check to assert correct key sorting. |
4291 | + * problem_report.py: Alter write() method to sort binary data to the end of |
4292 | + the report. This makes reports easier to read, and also shows relevant |
4293 | + information more quickly when progressively loading them in a web browser. |
4294 | + Adapt regression tests accordingly. |
4295 | + * Move setting of ExecutablePath from apport's InformationCollector ctor to |
4296 | + apport_utils' report_add_proc_info(), where it belongs to. Check |
4297 | + ExecutablePath in apport_utils' regression tests. |
4298 | + * apport-unpack: Support '-' as report argument to read from stdin. |
4299 | + * apport_utils.py, report_add_proc_info(): |
4300 | + - Apply some heuristics to determine whether the crashed process is an |
4301 | + interpreted script (check if the Name in /proc/pid/status matches |
4302 | + the second /proc/pid/cmdline part, and if that command line argument is |
4303 | + an existing executable file). In the case of an interpreted script, set |
4304 | + ExecutablePath to the script and InterpreterPath to the actually crashed |
4305 | + ELF binary. |
4306 | + - Test this with a shell (/bin/zgrep) and a Python (./apport-unpack) |
4307 | + script in the test suite. |
4308 | + - Closes: LP#58859 |
4309 | + * Add debian/apport.logrotate to add a daily 7-step /var/log/apport |
4310 | + log rotation. |
4311 | + * test-apport: Fix WCOREDUMP() and pidof checks in check_crash(). |
4312 | + * apport: Install a signal handler for all 'crashy' signals, which just logs |
4313 | + the signal and stack info and exits. This should avoid a crashing apport |
4314 | + examining itself, possibly in an endless loop. Closes: LP#58873 |
4315 | + |
4316 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 11 Sep 2006 09:20:18 +0200 |
4317 | + |
4318 | +apport (0.19) edgy; urgency=low |
4319 | + |
4320 | + * apport_utils.py: Add function report_search_bug_patterns(): Try to |
4321 | + download a package specific bug pattern XML file from a given URL base |
4322 | + directory and return the bug URL in case of a match. Also add extensive |
4323 | + test suite check. |
4324 | + * test-apport: Fix help message. |
4325 | + * apport-gtk: Make use of the new report_search_bug_patterns() function and |
4326 | + display appropriate instructions on match. Bump python-apport-utils dependency. |
4327 | + |
4328 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 5 Sep 2006 11:31:17 +0200 |
4329 | + |
4330 | +apport (0.18) edgy; urgency=low |
4331 | + |
4332 | + The "mating dance for ubiquity" release. |
4333 | + |
4334 | + * apport-gtk: |
4335 | + - Use pidof's -x option in the detection whether the program is already |
4336 | + running to correctly handle scripts. |
4337 | + - Do not assume the presence of the ExecutablePath key in reports, but |
4338 | + gracefully fall back to Package. |
4339 | + - If the report specifies an explicit DesktopFile, use that instead of |
4340 | + trying to figure it out. |
4341 | + - Only created reduced report and show the radio buttons if there are |
4342 | + actually removed fields. |
4343 | + - Change tooltip of 'reduced report' radio button to be more generic (do |
4344 | + not refer to the memory dump, but to 'large items', since this is what |
4345 | + apport-gtk currently does). |
4346 | + - Support new field 'BugDisplayMode: file | list (default)'. In 'file' |
4347 | + mode, display the /+filebug page instead of /+bugs and change |
4348 | + instructions accordingly. |
4349 | + - Use the ProcCmdline attibute to restart an application; correctly |
4350 | + parsing of all the desktop file is just not possible at this point. |
4351 | + - Support new field 'RespawnCommand' to use custom respawning command. |
4352 | + * problem_report.py: Add method has_removed_fields() to check whether load() |
4353 | + skipped any fields due to binary=False. Add test suite check. |
4354 | + * apport_utils.py: Fix the quoting in ProcCmdline so that it is fully shell |
4355 | + compatible. |
4356 | + * run-tests: Check if kernel crash dump helper is active, and if so, run |
4357 | + test-apport in kernel mode. |
4358 | + * problem_report.py: Support an optional second argument of file references |
4359 | + which controls whether or not the file contents will be compressed/encoded |
4360 | + (defaults to True for backwards compatibility). Add test suite checks. |
4361 | + |
4362 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 25 Aug 2006 14:01:47 +0200 |
4363 | + |
4364 | +apport (0.17) edgy; urgency=low |
4365 | + |
4366 | + * Move packaging information collection from apport to new function |
4367 | + report_add_package_info() in apport_utils.py, add test suite check. |
4368 | + * Move operating system information collection from apport to new function |
4369 | + report_add_os_info() in apport_utils.py, add test suite check. |
4370 | + * Move /proc information collection from apport to new function |
4371 | + report_add_proc_info() in apport_utils.py, add test suite check, and fix |
4372 | + handling of failed /proc/$$/environ reading. |
4373 | + * preloadlib/libapport.c: Route gcore's stderr to /dev/null to suppress |
4374 | + error messages during the test suite and to become more compatible to the |
4375 | + kernel behaviour. |
4376 | + * Change apport_utils.py to be a public module and ship it in the new |
4377 | + python-apport-utils package, so that other applications like ubiquity can |
4378 | + use it easily. |
4379 | + * po/de.po: Add new translations to make this complete again. |
4380 | + * problem_report.py, apport_utils.py: Prepend UnitTest classes with '_' so |
4381 | + that they do not appear in the help() output. |
4382 | + * apport_utils.py: Add make_report_path(), which constructs the canonical |
4383 | + crash report pathname for a given report. |
4384 | + * Add debian/apport.postinst: Remove /usr/share/apport/apport_utils.pyc when |
4385 | + upgrading from an earlier version, so that the programs in |
4386 | + /usr/share/apport actually use the version from p-apport-utils. |
4387 | + |
4388 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 22 Aug 2006 18:14:00 +0200 |
4389 | + |
4390 | +apport (0.16) edgy; urgency=low |
4391 | + |
4392 | + * test-apport: Check that non-packaged binaries do not generate a report. |
4393 | + * apport_utils.py: Add find_file_package() to find the package a file |
4394 | + belongs to. This uses fgrep /var/lib/dpkg/info/*.list which is much faster |
4395 | + than dpkg -S. Also add test suite check. |
4396 | + * apport: Use find_file_package() instead of direct dpkg -S call and pass |
4397 | + the result to the InformationCollector ctor to avoid grepping the dpkg |
4398 | + lists twice. |
4399 | + * apport: Immediately exit if the executable name starts with /home or /tmp, |
4400 | + to avoid grepping the dpkg database in the common developer case. |
4401 | + * apport: Replace 0-bytes in ProcCmdline with spaces to keep them readable. |
4402 | + * apport-gtk: Offer an alternative small report (without the core dump) for |
4403 | + users with slow internet connection. |
4404 | + |
4405 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 21 Aug 2006 19:34:47 +0200 |
4406 | + |
4407 | +apport (0.15) edgy; urgency=low |
4408 | + |
4409 | + * Add apport-unpack: Script to extract the fields of a problem report into |
4410 | + separate files into a new or empty directory. Mainly useful for extracting |
4411 | + compressed binary data like the core dump. |
4412 | + * test-apport: Check that dumped environment only contains security |
4413 | + insensitive variables. |
4414 | + * apport: Filter out all environment variables but $SHELL, $PATH, and |
4415 | + locale/language related ones. Closes: LP#56846 |
4416 | + * test-apport: Delete test report in the cleanup handler so that the |
4417 | + kernel-mode test can be run multiple times without manual cleanup. |
4418 | + * test-apport: Check for running apport and test executable processes in |
4419 | + check_crash(). |
4420 | + * preloadlib/libapport.c: Improve error checking, some robustification. |
4421 | + * test-apport: If using the preload library, wait a second between the test |
4422 | + process invocations in the flooding test to mitigate a strange race |
4423 | + condition that sometimes causes the signal handler not to be executed. |
4424 | + |
4425 | + -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 20 Aug 2006 16:28:43 +0200 |
4426 | + |
4427 | +apport (0.14) edgy; urgency=low |
4428 | + |
4429 | + * preloadlib/libapport.c: Write core dump into cwd instead of /tmp to act |
4430 | + like the current kernel. |
4431 | + * apport_utils.py: Check APPORT_REPORT_DIR environment variable for an |
4432 | + alternate crash report directory. This is mainly useful for a local test |
4433 | + suite. |
4434 | + * apport: Quiesce the apt module's FutureWarning. |
4435 | + * preloadlib/libapport.c: Re-raise the signal instead of doing exit() so |
4436 | + that the process exits with the same code as it would do without the |
4437 | + library. |
4438 | + * preloadlib/libapport.c: Close stdout for gcore process. |
4439 | + * Add test-apport: Use preloadlib/ and APPORT_REPORT_DIR to create a |
4440 | + sandboxed environment and run various apport functionality tests. Also add |
4441 | + this script to run-tests. |
4442 | + * apport_utils.py, delete_report(): Actually try to unlink the report before |
4443 | + falling back to truncating it to zero bytes. |
4444 | + * preloadlib/libapport.c: Close stderr for apport process. |
4445 | + |
4446 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 18 Aug 2006 15:46:37 +0200 |
4447 | + |
4448 | +apport (0.13) edgy; urgency=low |
4449 | + |
4450 | + * Do not run the test suite on build since on the buildds modifying |
4451 | + file atimes does not work. |
4452 | + |
4453 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 18 Aug 2006 00:59:26 +0200 |
4454 | + |
4455 | +apport (0.12) edgy; urgency=low |
4456 | + |
4457 | + * apport-gtk: Make bug report window resizable when the details are |
4458 | + expanded. Closes: LP#56672 |
4459 | + * apport_utils.py: Add get_recent_crashes() and a test suite check for it. |
4460 | + * apport: If the same binary produced more than 5 crashes in the last 24 |
4461 | + hours, ignore the crash. This is a hideous and pretty ad-hoc band-aid to |
4462 | + avoid flooding users with reports for continuously crashing respawning |
4463 | + processes. Closes: LP#56362 |
4464 | + * apport: Clean up exit codes to only exit with 0 if report was created, and |
4465 | + with 1 otherwise (to become more compatible to proposed future kernel |
4466 | + behaviour, where core dumps are only generated on demand). |
4467 | + * Add run-tests script which calls all available selftests. |
4468 | + * debian/rules: Run run-tests during build to have the package FTBFS on |
4469 | + regressions. Add python build dependency for this (it is already there |
4470 | + implicitly anyway). |
4471 | + |
4472 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 17 Aug 2006 16:06:41 +0200 |
4473 | + |
4474 | +apport (0.11) edgy; urgency=low |
4475 | + |
4476 | + * gtk/apport-gtk.glade: Remove separators from dialogs. Closes: LP#56326 |
4477 | + * apport: |
4478 | + - Move information collection from ctor to two new separate functions |
4479 | + collect_runtime_information() (fast, privileged, crashed process must |
4480 | + exist) and collect_static_information() (slow, unprivileged, crashed |
4481 | + process does not need to exist). This allows a cleaner design. |
4482 | + - Add missing close() call in init_error_log(). |
4483 | + - Do not catch SystemExit in the final catch-all-and-log clause (will |
4484 | + become important once we switch to master/slave processes). |
4485 | + - Clean up handling of temporary files. |
4486 | + - Log successful report creation with file and package name, to ease |
4487 | + debugging. |
4488 | + - transitive_dependencies(): Do not break on pure virtual dependencies |
4489 | + (like perl-api-XXX). |
4490 | + * Add debian/apport.default: Default file to disable apport entirely and to |
4491 | + change the maximum size of kernel created core dumps. |
4492 | + * debian/apport.init: Evaluate new default file. |
4493 | + |
4494 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 16 Aug 2006 17:05:19 +0200 |
4495 | + |
4496 | +apport (0.10) edgy; urgency=low |
4497 | + |
4498 | + * apport-gtk: Show report file size in bug report window. |
4499 | + * apport: Correctly handle relative paths to core dumps (use crashed |
4500 | + process' cwd). |
4501 | + * Fix the GPL URLs in source file's copyright comments. |
4502 | + * debian/apport.cron.daily: Add -mindepth 1 to find commands to avoid |
4503 | + attempting to remove the /var/crash/ directory. Closes: LP#55107 |
4504 | + * problem_report.py: |
4505 | + - Fix precise whitespace handling in continuation lines, add selftest. |
4506 | + - Add selftest for reading a report, modifying fields, and writing it |
4507 | + back. |
4508 | + - Fix writing back binary data, adapt test suite to check it. |
4509 | + - Fixed ProblemReport.load() to clean up old data, added selftest. |
4510 | + - Restructure class to inherit from IterableUserDict and throw away all |
4511 | + the now obsolete dictionary wrapper methods. |
4512 | + * debian/apport.init: Add colon to description to make output less |
4513 | + confusing. |
4514 | + * Add apport-retrace and install it into apport: This tool takes a crash |
4515 | + report and refreshes the stack traces in it. This is particularly useful |
4516 | + if debug symbols are installed now, but haven't been at the time the crash |
4517 | + occured. |
4518 | + |
4519 | + -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 11 Aug 2006 15:40:05 +0200 |
4520 | + |
4521 | +apport (0.9) edgy; urgency=low |
4522 | + |
4523 | + * apport: Call objcopy to throw out READONLY/CODE sections from the core |
4524 | + dump, which drastically reduces its (uncompressed) size (factor 2 to 10). |
4525 | + This has little effect on the bzip2'ed core dump, though. |
4526 | + * apport: |
4527 | + - Support an optional third command line argument which specifies the |
4528 | + location of a core dump. |
4529 | + - If a core dump is given, call gdb on the core dump instead of the |
4530 | + crashed process. We cannot attach to the latter if we are called by the |
4531 | + kernel (since the crashed process is in uninterruptible kernel sleep). |
4532 | + - If no core dump is given, do not attempt to do anything gdb related. |
4533 | + - This matches the future behaviour of the kernel crash dump helper while |
4534 | + remaining compatible to the previous call semantics. |
4535 | + * Add preloadlib/{Makefile,libapport.c}: LD_PRELOADable library which |
4536 | + emulates the future kernel behaviour. This is ONLY for testing and |
4537 | + development purposes. It uses unsafe temporary file handling and thus must |
4538 | + not be used on production boxes! |
4539 | + * Ship preloadlib/* as examples in package 'apport' for people who want to |
4540 | + play with it until the new kernel arrives. |
4541 | + * Add preloadlib/README: Explain how to use the preload library. |
4542 | + |
4543 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 9 Aug 2006 12:12:20 +0200 |
4544 | + |
4545 | +apport (0.8) edgy; urgency=low |
4546 | + |
4547 | + * apport_utils.py: |
4548 | + - Add two new functions seen_report() and mark_report_seen(). |
4549 | + - get_new_reports(): Only return unseen reports, add function |
4550 | + get_all_reports() for the old behaviour. |
4551 | + * gtk/apport-gtk.py: Do not delete reports after notifying about them. This |
4552 | + way, we do not need to add another button to save the report (which is |
4553 | + considered evil UI-wise), but still retain the report for filing and |
4554 | + examining later. |
4555 | + * Replace all usages of '/var/crash' to a new global variable in |
4556 | + apport_utils; this is particularly useful for test suites. |
4557 | + * apport.py: Overwrite old reports if they are seen. |
4558 | + * apport_utils.py: Add a test suite for all exported functions. |
4559 | + |
4560 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 8 Aug 2006 19:29:23 +0200 |
4561 | + |
4562 | +apport (0.7) edgy; urgency=low |
4563 | + |
4564 | + * Add apport_utils.py: Factorize out some common code of apport-gtk, |
4565 | + possible future frontends, and some backend tools. |
4566 | + * Add apport-checkreports: Test if there are new crash reports for the |
4567 | + invoking user. This factorizes out the tests we currently do in |
4568 | + update-notifier and makes them easier to change and keep in sync with |
4569 | + apport itself. Ship the script in the apport package. |
4570 | + |
4571 | + -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 8 Aug 2006 17:24:46 +0200 |
4572 | + |
4573 | +apport (0.6) edgy; urgency=low |
4574 | + |
4575 | + * Add missing intltool build dependency to fix FTBFS. |
4576 | + |
4577 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 3 Aug 2006 09:15:42 +0200 |
4578 | + |
4579 | +apport (0.5) edgy; urgency=low |
4580 | + |
4581 | + * apport-gtk: Remove the crash report after it got displayed. |
4582 | + * apport-gtk: Fix exception on startup if no readable crash reports exist. |
4583 | + |
4584 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 2 Aug 2006 23:42:34 +0200 |
4585 | + |
4586 | +apport (0.4) edgy; urgency=low |
4587 | + |
4588 | + * Implement completely new UI according to the design described at |
4589 | + https://wiki.ubuntu.com/CrashReporting. Many thanks to Matthew Paul |
4590 | + Thomas! |
4591 | + * po/Makefile: Fix default target to not just break. Now it builds the .pot |
4592 | + file. |
4593 | + * debian/rules: Build .pot file on package build for automatic Rosetta |
4594 | + import. |
4595 | + * Bring German translations up to date. |
4596 | + * po/Makefile: Supply '--language=python' to intltool-update to properly |
4597 | + extract strings from apport-gtk. |
4598 | + |
4599 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 2 Aug 2006 23:14:58 +0200 |
4600 | + |
4601 | +apport (0.3) edgy; urgency=low |
4602 | + |
4603 | + * debian/rules clean: Also clean po/. |
4604 | + * debian/apport.cron.daily: Clean away empty files everytime. |
4605 | + * apport: Only consider a report as already present if it has a non-zero |
4606 | + size. |
4607 | + * apport: Set proper group for report files instead of 'root'. |
4608 | + * apport-gtk: Ignore 0-sized reports. |
4609 | + * apport-gtk: Add button to remove the current report (by truncating the |
4610 | + file to zero bytes; a user cannot unlink files in /var/crash). |
4611 | + * apport-gtk: Only display reports that the user can actually read. |
4612 | + * problem_report.py: Add 'binary' option to ProblemReport.load() to |
4613 | + optionally skip binary data. |
4614 | + * debian/rules: Clean stale *.pyc files. |
4615 | + * python-gtk: Do not load binary data (core dumps, etc.) to greatly speed up |
4616 | + the GUI. They are just gibberish anyway. |
4617 | + * apport: Switch from apt_pkg to apt, add SourcePackage: to reports. |
4618 | + * apport-gtk: Use source package name for the Malone URL. |
4619 | + * debian/rules: Call setup.py install with --no-compile to not ship *.pyc in |
4620 | + debs. |
4621 | + |
4622 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 31 Jul 2006 13:11:52 +0200 |
4623 | + |
4624 | +apport (0.2) edgy; urgency=low |
4625 | + |
4626 | + * debian/apport.cron.daily: Do not produce error messages if 'find' does not |
4627 | + find any crash reports. |
4628 | + * problem_report.py: Support iterators, add test case. |
4629 | + * apport: Filter out trailing 0-byte from ProcCmdline. |
4630 | + * Add a simple GTK frontend, ship it in new package apport-gtk. |
4631 | + |
4632 | + -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 27 Jul 2006 23:52:33 +0200 |
4633 | + |
4634 | +apport (0.1) edgy; urgency=low |
4635 | + |
4636 | + * Initial release. This package implements the client backend part of |
4637 | + https://wiki.ubuntu.com/AutomatedProblemReports. |
4638 | + |
4639 | + -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 24 Jul 2006 14:21:10 +0200 |
4640 | |
4641 | === added file 'debian/compat' |
4642 | --- debian/compat 1970-01-01 00:00:00 +0000 |
4643 | +++ debian/compat 2006-07-12 14:20:41 +0000 |
4644 | @@ -0,0 +1,1 @@ |
4645 | +5 |
4646 | |
4647 | === added file 'debian/control' |
4648 | --- debian/control 1970-01-01 00:00:00 +0000 |
4649 | +++ debian/control 2009-06-29 09:37:51 +0000 |
4650 | @@ -0,0 +1,120 @@ |
4651 | +Source: apport |
4652 | +Section: utils |
4653 | +Priority: optional |
4654 | +Build-Depends: cdbs (>= 0.4.43), debhelper (>= 5.0.51~), |
4655 | + python-central (>= 0.5.6), python-dev (>= 2.4), intltool, |
4656 | + python-distutils-extra (>= 2.2~), texlive-latex-recommended |
4657 | +Maintainer: Martin Pitt <martin.pitt@ubuntu.com> |
4658 | +Standards-Version: 3.8.2 |
4659 | +XS-Python-Version: all |
4660 | +Vcs-Bzr: https://code.launchpad.net/~ubuntu-core-dev/ubuntu/karmic/apport/ubuntu |
4661 | +Homepage: https://wiki.ubuntu.com/Apport |
4662 | + |
4663 | +Package: apport |
4664 | +XB-Python-Version: ${python:Versions} |
4665 | +Architecture: all |
4666 | +Depends: python (>= 2.4), python-apport (>= 0.120), lsb-base (>= 3.0-6), |
4667 | + sysv-rc (>= 2.86.ds1-14.1ubuntu2), ${misc:Depends} |
4668 | +Conflicts: apport-gtk (<< 0.51), apport-cli |
4669 | +Replaces: apport-gtk (<< 0.51), apport-cli |
4670 | +Suggests: apport-gtk | apport-kde |
4671 | +Description: automatically generate crash reports for debugging |
4672 | + apport automatically collects data from crashed processes and |
4673 | + compiles a problem report in /var/crash/. This utilizes the crashdump |
4674 | + helper hook provided by the Ubuntu kernel. |
4675 | + . |
4676 | + This package also provides a command line frontend for browsing and |
4677 | + handling the crash reports. For desktops, you should consider |
4678 | + installing the GTK+ or Qt user interface (apport-gtk or apport-kde). |
4679 | + |
4680 | +Package: python-problem-report |
4681 | +XB-Python-Version: ${python:Versions} |
4682 | +Section: python |
4683 | +Architecture: all |
4684 | +Depends: ${python:Depends}, ${misc:Depends} |
4685 | +Description: Python library to handle problem reports |
4686 | + This Python library provides an interface for creating, modifying, |
4687 | + and accessing standardized problem reports for program and kernel |
4688 | + crashes and packaging bugs. |
4689 | + . |
4690 | + These problem reports use standard Debian control format syntax |
4691 | + (RFC822). |
4692 | + |
4693 | +Package: python-apport |
4694 | +XB-Python-Version: ${python:Versions} |
4695 | +Section: python |
4696 | +Architecture: all |
4697 | +Depends: ${python:Depends}, python-apt, python-problem-report (>= 0.94), |
4698 | + python-launchpadlib, ${misc:Depends} |
4699 | +Recommends: gdb |
4700 | +Conflicts: python-apport-utils |
4701 | +Replaces: python-apport-utils |
4702 | +Description: apport crash report handling library |
4703 | + This Python package provides high-level functions for creating and |
4704 | + handling apport crash reports: |
4705 | + . |
4706 | + * Query available and new reports. |
4707 | + * Add OS, packaging, and process runtime information to a report. |
4708 | + * Various frontend utility functions. |
4709 | + * Python hook to generate crash reports when Python scripts fail. |
4710 | + |
4711 | +Package: apport-retrace |
4712 | +XB-Python-Version: ${python:Versions} |
4713 | +Section: devel |
4714 | +Architecture: all |
4715 | +Depends: python (>= 2.4), python-apport (>= 0.124), python-apt, |
4716 | + apt, binutils, dpkg-dev, ${misc:Depends} |
4717 | +Suggests: debootstrap (>= 0.3.3.2ubuntu2), fakeroot, fakechroot |
4718 | +Conflicts: apport (<< 0.72) |
4719 | +Replaces: apport (<< 0.72) |
4720 | +Description: tools for reprocessing Apport crash reports |
4721 | + apport-retrace recombines an Apport crash report (either a file or a |
4722 | + Launchpad bug) and debug symbol packages (.ddebs) into fully symbolic |
4723 | + stack traces. |
4724 | + . |
4725 | + This package also ships apport-chroot. This tool can create and |
4726 | + manage chroots for usage with apport-retrace. If the fakeroot and |
4727 | + fakechroot libraries are available (either by installing the packages |
4728 | + or by merely putting their libraries somewhere and setting two |
4729 | + environment variables), the entire process of retracing crashes in |
4730 | + chroots can happen with normal user privileges. |
4731 | + |
4732 | +Package: apport-gtk |
4733 | +XB-Python-Version: ${python:Versions} |
4734 | +Section: gnome |
4735 | +Architecture: all |
4736 | +Depends: python (>= 2.4), python-apport (>= 0.80), python-gtk2 (>= 2.12), |
4737 | + python-xdg, apport (>= 0.41), procps, ${misc:Depends} |
4738 | +Recommends: update-notifier |
4739 | +Description: GTK+ frontend for the apport crash report system |
4740 | + apport automatically collects data from crashed processes and |
4741 | + compiles a problem report in /var/crash/. This utilizes the crashdump |
4742 | + helper hook provided by the Ubuntu kernel. |
4743 | + . |
4744 | + This package provides a GTK+ frontend for browsing and handling the |
4745 | + crash reports. |
4746 | + |
4747 | +Package: apport-kde |
4748 | +XB-Python-Version: ${python:Versions} |
4749 | +Section: kde |
4750 | +Architecture: all |
4751 | +Depends: python (>= 2.4), python-apport (>= 0.80), python-kde4, python-xdg, |
4752 | + apport (>= 0.41), procps, ${misc:Depends} |
4753 | +Recommends: update-notifier-kde |
4754 | +Replaces: apport-qt (<< 1.4) |
4755 | +Conflicts: apport-qt (<< 1.4) |
4756 | +Provides: apport-qt |
4757 | +Description: KDE frontend for the apport crash report system |
4758 | + apport automatically collects data from crashed processes and |
4759 | + compiles a problem report in /var/crash/. This utilizes the crashdump |
4760 | + helper hook provided by the Ubuntu kernel. |
4761 | + . |
4762 | + This package provides a KDE frontend for browsing and handling the |
4763 | + crash reports. |
4764 | + |
4765 | +Package: apport-qt |
4766 | +Section: oldlibs |
4767 | +Architecture: all |
4768 | +Depends: apport-kde |
4769 | +Description: transitional package to apport-kde |
4770 | + You can savely remove this package after the upgrade. |
4771 | |
4772 | === added file 'debian/copyright' |
4773 | --- debian/copyright 1970-01-01 00:00:00 +0000 |
4774 | +++ debian/copyright 2008-09-21 21:04:36 +0000 |
4775 | @@ -0,0 +1,24 @@ |
4776 | +apport is written and maintained by Martin Pitt |
4777 | +<martin.pitt@ubuntu.com>. Initial packaging was on Wed, 12 July 2006. |
4778 | + |
4779 | +The original source can always be found at: |
4780 | + http://archive.ubuntu.com/ubuntu/pool/main/a/apport |
4781 | + |
4782 | +Copyright (C) 2006, 2007, 2008 Canonical Ltd. |
4783 | + |
4784 | + This program is free software; you can redistribute it and/or modify |
4785 | + it under the terms of the GNU General Public License as published by |
4786 | + the Free Software Foundation; either version 2 of the License, or |
4787 | + (at your option) any later version. |
4788 | + |
4789 | + This program is distributed in the hope that it will be useful, |
4790 | + but WITHOUT ANY WARRANTY; without even the implied warranty of |
4791 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4792 | + GNU General Public License for more details. |
4793 | + |
4794 | + You should have received a copy of the GNU General Public License |
4795 | + along with this program; if not, write to the Free Software |
4796 | + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
4797 | + |
4798 | +On Debian systems, the complete text of the GNU General |
4799 | +Public License can be found in `/usr/share/common-licenses/GPL'. |
4800 | |
4801 | === added directory 'debian/local' |
4802 | === added file 'debian/local/apport-chroot' |
4803 | --- debian/local/apport-chroot 1970-01-01 00:00:00 +0000 |
4804 | +++ debian/local/apport-chroot 2009-04-06 22:48:33 +0000 |
4805 | @@ -0,0 +1,347 @@ |
4806 | +#!/usr/bin/python |
4807 | + |
4808 | +# Execute operations on/in apport chroots. |
4809 | +# |
4810 | +# Copyright (c) 2007 Canonical Ltd. |
4811 | +# Author: Martin Pitt <martin.pitt@ubuntu.com> |
4812 | +# |
4813 | +# This program is free software; you can redistribute it and/or modify it |
4814 | +# under the terms of the GNU General Public License as published by the |
4815 | +# Free Software Foundation; either version 2 of the License, or (at your |
4816 | +# option) any later version. See http://www.gnu.org/copyleft/gpl.html for |
4817 | +# the full text of the license. |
4818 | + |
4819 | +import optparse, os.path, sys, urllib, re, atexit, shutil, subprocess, tempfile |
4820 | +from glob import glob |
4821 | + |
4822 | +import problem_report |
4823 | +from apport.chroot import Chroot, setup_fakeroot_env |
4824 | +from apport.crashdb import get_crashdb |
4825 | + |
4826 | +# |
4827 | +# functions |
4828 | +# |
4829 | + |
4830 | +def parse_options(): |
4831 | + '''Parse command line options and return (options, args) tuple.''' |
4832 | + |
4833 | + optparser = optparse.OptionParser('''%prog [options] create <release> <chroot path> |
4834 | +%prog [options] upgrade <chroot path>|<chroot release name>|all |
4835 | +%prog [options] installdeb <chroot path>|<chroot release name> <path to .deb> [...] |
4836 | +%prog [options] login <chroot path>|<chroot release name> |
4837 | +%prog [options] retrace <bugnumber>|<report file>''') |
4838 | + |
4839 | + optparser.add_option('--mirror', |
4840 | + help='Mirror for chroot creation', |
4841 | + action='store', type='string', dest='mirror', metavar='URL', default=None) |
4842 | + optparser.add_option('-a', '--apt-source', |
4843 | + help='Add an extra apt source', |
4844 | + action='append', type='string', dest='extra_apt', metavar='SOURCE', default=[]) |
4845 | + optparser.add_option('-t', '--tar', |
4846 | + help='Create chroot tarball instead of directory', |
4847 | + action='store_true', dest='tar', default=False) |
4848 | + optparser.add_option('--save', |
4849 | + help='When logging in to a chroot tarball, update the tarball afterwards to save modifications if the shell exits with status 0.', |
4850 | + action='store_true', dest='tar_save', default=False) |
4851 | + optparser.add_option('-m', '--chroot-map', |
4852 | + help='Path to chroot map. This is a file that defines a Python dictionary, mapping DistroRelease: values to chroot paths', |
4853 | + action='store', type='string', dest='chroot_map', metavar='FILE', default=None) |
4854 | + optparser.add_option('-p', '--extra-package', |
4855 | + help='Install an extra package (can be specified multiple times)', |
4856 | + action='append', type='string', dest='extra_packages', metavar='PACKAGE', default=[]) |
4857 | + optparser.add_option('-v', '--verbose', |
4858 | + help='Verbose operation (also passed to apport-retrace)', |
4859 | + action='store_true', dest='verbose', default=False) |
4860 | + optparser.add_option('--auth', |
4861 | + help='Passed on to apport-retrace in "retrace" mode', |
4862 | + action='store', type='string', dest='auth_file', default=None) |
4863 | + optparser.add_option('--duplicate-db', |
4864 | + help='Passed on to apport-retrace in "retrace" mode', |
4865 | + action='store', type='string', dest='dup_db', default=None) |
4866 | + optparser.add_option('--confirm-attach', |
4867 | + help='Display retraced stack traces and ask for confirmation before uploading them as bug attachments.', |
4868 | + action='store_true', dest='confirm_attach', default=False) |
4869 | + |
4870 | + (opts, args) = optparser.parse_args() |
4871 | + |
4872 | + if len(args) < 1: |
4873 | + optparser.error('no command specified (use --help for a short online help)') |
4874 | + sys.exit(1) |
4875 | + |
4876 | + if opts.chroot_map: |
4877 | + if not os.path.exists(opts.chroot_map): |
4878 | + print >> sys.stderr, 'specified chroot map does not exist' |
4879 | + sys.exit(1) |
4880 | + |
4881 | + # load chroot map and resolve relative paths |
4882 | + map_file_dir = os.path.dirname(opts.chroot_map) |
4883 | + opts.chroot_map = eval(open(opts.chroot_map).read(), {}, {}) |
4884 | + for n, p in opts.chroot_map.iteritems(): |
4885 | + if not p.startswith('/'): |
4886 | + opts.chroot_map[n] = os.path.join(map_file_dir, p) |
4887 | + |
4888 | + return (opts, args) |
4889 | + |
4890 | +def release_from_report(file): |
4891 | + '''Return the distro release from the given Apport report.''' |
4892 | + |
4893 | + pr = problem_report.ProblemReport() |
4894 | + pr.load(open(file), binary=False) |
4895 | + return pr['DistroRelease'] |
4896 | + |
4897 | +def upgrade_chroot(chroot, verbose=False, extra_packages=[]): |
4898 | + '''Update a chroot to the latest apt lists and packages. |
4899 | + |
4900 | + If run from a tarball and the dist-upgrade succeeds, then the tarball |
4901 | + is updated as well. If the dist-upgrade fails, an assertion is raised.''' |
4902 | + |
4903 | + if verbose: |
4904 | + assert chroot.run(['apt-get', 'update']) == 0 |
4905 | + assert chroot.run(['apt-get', '-y', '--allow-unauthenticated', 'dist-upgrade']) == 0 |
4906 | + else: |
4907 | + assert chroot.run(['apt-get', '-qq', 'update']) == 0 |
4908 | + assert chroot.run(['apt-get', '-qqy', '--allow-unauthenticated', 'dist-upgrade']) == 0 |
4909 | + if extra_packages: |
4910 | + assert chroot.run(['apt-get', 'install', '-y', '--allow-unauthenticated'] + extra_packages) == 0 |
4911 | + |
4912 | + chroot.fix_symlinks() |
4913 | + |
4914 | + if chroot.root_tarball: |
4915 | + assert chroot.run(['apt-get', 'clean']) == 0 |
4916 | + chroot.tar() |
4917 | + |
4918 | +# |
4919 | +# commands |
4920 | +# |
4921 | + |
4922 | +def command_create(opts, args): |
4923 | + '''Create a chroot.''' |
4924 | + |
4925 | + if len(args) != 2: |
4926 | + print >> sys.stderr, 'create needs exactly two arguments (use --help for a short online help)' |
4927 | + sys.exit(1) |
4928 | + (release, destpath) = args |
4929 | + |
4930 | + # create chroot directory |
4931 | + if opts.tar: |
4932 | + root = tempfile.mkdtemp() |
4933 | + atexit.register(shutil.rmtree, root) |
4934 | + if os.path.isfile(destpath): |
4935 | + print >> sys.stderr, 'target file', destpath, 'exists already, aborting' |
4936 | + sys.exit(1) |
4937 | + else: |
4938 | + root = destpath |
4939 | + if os.path.isdir(root): |
4940 | + print >> sys.stderr, 'target directory', root, 'exists already, aborting' |
4941 | + sys.exit(1) |
4942 | + os.makedirs(root) |
4943 | + |
4944 | + # call debootstrap |
4945 | + setup_fakeroot_env() |
4946 | + debootstrap_argv = ['debootstrap', |
4947 | + '--variant=fakechroot', release, root] |
4948 | + if opts.mirror: |
4949 | + debootstrap_argv.append(opts.mirror) |
4950 | + |
4951 | + assert subprocess.call(debootstrap_argv) == 0 |
4952 | + |
4953 | + # if we have a file:// mirror, create a symlink |
4954 | + if opts.mirror and opts.mirror.startswith('file://'): |
4955 | + mirrordir = os.path.abspath(opts.mirror[7:]) |
4956 | + targetdir = os.path.normpath(root + '/' + os.path.dirname(mirrordir)) |
4957 | + if not os.path.isdir(targetdir): |
4958 | + os.makedirs(targetdir) |
4959 | + os.symlink(mirrordir, os.path.join(targetdir, os.path.basename(mirrordir))) |
4960 | + |
4961 | + # set up apt sources |
4962 | + if opts.mirror: |
4963 | + f = open(os.path.join(root, 'etc', 'apt', 'sources.list'), 'w') |
4964 | + print >> f, 'deb %s %s main' % (opts.mirror, release) |
4965 | + else: |
4966 | + # debootstrap puts default mirror there |
4967 | + f = open(os.path.join(root, 'etc', 'apt', 'sources.list'), 'a') |
4968 | + |
4969 | + for s in opts.extra_apt: |
4970 | + print >> f, s |
4971 | + f.close() |
4972 | + |
4973 | + # disable invoke-rc.d |
4974 | + policyrc = os.path.join(root, 'usr', 'sbin', 'policy-rc.d') |
4975 | + open(policyrc, 'w').write('#!/bin/sh\nexit 101') |
4976 | + os.chmod(policyrc, 0755) |
4977 | + |
4978 | + # set up apt-get and required packages |
4979 | + chroot = Chroot(root) |
4980 | + assert chroot.run(['apt-get', 'update']) == 0 |
4981 | + chroot.run(['apt-get', 'install', '-y', '--allow-unauthenticated', 'gpgv', 'apport-retrace'] + opts.extra_packages) |
4982 | + |
4983 | + chroot.fix_symlinks() |
4984 | + |
4985 | + # clean up cruft |
4986 | + for path, dirs, files in os.walk(os.path.join(root, 'var', 'cache', 'apt', 'archives')): |
4987 | + for f in files: |
4988 | + try: |
4989 | + os.unlink(os.path.join(path, f)) |
4990 | + except OSError: |
4991 | + pass |
4992 | + |
4993 | + # tar it up |
4994 | + if opts.tar: |
4995 | + chroot.tar(destpath) |
4996 | + |
4997 | +def command_upgrade(opts, args): |
4998 | + '''Upgrade one or all chroots.''' |
4999 | + |
5000 | + if len(args) != 1: |
The diff has been truncated for viewing.
Please review/merge support for kernel crashdump retracing.
Overview: crashdump: packaging- apt-dpkg. py
* bin/kernel_
- needs the add_os_info() to get uname and architecture to make the retracing easier (and is cheap to obtain)
* bin/apport-retrace:
- small changes to make it friendlier for the kernel output
* apport/report.py
- add_kernel_info: that is not yet split up, but I think the final splitting depends on what information the kernel team wants here, it should do no harm to merge it and append later
* backends/
- uses hardcoded ddebs.ubuntu.com currently which is ugly. but kernel-image-debug packages are not in the Packages.gz so this method seems to be required for now
Thanks and feedback welcome