Bug 166507 - dhcp6s: segfault and wrong report on changing /etc/resolv.conf
Summary: dhcp6s: segfault and wrong report on changing /etc/resolv.conf
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: dhcpv6
Version: 4.0
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
: ---
Assignee: Jason Vas Dias
QA Contact:
URL:
Whiteboard:
Depends On: 143728
Blocks: 168429
TreeView+ depends on / blocked
 
Reported: 2005-08-22 17:11 UTC by Jason Vas Dias
Modified: 2007-11-30 22:07 UTC (History)
0 users

Fixed In Version: RHBA-2006-0115
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2006-03-07 18:36:36 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2006:0115 0 qe-ready SHIPPED_LIVE dhcpv6 bug fix update 2006-03-06 05:00:00 UTC

Description Jason Vas Dias 2005-08-22 17:11:10 UTC
+++ This bug was initially created as a clone of Bug #143728 +++

Description of problem:

dhcp6c cannot be used, because it won't work as expected.


Version-Release number of selected component (if applicable):

# rpm -q dhcpv6_client
dhcpv6_client-0.10-8

How reproducible:

Always

Steps to Reproduce:
1. Setup dhcp6s on a server
2. run dhcp6c on a client, e.g.
# dhcp6c -D -f eth0

Actual results:

# dhcp6c -D -f eth0
Dec/25/2004 23:15:50 <3>[interface] (9)
Dec/25/2004 23:15:50 <5>[eth0] (4)
Dec/25/2004 23:15:50 <3>begin of closure [{] (1)
Dec/25/2004 23:15:50 <3>comment [#      information-only;] (19)
Dec/25/2004 23:15:50 <3>[send] (4)
Dec/25/2004 23:15:50 <3>[rapid-commit] (12)
Dec/25/2004 23:15:50 <3>end of sentence [;] (1)
Dec/25/2004 23:15:50 <3>[request] (7)
Dec/25/2004 23:15:50 <3>[prefix-delegation] (17)
Dec/25/2004 23:15:50 <3>end of sentence [;] (1)
Dec/25/2004 23:15:50 <3>comment [#information-only;] (18)
Dec/25/2004 23:15:50 <3>comment [#      request temp-address;] (23)
Dec/25/2004 23:15:50 <3>end of closure [}] (1)
Dec/25/2004 23:15:50 <3>end of sentence [;] (1)
Dec/25/2004 23:15:50 extracted an existing DUID from
/var/lib/dhcpv6/dhcp6c_duid: 00:01:00:01:09:60:73:93:00:00:39:ea:77:81
Dec/25/2004 23:15:50 link local addr is fe80::200:39ff:feea:7781
Dec/25/2004 23:15:50 res addr is fe80::200:39ff:feea:7781%eth0/28
Dec/25/2004 23:15:50 found an interface eth0 harware
00:00:39:ffffffea:77:ffffff81
Dec/25/2004 23:15:50  create iaid 3929604096 for interface eth0
Dec/25/2004 23:15:50 found an interface eth0 harware
00:00:39:ffffffea:77:ffffff81
Dec/25/2004 23:15:50  found interface eth0 iaid 3929604096
Dec/25/2004 23:15:50 interface eth0 iaid is 3929604096
Dec/25/2004 23:15:50 open_netlink_socket called
Dec/25/2004 23:15:50 netlink_send_rtmsg called
Dec/25/2004 23:15:50 netlink_recv_rtgenmsg called
Dec/25/2004 23:15:50 netlink_recv_rtgenmsg error
Dec/25/2004 23:15:50 netlink_send_rtgenmsg called
Dec/25/2004 23:15:50 netlink_recv_rtgenmsg called
Dec/25/2004 23:15:50 get_if_flags called
Dec/25/2004 23:15:50 get_if_flags called
Dec/25/2004 23:15:50 netlink_recv_rtgenmsg error
Dec/25/2004 23:15:50 create an event 0x89aa2d0 xid 0 for state 0
Dec/25/2004 23:15:50 reset a timer on eth0, state=INIT, timeo=0,
retrans=851
Dec/25/2004 23:15:51 ifp 0x89a6008 event 0x89aa2d0 a new XID (7314bf)
is generated
Dec/25/2004 23:15:51 set client ID
Dec/25/2004 23:15:51 set opt_8
Dec/25/2004 23:15:51 set rapid commit
Dec/25/2004 23:15:51 set IA_PD iaidinfo: iaid 3929604096 renewtime 0
rebindtime 0
Dec/25/2004 23:15:51 set opt_30
Dec/25/2004 23:15:51 send dst if eth0 addr is ff02::1:2%eth0 scope id is 2
Dec/25/2004 23:15:51 send solicit to ff02::1:2%eth0
Dec/25/2004 23:15:51 DUID is
00:01:00:01:09:60:73:93:00:00:39:ea:77:81, DUID_LEN is 14
Dec/25/2004 23:15:51 removing ID (ID:
00:01:00:01:09:60:73:93:00:00:39:ea:77:81)
Dec/25/2004 23:15:51 DUID is , DUID_LEN is 0
Dec/25/2004 23:15:51 reset a timer on eth0, state=SOLICIT, timeo=0,
retrans=1016
Dec/25/2004 23:15:51 receive packet info ifname eth0, addr is
fe80::200:39ff:feea:7781 scope id is 2
Dec/25/2004 23:15:51 receive reply from fe80::250:4ff:febd:b485%eth0
scope id 2 eth0
Dec/25/2004 23:15:51 get DHCP option client ID, len 14
Dec/25/2004 23:15:51   DUID: 00:01:00:01:09:60:73:93:00:00:39:ea:77:81
Dec/25/2004 23:15:51 get DHCP option server ID, len 14
Dec/25/2004 23:15:51   DUID: 00:01:00:01:09:60:5e:bc:00:50:04:bd:b4:85
Dec/25/2004 23:15:51 get DHCP option rapid commit, len 0
Dec/25/2004 23:15:51 get DHCP option opt_30, len 47
Dec/25/2004 23:15:51 get option iaid is 3929604096, renewtime 60,
rebindtime 90
Dec/25/2004 23:15:51   IA address option: opt_31, len 31
Dec/25/2004 23:15:51   get IAPREFIX prefix information:
fec0:0:0:1::/64 preferlifetime 130 validlifetime 200
Dec/25/2004 23:15:51 status code for this prefix is: success
Dec/25/2004 23:15:51 get DHCP option preference, len 1
Dec/25/2004 23:15:51 get option preferrence is ff
Dec/25/2004 23:15:51 get DHCP option status code, len 2
Dec/25/2004 23:15:51   this message status code: success
Dec/25/2004 23:15:51 get DHCP option DNS_RESOLVERS, len 16
Dec/25/2004 23:15:51 get DHCP option opt_26, len 18
Dec/25/2004 23:15:51 expand domain name pbg.bieringer.de, size 16
Dec/25/2004 23:15:51 reply message XID is (7314bf)
Dec/25/2004 23:15:51 ifp 0x89a6008 event 0x89aa2d0 id is 7314bf
Dec/25/2004 23:15:51 serverID is
00:01:00:01:09:60:5e:bc:00:50:04:bd:b4:85 len is 14
Dec/25/2004 23:15:51 new server DUID
00:01:00:01:09:60:5e:bc:00:50:04:bd:b4:85, len 14
Dec/25/2004 23:15:51 parse domain name dyn.pbg.bieringer.de
Dec/25/2004 23:15:51 parse domain name pbg.bieringer.de
Dec/25/2004 23:15:51 parse domain name bieringer.de
Dec/25/2004 23:15:51 parse name server fec0:0:0:1::1
Dec/25/2004 23:15:51  received nameserver[0] fec0:0:0:1::1
Dec/25/2004 23:15:51 nameserver fec0:0:0:1::1 found in resolv.conf
Dec/25/2004 23:15:51  received domainname[0] pbg.bieringer.de
Dec/25/2004 23:15:51 domain name pbg.bieringer.de found in resolv.conf
Dec/25/2004 23:15:51  rename failed for resolv.conf file
Segmentation fault


Expected results:

Working


Additional info:

For me it looks that at least the additional patch is wrong:
dhcpv6-0.10-change_resolv_conf.patch

Function "int change_resolv_conf(" either returns 1 or -1, but below
return value is compared against 0:

-       if (rename(resolv_dhcpv6_file, RESOLV_CONF_FILE)) {
+       if (change_resolv_conf(resolv_dhcpv6_file)!=0) {
                dprintf(LOG_ERR, "%s" " rename failed for resolv.conf
file", FNAME);
                return(-1);


Therefore it will never be counted as succesful, but as far as I see
the external call did the change in /etc/resolv.conf.


The reason, why it crashed afterwards can be perhaps seen here:

Last lines of
# strace -f dhcp6c -D -f eth0

[pid  5555] rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
[pid  5555] stat64("/var/lock/subsys/nscd", 0xfeeca1b0) = -1 ENOENT
(No such file or directory)
[pid  5555] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[pid  5555] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[pid  5555] exit_group(1)               = ?
Process 5554 resumed
Process 5555 detached
<... waitpid resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0) = 5555
--- SIGCHLD (Child exited) @ 0 (0) ---
time(NULL)                              = 1104013342
write(2, "Dec/25/2004 23:22:22  rename fai"..., 57Dec/25/2004 23:22:22
 rename failed for resolv.conf file
) = 57
close(10)                               = 0
munmap(0xf6ffe000, 4096)                = 0
close(10)                               = -1 EBADF (Bad file descriptor)
ioctl(-1, SNDCTL_TMR_TIMEBASE or TCGETS, 0xfee9a6f8) = -1 EBADF (Bad
file descriptor)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xf6ffd000
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV (core dumped) +++

Backtrace in core:

#0  0x002630cc in memcpy () from /lib/tls/libc.so.6
(gdb) bt
#0  0x002630cc in memcpy () from /lib/tls/libc.so.6
#1  0x00256d74 in _IO_file_xsgetn_internal () from /lib/tls/libc.so.6
#2  0x00257bd8 in _IO_sgetn_internal () from /lib/tls/libc.so.6
#3  0x0024c152 in fread () from /lib/tls/libc.so.6
#4  0x08059259 in dprintf ()
#5  0x08059589 in dprintf ()
#6  0x0804ba40 in ?? ()
#7  0xfee9aa00 in ?? ()
#8  0x08068e08 in optind ()
#9  0x0805ffcd in _IO_stdin_used ()
#10 0x08068e40 in optind ()
#11 0x0000000e in ?? ()
#12 0x00000002 in ?? ()
#13 0x083d8098 in ?? ()
#14 0x00000000 in ?? ()

Comment 1 Jason Vas Dias 2005-08-22 17:12:25 UTC
fixed with dhcpv6-0.10-14_EL4

Comment 8 Red Hat Bugzilla 2006-03-07 18:36:36 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2006-0115.html



Note You need to log in before you can comment on or make changes to this bug.