tech-toolchain archive

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

Re: LLDB/NetBSD May



On May 3, 10:25pm, n54%gmx.com@localhost (Kamil Rytarowski) wrote:
-- Subject: Re: LLDB/NetBSD May

| A.
| I had to downgrade llvm/clang/lldb to pkgsrc-wip r. cf22065aaf016 to
| reproduce the crash again (LLVM SVN r.300853). It was hidden with recent
| failures for 400 tests for some other unknown reason.
| 
| The crash has been fixed with src/sys/kern/sys_ptrace_common.c r1.22

I saw, it was PT_{SET,CLR}STEP locking lossage...

| B.
| I'm still verifying single stepping of LWPs in processes with multiple
| threads. I have an impression that something is fragile there.

Ok. Let me know when you have a reproducible problem...

| C.
| LLDB tests trigger dmesg errors (default GENERIC kernel), there are
| entries like:
| fill_vmentry: vp 0xfffffe87288967e8 error 2
| fill_vmentry: vp 0xfffffe86e1a15930 error 2
| fill_vmentry: vp 0xfffffe87047f8bd8 error 2
| fill_vmentry: vp 0xfffffe87051af7e0 error 2
| fill_vmentry: vp 0xfffffe86ef0b63f0 error 2

This is DIAGNOSTIC and it is tangentially related to your favorite
friend (F_GETPATH) :-)

Let me explain what's wrong here. Getting from a file descriptor
to a vnode is always a success (if the file descriptor refers to one)
(vp is the pointer to a vnode here).
Getting from a vnode to a path is not (here you get 2 ENOENT from
vnode_to_path):

1. The file is removed so there is no path (what I suspect is happening here).
2. There are more than one paths and it is not deterministic which one you get
   (usually does not matter, but it does when you don't have permission to
    get to the one returned but you have to the other)
3. vnode_to_path() uses the reverse-namei cache to do its deed. This can
   lose in 2 different ways:
	- cache eviction: not really an issue unless there is memory pressure
	  (still need to handle it, but infrequent).
	- path component length... The dreaded NCHNAMLEN (31) constant which
	  is the component namelength limit for the current namei cache
	  implementation (we should really fix that one day).

This is why I keep saying forget adding F_GETPATH unless you can make it
work reliably first :-)

| D.
| Once the above points will be so sorted out, I will move to the recent
| failure that broke tests in LLDB on NetBSD. And next I will work on
| watchpoint misbehavior (they are reported like PT_STEP).
| 
| Additionally something (related?) recently keeps ejecting the NetBSD
| builder in the farm node as it timeouts (?).
| 
| We need to sort out all that before pushing forwards the NetBSD Process
| Plugin with threads in LLDB.

Sounds good, thanks.

christos


Home | Main Index | Thread Index | Old Index