Freeradius process dies with some (bad?!) EAP requests
Alexander Clouter
alex at digriz.org.uk
Tue Jan 6 23:27:37 CET 2009
Nelson Vale <nelsonduvall at gmail.com> wrote:
>
> We have several machines running freeradius 2.0.2 as authentication server,
> and we're facing a strange and very critical problem.
> Occasionally radius server just dies with no apparent reason. When I look at
> the logs, the last lines I see before it happens are like:
>
> "...
> Error: rlm_eap: No EAPsession matching the State variable.
> Error: rlm_eap: Either EAP-request timed out OR EAP-response to an unknown
> EAP-request
> ..."
>
> **
> I've googled for problems like this and I found some simillar occurrences,
> but no solutions provided...
>
> Is this a known problem that is fixed in a recent version?
>
> This is a big issue for us because this causes several thousands of users to
> complain about it, so we would appreciate your help...
>
For us it was not FreeRADIUS at fault, it was glibc. As we *ran* Debian
'stable' the version of libc6 was really really old (2.3.6) and it just
kept randomly segfaulting (turned out it waas in libc6). The EAP
session timeouts looked like a possible clue but in the end I discarded
it as a red herring.
In the end bumping to Debian lenny (currently 'testing' but soon to be
stable) fixed all our problems and I have not had *any* reliability
issues either...all down to the libc6 version (now 2.7). Another added
bonus (this was just before etchandahalf) I was able to start using gdb
on FreeRADIUS as a kernel bug[1] (earlier than 2.6.23) prevents it from
functioning.
When reliability hits you, it's good to learn briefly how to use gdb.
Very simply[2]:
* log in as root
* open a screen session[3]
* make sure FreeRADIUS is not running
* make sure you have all the debug symbols about, or a debugable
version installed
* configure screen to log to a file; 'Ctrl-A H'
* type 'gdb /usr/sbin/freeradius'
* in gdb type 'run -X'
* detach from screen 'Ctrl-A D'
* when you notice FreeRADIUS has died, reconnect to your screen session
* and the gdb prompt type 'where' or for *lots* of info try
'thread apply all bt full'[3]
* tell screen to stop logging, 'Ctrl-A H'
* logout of screen
Means you can run FreeRADIUS and get the debugging you need to either
blame the OS or Alan :)
>From what I can remember, I think the segfault for use was in the GNU
regexp library it's-self.
Cheers
Alex
[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=449181
[2] a different approach to the one on http://bugs.freeradius.org/
[3] http://blogamundo.net/code/screen/
[4] http://wiki.debian.org/HowToGetABacktrace
--
Alexander Clouter
.sigmonster says: "The jig's up, Elman."
"Which jig?"
-- Jeff Elman
More information about the Freeradius-Users
mailing list