Version 1.1.1 stops responding

Stefan Winter stefan.winter at restena.lu
Tue Mar 28 08:16:36 CEST 2006


Hi Alan,

(moved to -devel)

thanks for the gdb refresher - I keep forgetting those args :-)

I'm not sure I'm overly helpful here, but I think I _might_ have something. I 
set up an instance of 1.1.1 on my workstation, ran

gdb radiusd
set args -X
run

and then sent a HUP from another console. In gdb,

continue

Program received signal SIGHUP, Hangup.
[Switching to Thread 16384 (LWP 29536)]
0xb7e0f5d2 in select () from /lib/libc.so.6
(gdb) cont
Continuing.
--- Walking the entire request list ---
Nothing to do.  Sleeping until we see a request.
Reloading configuration files.
reread_config:  reading radiusd.conf
Config:   including file: /etc/raddb/proxy.conf
Config:   including file: /etc/raddb/clients.conf
Config:   including file: /etc/raddb/snmp.conf
Config:   including file: /etc/raddb/eap.conf
Config:   including file: /etc/raddb/sql.conf
 main: prefix = "/usr"
 main: localstatedir = "/var"
 main: logdir = "/var/log/radius"
 main: libdir = "/usr/lib"
 main: radacctdir = "/var/log/radius/radacct"
 main: hostname_lookups = no
 main: max_request_time = 30
 main: cleanup_delay = 5
 main: max_requests = 1024
 main: delete_blocked_requests = 0
 main: port = 0
 main: allow_core_dumps = no
 main: log_stripped_names = no
 main: log_file = "/var/log/radius/radius.log"
 main: log_auth = no
 main: log_auth_badpass = no
 main: log_auth_goodpass = no
 main: pidfile = "/var/run/radiusd/radiusd.pid"
 main: user = "radiusd"
 main: group = "radiusd"
 main: usercollide = no
 main: lower_user = "no"
 main: lower_pass = "no"
 main: nospace_user = "no"
 main: nospace_pass = "no"
 main: checkrad = "/usr/sbin/checkrad"
 main: proxy_requests = yes
 proxy: retry_delay = 5
 proxy: retry_count = 3
 proxy: synchronous = no
 proxy: default_fallback = yes
 proxy: dead_time = 120
 proxy: post_proxy_authorize = yes
 proxy: wake_all_if_all_dead = no
 security: max_attributes = 200
 security: reject_delay = 1
 security: status_server = no
 main: debug_level = 0
read_config_files:  reading dictionary
read_config_files:  reading naslist
Using deprecated naslist file.  Support for this will go away soon.
read_config_files:  reading clients
read_config_files:  reading realms

Program received signal SIGINT, Interrupt.

and then I experienced that during the re-reading of config files, the process 
just froze, but no segfault (sending garbage with nc, which should make 
radiusd complain, but doesn't... no trace of anything being processed). After 
Ctrl-C and bt, I got:

(gdb) bt
#0  0xb7e0f5d2 in select () from /lib/libc.so.6
#1  0xbff68d50 in ?? ()
#2  0x0806d310 in ?? ()
#3  0x0806d068 in ?? ()
#4  0x0805743e in main (argc=2, argv=0xbff69e34) at radiusd.c:1276
(gdb) info threads
* 1 Thread 16384 (LWP 29536)  0xb7e0f5d2 in select () from /lib/libc.so.6

So for some reason it got stuck during select() - I watched this being stuck 
for several seconds before I killed the process. So there appears to be a 
deadlock in there.
Not sure if it has anything to do with the TLS hang; it's just that the 
symptoms seem similar. The select() waiting forever would explain that the 
process is still there, bound to its ports, but does nothing.

Greetings,

Stefan Winter

-- 
Stefan WINTER

RESTENA Foundation - Réseau Téléinformatique de l'Education Nationale et de 
la Recherche
R&D Engineer

6, rue Richard Coudenhove-Kalergi
L-1359 Luxembourg
email: stefan.winter at restena.lu     Tel.:     +352 424409-1
http://www.restena.lu               Fax:      +352 422473




More information about the Freeradius-Devel mailing list