Steinar H. Gunderson wrote:
> On Mon, Nov 19, 2007 at 07:43:16PM +0100, Jonas Häggqvist wrote:
>> Unfortunately, it came back. I have a backtrace now:
>
> Thanks. This looks like a most real bug, probably related to structure
> padding somehow, but I'm not entirely sure how to attack it. Could you by any
> chance reproduce it and get a backtrace under a non-optimizing build?
After a bit of convincing (nfs-utils doesn't seem to support
DEB_BUILD_OPTIONS=noopt), here it is (attached, if all goes well).
--
Jonas Häggqvist
rasher(at)rasher(dot)dk
GNU gdb 6.4.90-debian
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "arm-linux-gnu"...Using host libthread_db library
"/lib/libthread_db.so.1".
(gdb) run -d all -F
Starting program: /usr/sbin/rpc.mountd -d all -F
mountd: MNT3(/mnt/wd) called
Program received signal SIGSEGV, Segmentation fault.
0x400b2e4c in memcpy () from /lib/libc.so.6
(gdb) bt full
#0 0x400b2e4c in memcpy () from /lib/libc.so.6
No symbol table info available.
#1 0x00011428 in hostent_dup (hp=0x4015a9bc) at hostname.c:152
len_ent = 20
len_name = 12
num_aliases = 1
len_aliases = 4
num_addr_list = 2
len_addr_list = 12
pos = 44
i = 0
sp = (char **) 0x30613
cp = (struct hostent *) 0x316f8
#2 0x000117c0 in get_reliable_hostbyaddr (addr=0x2bcec "ˬ\001#", len=4,
type=2) at hostname.c:241
hp = (struct hostent *) 0x0
reverse = (struct hostent *) 0x4015a9bc
forward = (struct hostent *) 0xbeb4a583
sp = (char **) 0xbeb4a58a
#3 0x0000ca34 in auth_authenticate (what=0x1aff0 "mount", caller=0x2bce8,
path=0xbeb4b5d7 "/mnt/wd")
at auth.c:153
exp = (nfs_export *) 0x0
epath = "/mnt/wd", '\0' <repeats 4089 times>
p = 0x0
hp = (struct hostent *) 0x0
addr = {s_addr = 587311296}
error = 1073862316
#4 0x0000b04c in get_rootfh (rqstp=0xbeb4cc38, path=0xbeb4c744,
error=0xbeb4c720, v3=1)
at mountd.c:384
sin = (struct sockaddr_in *) 0x2bce8
stb = {st_dev = 0, __pad1 = 0, __st_ino = 0, st_mode = 0, st_nlink = 0,
st_uid = 0,
st_gid = 0, st_rdev = 0, __pad2 = 0, st_size = 0, st_blksize = 1075156540,
st_blocks = 35434894908, st_atim = {tv_sec = 13416, tv_nsec = -1095447404},
st_mtim = {tv_sec = 1,
tv_nsec = 179736}, st_ctim = {tv_sec = -1095448764, tv_nsec = 1024}, st_ino
= 771961316853560}
estb = {st_dev = 0, __pad1 = 0, __st_ino = 0, st_mode = 0, st_nlink =
0, st_uid = 0,
st_gid = 0, st_rdev = 0, __pad2 = 0, st_size = 0, st_blksize = 0, st_blocks =
0, st_atim = {
tv_sec = 0, tv_nsec = 0}, st_mtim = {tv_sec = 0, tv_nsec = 0}, st_ctim =
{tv_sec = 0,
tv_nsec = 0}, st_ino = 0}
exp = (nfs_export *) 0x40123db4
rpath = "/mnt/wd", '\0' <repeats 690 times>, "[EMAIL PROTECTED]@[EMAIL
PROTECTED]@8\005@", '\0' <repeats 12 times>, "[EMAIL PROTECTED]@[EMAIL
PROTECTED]@[EMAIL PROTECTED]([EMAIL PROTECTED]@", '\0' <repeats 12 times>,
"[EMAIL PROTECTED]@°¹´¾\000\000\000\000([EMAIL PROTECTED]@[EMAIL PROTECTED]"...
p = 0xbeb4b5d7 "/mnt/wd"
#5 0x0000aecc in mount_mnt_3_svc (rqstp=0xbeb4cc38, path=0xbeb4c744,
res=0xbeb4c720) at mountd.c:349
fh = (struct nfs_fh_len *) 0x2be18
flavors = {0, 1, 390003, 390004, 390005}
#6 0x0001722c in rpc_dispatch (rqstp=0xbeb4cc38, transp=0x2bcd8,
dtable=0x25640, nvers=3,
argp=0xbeb4c744, resp=0xbeb4c720) at rpcdispatch.c:55
dent = (struct rpc_dentry *) 0x255b8
#7 0x0000c48c in mount_dispatch (rqstp=0xbeb4cc38, transp=0x2bcd8) at
mount_dispatch.c:83
argument = {dirpath = 0x2f530 "/mnt/wd"}
result = {fstatus = {fhs_status = 0, fhstatus_u = {
fhs_fhandle = '\0' <repeats 16 times>, "[EMAIL PROTECTED]"}}, mountlist =
0x0,
exports = 0x0}
#8 0x401215ec in svc_getreq_common () from /lib/libc.so.6
No symbol table info available.
#9 0x40121630 in svc_getreqset () from /lib/libc.so.6
No symbol table info available.
#10 0x0000ee24 in my_svc_run () at svc_run.c:90
readfds = {fds_bits = {512, 0 <repeats 31 times>}}
selret = 1
#11 0x0000c344 in main (argc=4, argv=0xbeb4ce14) at mountd.c:722
export_file = 0x1b0c0 "/etc/exports"
state_dir = 0x1b0d0 "/var/lib/nfs"
foreground = 1
port = 0
descriptors = 0
c = -1
sa = {__sigaction_handler = {sa_handler = 0xa65c <sig_hup>,
sa_sigaction = 0xa65c <sig_hup>}, sa_mask = {__val = {0 <repeats 32
times>}}, sa_flags = 0,
sa_restorer = 0x40052ac0 <nis_clone_result+96660>}
rlim = {rlim_cur = 1024, rlim_max = 1024}
(gdb) quit[K[K[K[Kquit
The program is running. Exit anyway? (y or n)