Bug 439796

Summary: dhclient always crashes when called from NetworkManager
Product: [Fedora] Fedora Reporter: Erik van Pienbroek <erik-fedora>
Component: dhcpAssignee: David Cantrell <dcantrell>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: medium    
Version: rawhideCC: nphilipp
Target Milestone: ---Keywords: Desktop, Patch
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-04-01 16:47:53 EDT Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Attachments:
Description Flags
Proposed workaround
none
Core dump, from dhclient-4.0.0-13.fc9.x86_64 none

Description Erik van Pienbroek 2008-03-31 10:10:46 EDT
Recently I've enabled NetworkManager on my rawhide installation, but since then,
every time I let NetworkManager configure my eth0 interface, nm-applet hangs for
about 45 seconds.

NetworkManager itself produces the following messages:

NetworkManager: <info>  starting...
NetworkManager: <info>  Found radio killswitch
/org/freedesktop/Hal/devices/ipw_wlan_switch
NetworkManager: <info>  eth0: Device is fully-supported using driver 'atl1'.
NetworkManager: <info>  Now managing wired Ethernet (802.3) device 'eth0'.
NetworkManager: <info>  Bringing up device eth0
NetworkManager: <info>  Deactivating device eth0.
NetworkManager: <info>  (eth0): exported as
/org/freedesktop/Hal/devices/net_00_1b_fc_3d_e0_3b
NetworkManager: <info>  wlan0: Device is fully-supported using driver 'iwl3945'.
NetworkManager: <info>  wlan0: driver supports SSID scans (scan_capa 0x01).
NetworkManager: <info>  Now managing wireless (802.11) device 'wlan0'.
NetworkManager: <info>  Bringing up device wlan0
NetworkManager: <info>  Deactivating device wlan0.
NetworkManager: <info>  (wlan0): exported as
/org/freedesktop/Hal/devices/net_00_1b_77_26_6f_52
NetworkManager: <info>  (wlan0) supplicant interface is now in state 2 (from 1).
NetworkManager: <info>  Activation (eth0) starting connection 'Auto Ethernet'
NetworkManager: <info>  Activation (eth0) Stage 1 of 5 (Device Prepare) scheduled...
NetworkManager: <info>  Activation (eth0) Stage 1 of 5 (Device Prepare) started...
NetworkManager: <info>  Activation (eth0) Stage 2 of 5 (Device Configure)
scheduled...
NetworkManager: <info>  Activation (eth0) Stage 1 of 5 (Device Prepare) complete.
NetworkManager: <info>  Activation (eth0) Stage 2 of 5 (Device Configure)
starting...
NetworkManager: <info>  Activation (eth0) Stage 2 of 5 (Device Configure)
successful.
NetworkManager: <info>  Activation (eth0) Stage 3 of 5 (IP Configure Start)
scheduled.
NetworkManager: <info>  Activation (eth0) Stage 2 of 5 (Device Configure) complete.
NetworkManager: <info>  Activation (eth0) Stage 3 of 5 (IP Configure Start)
started...
NetworkManager: <info>  Activation (eth0) Beginning DHCP transaction.
NetworkManager: <info>  dhclient started with pid 9788
NetworkManager: <info>  Activation (eth0) Stage 3 of 5 (IP Configure Start)
complete.
Internet Systems Consortium DHCP Client 4.0.0
Copyright 2004-2007 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

NetworkManager: <info>  Device 'eth0' DHCP transaction took too long (>45s),
stopping it.
NetworkManager: <info>  eth0: canceled DHCP transaction, dhclient pid 9788
NetworkManager: <info>  Activation (eth0) Stage 4 of 5 (IP Configure Timeout)
scheduled...
NetworkManager: <info>  Activation (eth0) Stage 4 of 5 (IP Configure Timeout)
started...
NetworkManager: <info>  Marking connection 'Auto Ethernet' invalid.
NetworkManager: <info>  Activation (eth0) failed.
NetworkManager: <info>  Deactivating device eth0.
NetworkManager: <info>  Activation (eth0) Stage 4 of 5 (IP Configure Timeout)
complete.
NetworkManager: <info>  Deactivating device eth0.

If I look in the dmesg I see the following error:

dhclient[3812]: segfault at e0 ip 41866b sp 7fff6eb51400 error 4 in
dhclient[400000+6e000]

To find out what caused this segfault, I've enabled core dumping with ulimit.
This produced the following backtrace:

(gdb) bt
#0  do_peek_token (rval=0x7fff635e93e8, rlen=0x0, cfile=0x0,
raw=isc_boolean_false) at conflex.c:386
#1  0x0000000000409327 in read_client_conf_file (name=<value optimized out>,
ip=0x0, client=0x67a4c0) at clparse.c:231
#2  0x000000000040a937 in read_client_conf () at clparse.c:160
#3  0x0000000000410f73 in main (argc=11, argv=0x7fff635e9768, envp=<value
optimized out>) at dhclient.c:586

The code of the function read_client_config_file() looks like this:

        cfile = (struct parse *)0;
        new_parse (&cfile, file, (char *)0, 0, path_dhclient_conf, 0);

        do {
                token = peek_token (&val, (unsigned *)0, cfile);
                if (token == END_OF_FILE)
                        break;
                parse_client_statement (cfile, ip, client);
        } while (1);

Normally, the function new_parse() should set the cfile to a valid pointer.
According to the backtrace, this doesn't happen.

As a workaround, I've tried adding an extra if to this function :

        cfile = (struct parse *)0;
        new_parse (&cfile, file, (char *)0, 0, path_dhclient_conf, 0);

>        if (!cfile)
>                return ISC_R_BADPARSE;

        do {
                token = peek_token (&val, (unsigned *)0, cfile);
                if (token == END_OF_FILE)
                        break;
                parse_client_statement (cfile, ip, client);
        } while (1);

I've tested with this patch for a couple of days and everything seems to run
stable with it.
Comment 1 Erik van Pienbroek 2008-03-31 10:10:46 EDT
Created attachment 299724 [details]
Proposed workaround
Comment 2 Erik van Pienbroek 2008-03-31 10:13:15 EDT
Created attachment 299725 [details]
Core dump, from dhclient-4.0.0-13.fc9.x86_64
Comment 3 Nils Philippsen 2008-04-01 09:07:28 EDT
I can confirm that the patch in comment #1 makes dhclient work with
NetworkManager again. Dave, will you build an update or do you want me to do it?
Comment 4 David Cantrell 2008-04-01 16:15:01 EDT
I'll get a build going today with this patch.  Thanks.
Comment 5 David Cantrell 2008-04-01 16:47:53 EDT
Fixed in dhcp-4.0.0-14.fc9.