[lldb-dev] lldb on linux -- immediate crash upon attaching to process
Stephen Wilson
wilsons at start.ca
Mon Mar 14 21:11:02 PDT 2011
On Mon, Mar 14, 2011 at 09:54:50PM -0500, Jason E. Aten wrote:
> I'm trying lldb on linux x86_64. Upon attaching to any process with "pro
> attach --pid XXX", I get
> an immediate core dump via referencing an invalid mutex.
Heh, ya. Attach is simply not implemented. Until it is, I would
suggest "don't do that" :)
> I know linux is a new platform for lldb, and I've just recently started
> exploring lldb on linux so
> so please forgive me if this is already a well known issue. (Is there a bug
> database to search?).
We have only the most basic infrastructure on linux. There is still a
significant amount of work that needs to be done before LLDB even begins
to approach "usable" on that platform.
> In case it helps, I attach a debugging log with strack trace and a small
> test case to make it
> easy to reproduce. This was running on Ubuntu 10.04, with the latest lldb
> (svn r127570), and
> llvm and clang at svn r124349, as Steve Wilson kindly indicated was
> necessary for lldb to build.
>
> lldb was built with this configuration.
>
> $ /home/jaten/pkg/latest-svn-llvm/llvm/configure --enable-optimized
> --enable-debug-runtime --enable-debug-symbols --enable-profiling
> --enable-jit --enable-doxygen --enable-pic --enable-shared
> --enable-assertions --enable-targets=x86_64 REQUIRES_RTTI=1
>
> Let me know if I can be of further assistance in tracking this down. If it's
> a known problem and
> somebody can sketch a solution, I may be able to implement it.
Well, in a nutshell you would need to implement something similar to
what ProcessLinux::DoLaunch does, but in this case you want things to
boil down to a ptrace(ATTACH) instead of a fork() + ptrace(TRACEME).
The basic sketch would be:
- Define a new ProcessMonitor ctor that takes a pid as argument.
- Define ProcessMonitor::Attach which does the actual ptrace magic.
- Write a another StartOperationThread method that takes a (new)
AttachArgs struct as argument (could just contain the pid for now)
and sets up the monitoring business in essentially the same way as
the current launch-based code does. Probably rename
OperationThread to LaunchOpThread or similar and write your own
AttachOpThread analog.
It would certainly be nice to have that implemented. I do not see
anything that would cause any complications off hand, and it should
remain fairly isolated from all the other work that needs to happen wrt
linux support.
--
steve
More information about the lldb-dev
mailing list