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

Bug#664812: rpc.lockd on kfreebsd



Hi!

Christoph Egger <christoph@debian.org> writes:
>   tracing things down on a "pure" freebsd it seems there should be a
> rpc.lockd running after all even in the case with kernel support (thus
> invalidating my last mail). Will give it another debugging session asap.

 47878 rpc.lockd RET   nlm_syscall -1 errno 14 Bad address
 47878 rpc.lockd CALL  exit(0x1)

which should correspond to

                        /*                                                                                                                                
                         * The kernel lockd implementation provides                                                                                       
                         * both client and server so we don't need to                                                                                     
                         * do anything else.                                                                                                              
                         */
                        nlm_syscall(debug_level, grace_period, naddrs, addrs);
		}
	} else {

[...]

	}
	exit(1);
}

Code of nlm_syscall is

#include <sys/syscall.h>

#ifndef SYS_nlm_syscall
#define SYS_nlm_syscall         154
#endif

int
nlm_syscall (int a, int b, int c, char **d)
{
  return syscall (SYS_nlm_syscall, a, b, c, d);
}


getting away with the daemon(3) call:

Breakpoint 2, main (argc=1, argv=0xbfbfe6e8) at lockd.c:471
471				nlm_syscall(debug_level, grace_period, naddrs, addrs);
(gdb) print addrs
$1 = (char **) 0x806a110
(gdb) print addrs[0]
$2 = 0x8069328 "udp"
(gdb) print addrs[1]
$3 = 0x8068cc8 "0.0.0.0.0.0"
(gdb) print addrs[2]
$4 = 0x80697c0 "tcp"
(gdb) print addrs[3]
$5 = 0x0
(gdb) print addrs[4]
$6 = 0x8069c80 "udp6"
(gdb) print addrs[5]
$7 = 0x0
(gdb) print addrs[6]
$8 = 0x806a138 "tcp6"
(gdb) print addrs[7]
$9 = 0x0
(gdb) print addrs[8]
$10 = 0x0
(gdb) print addrs[9]
$11 = 0x11 <Address 0x11 out of bounds>
(gdb) print debug_level 
$12 = 0
(gdb) print grace_period 
$13 = 30
(gdb) print naddrs 
$14 = 4
(gdb) step
nlm_syscall (a=0, b=30, c=4, d=0x806a110) at nlm_syscall.c:9
9	{
(gdb) step
10	  return syscall (SYS_nlm_syscall, a, b, c, d);
(gdb) step
9	{
(gdb) 
10	  return syscall (SYS_nlm_syscall, a, b, c, d);
(gdb) 
11	}
(gdb) 
main (argc=1, argv=0xbfbfe6e8) at lockd.c:357
357								exit(1);
(gdb) 
[Inferior 1 (process 55624) exited with code 01]
warning: Error removing breakpoint 0
warning: Error removing breakpoint 0
warning: Error removing breakpoint 0
warning: Error removing breakpoint 0
warning: Error removing breakpoint 0

Regards

    Christoph

-- 
9FED 5C6C E206 B70A 5857  70CA 9655 22B9 D49A E731
Debian Developer | Lisp Hacker | CaCert Assurer



Reply to: