3.0.6 strange bug causing infinite loop on "Ready to process requests" message

Nick Rogers ncrogers at gmail.com
Wed Jan 7 01:37:55 CET 2015


On Tue, Jan 6, 2015 at 4:20 PM, Arran Cudbard-Bell <
a.cudbardb at freeradius.org> wrote:

>
> > On 6 Jan 2015, at 19:11, Alan DeKok <aland at deployingradius.com> wrote:
> >
> > On Jan 6, 2015, at 7:00 PM, Nick Rogers <ncrogers at gmail.com> wrote:
> >> Yeah, that has been my gut feeling as well after seeing the kqueue
> addition in the changelog. I've definitely experienced kqueue related
> issues with other daemons under FreeBSD.
> >>
> >> Here's the thread backtrace
> >>
> >> Starting program: /usr/local/sbin/radiusd -fxx
> >> (no debugging symbols found)...(no debugging symbols found)...(no
> debugging symbols found)...(no debugging symbols found)...(no debugging
> symbols found)...(no debugging symbols found)...(no debugging symbols
> found)...(no debugging symbols found)...[New LWP 100270]
> >
> >  PLEASE build with debugging symbols.  Otherwise the backtrace is
> useless.
>
> To do that either:
>
> ./configure --enable-developer
>
> Or edit Make.inc, remove -O2 add -g3
>

Sorry, I had enabled developer option but also had to set WITH_DEBUG in the
FreeBSD port.

Here's the backtrace. Hope it is useful.

Starting program: /usr/local/sbin/radiusd -fxx
[New LWP 100455]
[New Thread 803406400 (LWP 100455/radiusd)]
[New Thread 80f1f9c00 (LWP 100595/radiusd)]

Program received signal SIGINT, Interrupt.
[Switching to Thread 80f1f9c00 (LWP 100595/radiusd)]
0x000000080208d448 in _umtx_op () from /lib/libc.so.7
* 3 Thread 80f1f9c00 (LWP 100595/radiusd)  0x000000080208d448 in _umtx_op
() from /lib/libc.so.7
  2 Thread 803406400 (LWP 100455/radiusd)  0x0000000802164bda in write ()
from /lib/libc.so.7

Thread 3 (Thread 80f1f9c00 (LWP 100595/radiusd)):
#0  0x000000080208d448 in _umtx_op () from /lib/libc.so.7
No symbol table info available.
#1  0x000000080207cc24 in sem_timedwait () from /lib/libc.so.7
No symbol table info available.
#2  0x000000000043d61e in request_handler_thread (arg=0x80f2a7300) at
src/main/threads.c:609
self = (THREAD_HANDLE *) 0x80f2a7300
#3  0x00000008019a14f5 in pthread_create () from /lib/libthr.so.3
No symbol table info available.
#4  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 2 (Thread 803406400 (LWP 100455/radiusd)):
#0  0x0000000802164bda in write () from /lib/libc.so.7
No symbol table info available.
#1  0x00000008019a3ef6 in write () from /lib/libthr.so.3
No symbol table info available.
#2  0x00000008008ab5f7 in vradlog (type=L_INFO, fmt=0x46c5a0 "Ready to
process requests", ap=0x7fffffffe8b0)
    at src/main/log.c:464
p = (unsigned char *) 0x7fffffffbf19 "\n"
buffer = "Ready to process
requests\n\000\017\b\000\000\000\001\000\000\000\000\000\000\000`H\214\000\b\000\000\000??F\000\000\000\000\000\200\200\200\200\200\200\200\200\200????\177\000\000??X\001\000\000\000\0001\000\000\000\000\000\000\000]\227???\177\000\000\000????\177\000\000\213K\214\000\b\000\000\000\020\000\000\000\016\000\000\000???\230$?\b?0????\177\000\000\016\v\212\000\b\000\000\000#\n\000\003\b\000\000\000???\000\016\000\000\000\213K\214\000\b\000\000\000\001\000\000\000\000\000\000\000`H\214\000\b\000\000\000?5F\000\000\000\000\000\025\a\000\000\000\000\000\000"...
unsan = 0x7fffffffbf00 "Ready to process requests\n"
len = 25
colourise = 0
#3  0x00000008008ab83e in radlog (type=L_INFO, msg=0x46c5a0 "Ready to
process requests") at src/main/log.c:485
ap = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 0x7fffffffe8f0,
    reg_save_area = 0x7fffffffe7f0}}
r = 0
#4  0x00000000004428a5 in event_status (wake=0x0) at src/main/process.c:4334
No locals.
#5  0x0000000800b0cd44 in fr_event_loop (el=0x80365e060) at
src/lib/event.c:577
i = 1
rcode = 1
when = {tv_sec = 0, tv_usec = 0}
wake = (struct timeval *) 0x0
ts_when = {tv_sec = 34614206240, tv_nsec = 34614206240}
ts_wake = (struct timespec *) 0x0
#6  0x0000000000443541 in radius_event_process () at src/main/process.c:5186
No locals.
#7  0x00000000004332d6 in main (argc=2, argv=0x7fffffffeb90) at
src/main/radiusd.c:574
rcode = 0
status = 6801456
argval = -1
spawn_flag = true
write_pid = false
display_version = false
flag = 0
from_child = {-1, -1}
autofree = (void *) 0x8034170e0
#0  0x000000080208d448 in _umtx_op () from /lib/libc.so.7
The program is running.  Exit anyway? (y or n)



> >> I was working on trying to disable kqueue somehow and test. Any
> suggestions on the best way of doing that? There does not appear to be a
> configure flag for it, unless I am missing it.
> >
> >  After the “configure” script runs, edit src/include/autoconf.h.  Look
> for:
> >
> > /* Define to 1 if you have the `kqueue' function. */
> > #define HAVE_KQUEUE 1
> >
> >  And delete it.  Then, “make” as normal.
>
> Yep that'd be a good test.
>

Removing kqueue definitely fixes the problem I'm having. I ended up
removing the kqueue line from the "for ac_func in \" loop in configure
script, but it had the same affect. I am able to handle requests after
rebuilding without kqueue and there is no more infinite loop.


>
> -Arran
> -
> List info/subscribe/unsubscribe? See
> http://www.freeradius.org/list/users.html
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20150106/014d5865/attachment.html>


More information about the Freeradius-Users mailing list