[pkg-wpa-devel] Bug#587634: wpasupplicant: race condition in /etc/wpa_supplicant/functions.sh?

Timo Juhani Lindfors timo.lindfors at iki.fi
Wed Jun 30 13:46:42 UTC 2010


Package: wpasupplicant
Version: 0.6.10-2
Severity: normal

Steps to reproduce:
1) cat >> /etc/network/interfaces << EOF
iface hacklab inet dhcp
 wpa-driver wext
 wpa-ssid "Langtao"
 wpa-psk "CENSORED"
 wpa-verbosity 9
 wpa-debug-level 3
EOF
2) sudo ifup wlan=hacklab

Expected results:
2) wlan interface goes up and gets an IP using DHCP

Actual results:
2) wlan interface does not get an IP:

wpa_supplicant: wpa-driver wext
wpa_supplicant: using debug level: 3
wpa_supplicant: /sbin/wpa_supplicant -s -B -P /var/run/wpa_supplicant.wlan.pid -i wlan -D wext -t -ddd -C /var/run/wpa_supplicant
Starting /sbin/wpa_supplicant...
ioctl[SIOCSIWESSID]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Operation not supported
ioctl[SIOCSIWENCODEEXT]: Operation not supported
ioctl[SIOCSIWENCODEEXT]: Operation not supported
ioctl[SIOCSIWENCODEEXT]: Operation not supported
1277831021.556575: WPS: UUID based on MAC address - hexdump(len=16): 75 0b a6 f5 64 b0 5f fa 8a 5e a7 59 cc 7e b9 df
wpa_supplicant: creating sendsigs omission pidfile: /lib/init/rw/sendsigs.omit.d/wpasupplicant.wpa_supplicant.wlan.pid
wpa_supplicant: ctrl_interface socket located at /var/run/wpa_supplicant/wlan
wpa_supplicant: configuring network block -- 'ADD_NETWORK' command timed out.
wpa_supplicant: wpa-ssid "Langtao" -- Invalid SET_NETWORK command: needs three arguments
(network id, variable name, and value)
wpa_supplicant: wpa-ssid "Langtao" failed!
wpa_supplicant: wpa-psk ***** -- Invalid SET_NETWORK command: needs three arguments
(network id, variable name, and value)
wpa_supplicant: wpa-psk ***** failed!
wpa_supplicant: enabling network block 'ADD_NETWORK' command timed out. -- wpa_supplicant: enabling network block 'ADD_NETWORK' command timed out. failed!
Internet Systems Consortium DHCP Client V3.1.3
Copyright 2004-2009 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wlan/00:12:cf:8e:ee:09
Sending on   LPF/wlan/00:12:cf:8e:ee:09
Sending on   Socket/fallback
DHCPDISCOVER on wlan to 255.255.255.255 port 67 interval 6
DHCPDISCOVER on wlan to 255.255.255.255 port 67 interval 14
DHCPDISCOVER on wlan to 255.255.255.255 port 67 interval 17
DHCPDISCOVER on wlan to 255.255.255.255 port 67 interval 14
DHCPDISCOVER on wlan to 255.255.255.255 port 67 interval 10
No DHCPOFFERS received.
No working leases in persistent database - sleeping.

More info:
1) strace reveals that the line

WPA_ID=$(wpa_cli add_network)

in /etc/wpa_supplicant/function.sh sometimes sets WPA_ID to the value
of "'ADD_NETWORK' command timed out." instead of the usual "0". This
then causes functions.sh to run funny stuff like

10622 execve("/sbin/wpa_cli", ["/sbin/wpa_cli", "-p", "/var/run/wpa_supplicant", "-i", "wlan", "set_network", "'ADD_NETWORK'", "command", "timed", "out.", "ssid", "\"Langtao\""], [/* 14 vars */]) = 0
10627 execve("/sbin/wpa_cli", ["/sbin/wpa_cli", "-p", "/var/run/wpa_supplicant", "-i", "wlan", "set_network", "'ADD_NETWORK'", "command", "timed", "out.", "psk", "\"CENSORED\""], [/* 14 vars */]) = 0
10628 execve("/sbin/wpa_cli", ["/sbin/wpa_cli", "-p", "/var/run/wpa_supplicant", "-i", "wlan", "enable_network", "'ADD_NETWORK' command timed out."], [/* 14 vars */]) = 0

Maybe wpa_cli gets to run before wpasupplicant has managed to bind its
unix socket?

In any case, functions.sh should detect the case where wpa_cli fails
and not try to pass its error message as an argument for other
commands...

2) For now I can connect to the network using

sudo killall dhclient
sudo killall wpa_supplicant
om wifi power 0
sleep 4
om wifi power 1
sleep 4
sudo /sbin/wpa_supplicant -B -s -P /var/run/wpa_supplicant.wlan.pid -i wlan -D  wext -t -ddd -C /var/run/wpa_supplicant
sleep 4
sudo wpa_cli -p /var/run/wpa_supplicant -i wlan add_network
sleep 4
sudo wpa_cli -p /var/run/wpa_supplicant -i wlan set_network 0 ssid "\"Langtao\""
sleep 4
sudo wpa_cli -p /var/run/wpa_supplicant -i wlan set_network 0 psk "\"CENSORED\""
sleep 4
sudo wpa_cli -p /var/run/wpa_supplicant -i wlan enable_network 0
sleep 4
sudo dhclient -d wlan

but I'd definitely want to get back to using ifup and ifdown.

3) The device is an openmoko freerunner gta02v5 running debian
unstable with the following exceptions:

3.1) linux is from
http://git.openmoko.org/?p=kernel.git;a=commit;h=a3587e4ed77974adfb057af261aaeea4022018e8
and uses the ar6000 kernel module for wlan

3.2) Qi (boot loader) is from
http://git.openmoko.org/?p=qi.git;a=commit;h=9ef7754b8243457ce9e3edb01bb078fac1f77ac1


-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: armel (armv4tl)

Kernel: Linux 2.6.29-GTA02_lindi2-andy-tracking-mokodev
Locale: LANG=C, LC_CTYPE=fi_FI (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/dash

Versions of packages wpasupplicant depends on:
ii  adduser                       3.112      add and remove users and groups
ii  libc6                         2.11.2-2   Embedded GNU C Library: Shared lib
ii  libdbus-1-3                   1.2.24-1   simple interprocess messaging syst
ii  libnl1                        1.1-5      library for dealing with netlink s
ii  libpcsclite1                  1.5.5-3    Middleware to access a smart card 
ii  libreadline6                  6.1-3      GNU readline and history libraries
ii  libssl0.9.8                   0.9.8o-1   SSL shared libraries
ii  lsb-base                      3.2-23.1   Linux Standard Base 3.2 init scrip

wpasupplicant recommends no packages.

Versions of packages wpasupplicant suggests:
pn  libengine-pkcs11-openssl      <none>     (no description available)
pn  wpagui                        <none>     (no description available)


-- no debconf information





More information about the Pkg-wpa-devel mailing list