libunwind-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libunwind-devel] ptrace-unwind not working at head


From: Arun Sharma
Subject: Re: [Libunwind-devel] ptrace-unwind not working at head
Date: Thu, 18 Feb 2010 16:05:37 -0800

On Thu, Feb 18, 2010 at 9:13 AM, Humberto Abdelnur <address@hidden> wrote:

After digging into the libunwind code I found that the problem was in the
file src/os-linux.h at line 269

if (!cp)
 continue;
cp = scan_string (cp, NULL, 0);
if (!cp || dash != '-' || colon != ':')
 continue;  
since scan_string with buf_size 0 always returns 0. So for me it does not make sense, does it?
So, i removed and it works well afterwards.

The code is trying to parse a string of the format:

       /* scan: "LOW-HIGH PERM OFFSET MAJOR:MINOR INUM PATH" */

Is it possible that your version of Linux has a special /proc/pid/maps that the code doesn't understand?

$ cat /proc/13930/maps
00400000-004be000 r-xp 00000000 08:01 565300                             /bin/bash

I think that line of code is trying to skip over the path (/bin/bash) in this example and position cp to the first character after the path.

Re: memory leak

I was able to reproduce your problem. But I thought it was caused by mapping the target elf image too many times, rather than the mmaps called by mempool_init().

src/ptrace/_UPT_find_proc_info.c:get_unwind_info() has a call to munmap, but it doesn't seem to be working well  (i.e. there is a leak somewhere).

The reason why libunwind has its own memory allocator is that it could be used to implement a heap profiler. So libunwind can't call malloc directly.

 -Arun


reply via email to

[Prev in Thread] Current Thread [Next in Thread]