Unexpected "Exiting normally" 2.1.8?

Alexander Clouter alex at digriz.org.uk
Wed Nov 4 21:47:21 CET 2009


Craig Campbell <craig at ccraft.ca> wrote:
> 
>  Thanks for the update - I was concluding I'd have to wait for the release 
> of 2.1.8 to pursue this.  I am currently in a situation where I can help 
> debug 2.1.8, since the 'new' systems aren't yet in production.
> 
Well I can see no reason to run FreeRADIUS no in a debugger all the 
time, even when in production.  However my nickname is "Rambo Clouter" 
so maybe you do not want to follow my advice. :)

When you compile FreeRADIUS you simply make sure you leave 
debugging symbols in and turn off compiler optimisations (so your CFLAGS 
should be '-O0 -g'.  You probably can do this by running configure as 
follows:
----
CFLAGS='-O0 -g' ./configure --all-your-usual-options-that-you-want
----

> Looking at your debug output (and I am in no way an expert at that) it seems 
> as though the process received a signal?
>
Well FreeRADIUS is sending it to herself according to gdb:
---- src/main/radiusd.c line 419 ----
        /*
         *      Send a TERM signal to all
         *      associated processes
         *      (including us, which gets
         *      ignored.)
         */
#ifndef __MINGW32__
        if (spawn_flag) kill(-radius_pid, SIGTERM);
#endif  
----

For whatever reason, it is not getting ignored.  At first I thought it 
was because I run my FreeRADIUS (even in production) in gdb, but as you 
do not I am wondering what is actually going on.

To run it in the debugger just run 'gdb freeradius' and you will get the 
gdb prompt.  There you want to type 'run -f' and wait for it to puke.  
When it does you could type 'where' for it to tell you what happened, 
but we know what is happening, we want to find which patch is doing it 
:)  Oh familise yourself with screen[2] if you do not know it already, 
you should run the debugger in a screen'd session so you can return to 
it later without having to remain logged in.

> I am running a 'custom' module (event.c as I recall) from Alan that resolves 
> an issue with hung children (very exciting!), and I followed Alan's 
> instructions to get to this point.  I would really like to try to 'give 
> back' if I can and assist in identifying the cause of the program exiting 
> (assuming it is a new and as of yet unidentified bug).
> 
> Would copying the steps you have below on my two redhat systems be a good 
> way to proceed?
> 
Pretty much follow:

http://www.reactivated.net/weblog/archives/2006/01/using-git-bisect-to-find-buggy-kernel-patches/

I had been running with the cherry-pick'ed patches for weeks and had no 
problems up to 9261f3e0026323b2c397af13d02fbc5780908143, so I am certain 
that the issue is the result of the patches between 
12ead56dffca9b3ecddc8a7860a1ef5b5361b374 and 
9dbc8974fdd2300a70293eda9c62bce20a3c9165.  The problem is you *have* to 
apply my listed cherry-picks, as if you add *any* of the TCP related 
code Alan has been working on, it all stops compiling[1]

Cheers

[1] I am pretty sure Alan has stashed a number of patches that he has 
	not put into the publically available GIT trees as things like 
	the jumbo socket clean up patch 
	(e04b62f1bd257489bd92ccc584b0886c7e2011e8) refer to 
	my_ipaddr/my_port which is not in any header files I have or 
	found in 'master'
[2] http://blogamundo.net/code/screen/
-- 
Alexander Clouter
.sigmonster says: Simplicity does not precede complexity, but follows it.




More information about the Freeradius-Users mailing list