cvs current with SIGSEGV; how to track down

Kevin Bonner keb at pa.net
Thu Jun 2 20:35:38 CEST 2005


On Wednesday 01 June 2005 18:56, Alan DeKok wrote:
> Kevin Bonner <keb at pa.net> wrote:
> > The proxy listener has several pointers that are never set, as shown by
> > your gdb print above.
>
>   Whoops... that as a dumb mistake.
>
>   I've committed a fix which should initialize those pointers.
>
>   Thanks.
>
>   Alan DeKok

Alan,

The fix looks good, but radiusd still segfaults at radiusd.c:735 because the 
proxy update function is NULL.

(gdb) bt
#0  0x00000000 in ?? ()
#1  0x0804e709 in main (argc=2, argv=0xfef163f0) at radiusd.c:735
(gdb) frame 1
#1  0x0804e709 in main (argc=2, argv=0xfef163f0) at radiusd.c:735
735					next = listener->update(listener, time_now);
(gdb) print *listener
$1 = {next = 0x0, type = RAD_LISTEN_PROXY, fd = 8, identity = 0x0, rl = 0x0, 
  recv = 0x805f098 <proxy_socket_recv>, send = 0x805ecf8 <proxy_socket_send>, 
update = 0, 
  print = 0x805eb34 <socket_print>, data = 0x883d0f0}

Here is a patch which should resolve this problem.

==cut here==
diff -u -r1.347 radiusd.c
--- radiusd.c	27 May 2005 21:19:57 -0000	1.347
+++ radiusd.c	2 Jun 2005 17:14:17 -0000
@@ -732,7 +732,9 @@
 			     listener = listener->next) {
 				int next;
 				
-				next = listener->update(listener, time_now);
+				next = (listener->update != NULL) ?
+					listener->update(listener, time_now) :
+					SLEEP_FOREVER;
 				if (next < sleep_time) {
 					sleep_time = next;
 				}
==cut here==

Kevin Bonner
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.freeradius.org/pipermail/freeradius-devel/attachments/20050602/1cda10b0/attachment.pgp>


More information about the Freeradius-Devel mailing list