[ABRT PATCH] abrt-action-list-dsos: extend it to be able to parse Xorg backtrace.

Richard Marko rmarko at redhat.com
Thu Aug 29 09:52:34 UTC 2013


Pushed. Thanks!

On 08/26/2013 02:30 PM, Denys Vlasenko wrote:
> It also fixes a latent bug: x.strip()[x.find('/'):] does NOT cut everything
> up to first slash. If there is some leading whitespace, the position
> of find() will be wrong. This didn't bite us because the lines we parse
> had no leading whitespace so far.
>
> Preparation for rhbz#880694.
>
> Signed-off-by: Denys Vlasenko <dvlasenk at redhat.com>
> ---
>  src/plugins/abrt-action-list-dsos | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/src/plugins/abrt-action-list-dsos b/src/plugins/abrt-action-list-dsos
> index 81a9927..6f2bd5b 100644
> --- a/src/plugins/abrt-action-list-dsos
> +++ b/src/plugins/abrt-action-list-dsos
> @@ -28,8 +28,15 @@ def xopen(name, mode):
>  def parse_maps(maps_path):
>      try:
>          f = xopen(maps_path, "r")
> -        # set() -> uniqifies the list of filenames
> -        return set([x.strip()[x.find('/'):] for x in f.readlines() if x.find('/') > -1])
> +        # We want to handle both /proc/PID/maps format:
> +        #  4f200000-4f215000 r-xp 00000000 08:03 1835520   /usr/lib64/libz.so.1.2.7
> +        # and Xorg backtrace format:
> +        #  [ 86985.880] 9: /usr/lib64/libdrm.so.2 (drmHandleEvent+0xa3) [0x376b407513]
> +        # To do that, we take only lines which have a / character,
> +        # then for each line we start at first /, then remove everyting after first whitespace
> +        files = [x[x.find('/'):].split()[0] for x in f.readlines() if x.find('/') > -1]
> +        # set() uniqifies the list of filenames
> +        return set(files)
>      except IOError, e:
>          error_msg_and_die("Can't read '%s': %s" % (maps_path, e))
>  




More information about the Crash-catcher mailing list