Hi,
I've added the patch to set rcode=1 on clean exit.
The patch to remove free_mainconfig() is made unnecessary by other cleanups. The SEGV was a result of mis-ordered free's. There was conflict between the modules free'ing their data, and the main configuration code free'ing its data. That was fixed.
The code was run through valgrind repeatedly until it shows no errors on exit.
Well, this morning's GIT doesn't quite agree. Sending a TERM to the server running -X: Listening on authentication address :: port 1812 Listening on accounting address :: port 1813 Listening on authentication address * port 1812 Listening on accounting address * port 1813 Listening on command file /var/run/radiusd/radiusd.sock Listening on proxy address :: port 1814 Ready to process requests. Ready to process requests. Signalled to terminate Exiting normally. Speicherzugriffsfehler Speicherzugriffsfehler is my locale for Segmentation fault. gdb during termination time shows that there's something wrong inside free'ing eap types, it seems: Listening on authentication address :: port 1812 Listening on accounting address :: port 1813 Listening on authentication address * port 1812 Listening on accounting address * port 1813 Listening on command file /var/run/radiusd/radiusd.sock Listening on proxy address :: port 1814 Ready to process requests. Program received signal SIGTERM, Terminated. 0x00007ffff6608623 in select () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff6608623 in select () from /lib64/libc.so.6 #1 0x00007ffff7bca538 in fr_event_loop (el=0x889640) at event.c:391 #2 0x0000000000429f21 in radius_event_process () at event.c:3800 #3 0x0000000000409f7c in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:421 (gdb) c Continuing. Ready to process requests. Signalled to terminate Exiting normally. Program received signal SIGSEGV, Segmentation fault. 0x00007ffff65a5634 in free () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff65a5634 in free () from /lib64/libc.so.6 #1 0x000000000040e2c0 in cf_section_parse_free (cs=0x675240, base=0x8209c0) at conffile.c:344 #2 0x00007ffff56e0d31 in eaptype_free (i=0x8247f0) at mem.c:253 #3 0x00007ffff56de877 in eap_detach (instance=0x823ad0) at rlm_eap.c:69 #4 0x000000000041ad31 in module_instance_free (data=0x823990) at modules.c:385 #5 0x00007ffff7bc3dfd in FreeWalker (tree=0x7f8130, X=0x825a70) at rbtree.c:63 #6 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x81a9c0) at rbtree.c:61 #7 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x7f9f50) at rbtree.c:60 #8 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x822d30) at rbtree.c:60 #9 0x00007ffff7bc418d in rbtree_free (tree=0x7f8130) at rbtree.c:74 #10 0x000000000041bc40 in detach_modules () at modules.c:441 #11 0x0000000000409fd4 in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:465 (gdb) Greetings, Stefan Winter -- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Stefan Winter wrote:
Well, this morning's GIT doesn't quite agree. Sending a TERM to the server running -X:
Arg. I may have to back-port a bunch of fixes from the master branch.
gdb during termination time shows that there's something wrong inside free'ing eap types, it seems:
Double free, probably.
Program received signal SIGSEGV, Segmentation fault. 0x00007ffff65a5634 in free () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff65a5634 in free () from /lib64/libc.so.6 #1 0x000000000040e2c0 in cf_section_parse_free (cs=0x675240, base=0x8209c0) at conffile.c:344 #2 0x00007ffff56e0d31 in eaptype_free (i=0x8247f0) at mem.c:253 #3 0x00007ffff56de877 in eap_detach (instance=0x823ad0) at rlm_eap.c:69
I'll take a look. I spent some effort in the master branch to clean it up. It now exits cleanly when using "radiusd -M". I'm wary of making changes to the v2.x.x branch, but bug fixes are definitely on the list. Alan DeKok.
Alan DeKok wrote:
I may have to back-port a bunch of fixes from the master branch.
No... the master branch relies on talloc() and other methods to avoid this issue. The problem was that the rlm_eap code expects that the type-specific data is the parsed config file data. The rlm_eap_tls module instead buried it inside of another pointer. So... the config file free code was treating structure type A as a structure of type B. And boom. I've pushed an ugly but simple fix. It should now work. Alan DeKok.
Hi, that still doesn't fix it; the SEGV is now at a different place though: Ready to process requests. Program received signal SIGTERM, Terminated. 0x00007ffff6608623 in select () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff6608623 in select () from /lib64/libc.so.6 #1 0x00007ffff7bca538 in fr_event_loop (el=0x8896c0) at event.c:391 #2 0x0000000000429f21 in radius_event_process () at event.c:3800 #3 0x0000000000409f7c in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:421 (gdb) c Continuing. Ready to process requests. Signalled to terminate Exiting normally. Program received signal SIGSEGV, Segmentation fault. 0x00007ffff65a5634 in free () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff65a5634 in free () from /lib64/libc.so.6 #1 0x000000000040e2c0 in cf_section_parse_free (cs=0x6797d0, base=0x87f710) at conffile.c:344 #2 0x000000000041ad11 in module_instance_free (data=0x87f5d0) at modules.c:382 #3 0x00007ffff7bc3dfd in FreeWalker (tree=0x7f8130, X=0x87dc90) at rbtree.c:63 #4 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x83f2f0) at rbtree.c:61 #5 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x82ff30) at rbtree.c:60 #6 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x884640) at rbtree.c:60 #7 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x833850) at rbtree.c:60 #8 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x822e20) at rbtree.c:61 #9 0x00007ffff7bc418d in rbtree_free (tree=0x7f8130) at rbtree.c:74 #10 0x000000000041bc40 in detach_modules () at modules.c:441 #11 0x0000000000409fd4 in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:465 (gdb) Doesn't tell *which* module instance is the bad one though. If it's needed, I could try to zero in by selectively not loading modules... Stefan -- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Stefan Winter wrote:
that still doesn't fix it; the SEGV is now at a different place though:
That's better.
Program received signal SIGSEGV, Segmentation fault. 0x00007ffff65a5634 in free () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff65a5634 in free () from /lib64/libc.so.6 #1 0x000000000040e2c0 in cf_section_parse_free (cs=0x6797d0, base=0x87f710) at conffile.c:344 #2 0x000000000041ad11 in module_instance_free (data=0x87f5d0) at modules.c:382
If you print this->name or this->entry->module->name, you'll see which module it is. Odds are it's the same kind of nonsense as rlm_eap_tls. The parsed configuration items are buried inside of a second structure, rather than being in the main instance data. That fix should be easier. Add a "detach" method to the module. Call cf_section_parse_free() on the real pointer. And then free() the instance. Alan DeKok.
Hi, I'm pretty mucha dummy in gdb. I guess i did it wrong: Program received signal SIGSEGV, Segmentation fault. 0x00007ffff65a5634 in free () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff65a5634 in free () from /lib64/libc.so.6 #1 0x000000000040e2c0 in cf_section_parse_free (cs=0x6797d0, base=0x87f730) at conffile.c:344 #2 0x000000000041ad11 in module_instance_free (data=0x87f5f0) at modules.c:382 #3 0x00007ffff7bc3dfd in FreeWalker (tree=0x7f8130, X=0x87dcb0) at rbtree.c:63 #4 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x83f310) at rbtree.c:61 #5 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x82ff50) at rbtree.c:60 #6 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x884660) at rbtree.c:60 #7 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x833870) at rbtree.c:60 #8 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x822e20) at rbtree.c:61 #9 0x00007ffff7bc418d in rbtree_free (tree=0x7f8130) at rbtree.c:74 #10 0x000000000041bc40 in detach_modules () at modules.c:441 #11 0x0000000000409fd4 in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:465 (gdb) print this->name No symbol "this" in current context. (gdb) print name $1 = 0 (gdb) print entry No symbol "entry" in current context. (gdb) print module No symbol "module" in current context. (gdb) print $2 = 0 (gdb) ? Stefan On 25.03.2013 14:50, Alan DeKok wrote:
Stefan Winter wrote:
that still doesn't fix it; the SEGV is now at a different place though:
That's better.
Program received signal SIGSEGV, Segmentation fault. 0x00007ffff65a5634 in free () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff65a5634 in free () from /lib64/libc.so.6 #1 0x000000000040e2c0 in cf_section_parse_free (cs=0x6797d0, base=0x87f710) at conffile.c:344 #2 0x000000000041ad11 in module_instance_free (data=0x87f5d0) at modules.c:382
If you print this->name or this->entry->module->name, you'll see which module it is.
Odds are it's the same kind of nonsense as rlm_eap_tls. The parsed configuration items are buried inside of a second structure, rather than being in the main instance data.
That fix should be easier. Add a "detach" method to the module. Call cf_section_parse_free() on the real pointer. And then free() the instance.
Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
-- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
On 25.03.2013 15:21, Stefan Winter wrote:
Hi,
I'm pretty mucha dummy in gdb. I guess i did it wrong:
Program received signal SIGSEGV, Segmentation fault. 0x00007ffff65a5634 in free () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff65a5634 in free () from /lib64/libc.so.6 #1 0x000000000040e2c0 in cf_section_parse_free (cs=0x6797d0, base=0x87f730) at conffile.c:344 #2 0x000000000041ad11 in module_instance_free (data=0x87f5f0) at modules.c:382 #3 0x00007ffff7bc3dfd in FreeWalker (tree=0x7f8130, X=0x87dcb0) at rbtree.c:63 #4 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x83f310) at rbtree.c:61 #5 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x82ff50) at rbtree.c:60 #6 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x884660) at rbtree.c:60 #7 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x833870) at rbtree.c:60 #8 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x822e20) at rbtree.c:61 #9 0x00007ffff7bc418d in rbtree_free (tree=0x7f8130) at rbtree.c:74 #10 0x000000000041bc40 in detach_modules () at modules.c:441 #11 0x0000000000409fd4 in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:465
Use "frame X" to move to one of the frame in the stack. In this example frame 2 p this->name Olivier -- Olivier Beytrison Network & Security Engineer, HES-SO Fribourg Mail: olivier@heliosnet.org
Hi, cool, thanks! (gdb) frame 2 #2 0x000000000041ad11 in module_instance_free (data=0x87f5f0) at modules.c:382 382 cf_section_parse_free(this->cs, this->insthandle); (gdb) p this->name $3 = "sql-aai", '\000' <repeats 246 times> (gdb) p this->entry->module->name $4 = 0x7ffff44a2693 "SQL" It's one of the instances of the SQL module. Stefan On 25.03.2013 15:23, Olivier Beytrison wrote:
On 25.03.2013 15:21, Stefan Winter wrote:
Hi,
I'm pretty mucha dummy in gdb. I guess i did it wrong:
Program received signal SIGSEGV, Segmentation fault. 0x00007ffff65a5634 in free () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff65a5634 in free () from /lib64/libc.so.6 #1 0x000000000040e2c0 in cf_section_parse_free (cs=0x6797d0, base=0x87f730) at conffile.c:344 #2 0x000000000041ad11 in module_instance_free (data=0x87f5f0) at modules.c:382 #3 0x00007ffff7bc3dfd in FreeWalker (tree=0x7f8130, X=0x87dcb0) at rbtree.c:63 #4 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x83f310) at rbtree.c:61 #5 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x82ff50) at rbtree.c:60 #6 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x884660) at rbtree.c:60 #7 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x833870) at rbtree.c:60 #8 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x822e20) at rbtree.c:61 #9 0x00007ffff7bc418d in rbtree_free (tree=0x7f8130) at rbtree.c:74 #10 0x000000000041bc40 in detach_modules () at modules.c:441 #11 0x0000000000409fd4 in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:465
Use "frame X" to move to one of the frame in the stack. In this example frame 2 p this->name
Olivier
-- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Stefan Winter wrote:
cool, thanks!
(gdb) frame 2 #2 0x000000000041ad11 in module_instance_free (data=0x87f5f0) at modules.c:382 382 cf_section_parse_free(this->cs, this->insthandle); (gdb) p this->name $3 = "sql-aai", '\000' <repeats 246 times> (gdb) p this->entry->module->name $4 = 0x7ffff44a2693 "SQL"
It's one of the instances of the SQL module.
$ git pull Alan DeKok.
Hi,
It's one of the instances of the SQL module.
$ git pull
now it made it through SQL, but still SIGSEGVs. Ready to process requests. Signalled to terminate Exiting normally. rlm_sql (sql-aai): Closing sqlsocket 4 rlm_sql (sql-aai): Closing sqlsocket 3 rlm_sql (sql-aai): Closing sqlsocket 2 rlm_sql (sql-aai): Closing sqlsocket 1 rlm_sql (sql-aai): Closing sqlsocket 0 rlm_sql (sql-imap): Closing sqlsocket 7 rlm_sql (sql-imap): Closing sqlsocket 6 rlm_sql (sql-imap): Closing sqlsocket 5 rlm_sql (sql-imap): Closing sqlsocket 4 rlm_sql (sql-imap): Closing sqlsocket 3 rlm_sql (sql-imap): Closing sqlsocket 2 rlm_sql (sql-imap): Closing sqlsocket 1 rlm_sql (sql-imap): Closing sqlsocket 0 rlm_sql (sql-eduroam): Closing sqlsocket 1 rlm_sql (sql-eduroam): Closing sqlsocket 0 rlm_sql (sql-dialup): Closing sqlsocket 1 rlm_sql (sql-dialup): Closing sqlsocket 0 rlm_sql (sql-imap-hash): Closing sqlsocket 7 rlm_sql (sql-imap-hash): Closing sqlsocket 6 rlm_sql (sql-imap-hash): Closing sqlsocket 5 rlm_sql (sql-imap-hash): Closing sqlsocket 4 rlm_sql (sql-imap-hash): Closing sqlsocket 3 rlm_sql (sql-imap-hash): Closing sqlsocket 2 rlm_sql (sql-imap-hash): Closing sqlsocket 1 rlm_sql (sql-imap-hash): Closing sqlsocket 0 rlm_sql (sql-userjabber): Closing sqlsocket 1 rlm_sql (sql-userjabber): Closing sqlsocket 0 rlm_sql (sql-smtp): Closing sqlsocket 2 rlm_sql (sql-smtp): Closing sqlsocket 1 rlm_sql (sql-smtp): Closing sqlsocket 0 rlm_sql (sql-webmailsso): Closing sqlsocket 1 rlm_sql (sql-webmailsso): Closing sqlsocket 0 rlm_sql (sql-webmailsso-users): Closing sqlsocket 9 rlm_sql (sql-webmailsso-users): Closing sqlsocket 8 rlm_sql (sql-webmailsso-users): Closing sqlsocket 7 rlm_sql (sql-webmailsso-users): Closing sqlsocket 6 rlm_sql (sql-webmailsso-users): Closing sqlsocket 5 rlm_sql (sql-webmailsso-users): Closing sqlsocket 4 rlm_sql (sql-webmailsso-users): Closing sqlsocket 3 rlm_sql (sql-webmailsso-users): Closing sqlsocket 2 rlm_sql (sql-webmailsso-users): Closing sqlsocket 1 rlm_sql (sql-webmailsso-users): Closing sqlsocket 0 rlm_sql (sql-vpn): Closing sqlsocket 1 rlm_sql (sql-vpn): Closing sqlsocket 0 Program received signal SIGSEGV, Segmentation fault. modcallable_free (pc=pc@entry=0x7fffffffe438) at modcall.c:2242 2242 next = loop->next; (gdb) bt #0 modcallable_free (pc=pc@entry=0x7fffffffe438) at modcall.c:2242 #1 0x000000000041dec6 in modcallable_free (pc=pc@entry=0x7fffffffe468) at modcall.c:2243 #2 0x000000000041dec6 in modcallable_free (pc=pc@entry=0x7fffffffe498) at modcall.c:2243 #3 0x000000000041dec6 in modcallable_free (pc=pc@entry=0x880c08) at modcall.c:2243 #4 0x000000000041b00d in indexed_modcallable_free (data=0x880c00) at modules.c:308 #5 0x00007ffff7bc3dfd in FreeWalker (tree=0x87ed00, X=0x880d30) at rbtree.c:63 #6 0x00007ffff7bc3dee in FreeWalker (tree=0x87ed00, X=0x87f170) at rbtree.c:61 #7 0x00007ffff7bc418d in rbtree_free (tree=0x87ed00) at rbtree.c:74 #8 0x000000000041afd7 in virtual_server_free (server=0x87ed30) at modules.c:264 #9 0x000000000041bcf2 in virtual_servers_free (when=when@entry=0) at modules.c:296 #10 0x000000000041ab3d in free_mainconfig () at mainconfig.c:1000 #11 0x0000000000409fde in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:472 (gdb) If you need me to print more variable content, I'll leave the gdb session open... Stefan -- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Hi, any clue? Greetings, Stefan Winter On 08.04.2013 10:35, Stefan Winter wrote:
Hi,
It's one of the instances of the SQL module.
$ git pull
now it made it through SQL, but still SIGSEGVs.
Ready to process requests. Signalled to terminate Exiting normally. rlm_sql (sql-aai): Closing sqlsocket 4 rlm_sql (sql-aai): Closing sqlsocket 3 rlm_sql (sql-aai): Closing sqlsocket 2 rlm_sql (sql-aai): Closing sqlsocket 1 rlm_sql (sql-aai): Closing sqlsocket 0 rlm_sql (sql-imap): Closing sqlsocket 7 rlm_sql (sql-imap): Closing sqlsocket 6 rlm_sql (sql-imap): Closing sqlsocket 5 rlm_sql (sql-imap): Closing sqlsocket 4 rlm_sql (sql-imap): Closing sqlsocket 3 rlm_sql (sql-imap): Closing sqlsocket 2 rlm_sql (sql-imap): Closing sqlsocket 1 rlm_sql (sql-imap): Closing sqlsocket 0 rlm_sql (sql-eduroam): Closing sqlsocket 1 rlm_sql (sql-eduroam): Closing sqlsocket 0 rlm_sql (sql-dialup): Closing sqlsocket 1 rlm_sql (sql-dialup): Closing sqlsocket 0 rlm_sql (sql-imap-hash): Closing sqlsocket 7 rlm_sql (sql-imap-hash): Closing sqlsocket 6 rlm_sql (sql-imap-hash): Closing sqlsocket 5 rlm_sql (sql-imap-hash): Closing sqlsocket 4 rlm_sql (sql-imap-hash): Closing sqlsocket 3 rlm_sql (sql-imap-hash): Closing sqlsocket 2 rlm_sql (sql-imap-hash): Closing sqlsocket 1 rlm_sql (sql-imap-hash): Closing sqlsocket 0 rlm_sql (sql-userjabber): Closing sqlsocket 1 rlm_sql (sql-userjabber): Closing sqlsocket 0 rlm_sql (sql-smtp): Closing sqlsocket 2 rlm_sql (sql-smtp): Closing sqlsocket 1 rlm_sql (sql-smtp): Closing sqlsocket 0 rlm_sql (sql-webmailsso): Closing sqlsocket 1 rlm_sql (sql-webmailsso): Closing sqlsocket 0 rlm_sql (sql-webmailsso-users): Closing sqlsocket 9 rlm_sql (sql-webmailsso-users): Closing sqlsocket 8 rlm_sql (sql-webmailsso-users): Closing sqlsocket 7 rlm_sql (sql-webmailsso-users): Closing sqlsocket 6 rlm_sql (sql-webmailsso-users): Closing sqlsocket 5 rlm_sql (sql-webmailsso-users): Closing sqlsocket 4 rlm_sql (sql-webmailsso-users): Closing sqlsocket 3 rlm_sql (sql-webmailsso-users): Closing sqlsocket 2 rlm_sql (sql-webmailsso-users): Closing sqlsocket 1 rlm_sql (sql-webmailsso-users): Closing sqlsocket 0 rlm_sql (sql-vpn): Closing sqlsocket 1 rlm_sql (sql-vpn): Closing sqlsocket 0
Program received signal SIGSEGV, Segmentation fault. modcallable_free (pc=pc@entry=0x7fffffffe438) at modcall.c:2242 2242 next = loop->next; (gdb) bt #0 modcallable_free (pc=pc@entry=0x7fffffffe438) at modcall.c:2242 #1 0x000000000041dec6 in modcallable_free (pc=pc@entry=0x7fffffffe468) at modcall.c:2243 #2 0x000000000041dec6 in modcallable_free (pc=pc@entry=0x7fffffffe498) at modcall.c:2243 #3 0x000000000041dec6 in modcallable_free (pc=pc@entry=0x880c08) at modcall.c:2243 #4 0x000000000041b00d in indexed_modcallable_free (data=0x880c00) at modules.c:308 #5 0x00007ffff7bc3dfd in FreeWalker (tree=0x87ed00, X=0x880d30) at rbtree.c:63 #6 0x00007ffff7bc3dee in FreeWalker (tree=0x87ed00, X=0x87f170) at rbtree.c:61 #7 0x00007ffff7bc418d in rbtree_free (tree=0x87ed00) at rbtree.c:74 #8 0x000000000041afd7 in virtual_server_free (server=0x87ed30) at modules.c:264 #9 0x000000000041bcf2 in virtual_servers_free (when=when@entry=0) at modules.c:296 #10 0x000000000041ab3d in free_mainconfig () at mainconfig.c:1000 #11 0x0000000000409fde in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:472 (gdb)
If you need me to print more variable content, I'll leave the gdb session open...
Stefan
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
-- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Hi, hm. Did that, below. Maybe it's worth mentioning that those sockets which are being closed never were connected to a real mysql server - it's a test machine with no access to the real MySQL. I.e. on startup all these socket connection attempts ended with: rlm_sql Creating new attribute sql-imap-SQL-Group rlm_sql (sql-imap): Driver rlm_sql_mysql (module rlm_sql_mysql) loaded and linked rlm_sql (sql-imap): Attempting to connect to user@server:3306/radius_internal rlm_sql (sql-imap): starting 0 rlm_sql (sql-imap): Attempting to connect rlm_sql_mysql #0 rlm_sql_mysql: Starting connect to MySQL server for #0 rlm_sql_mysql: Couldn't connect socket to MySQL server user@server:radius_internal rlm_sql_mysql: Mysql error 'Host 'testmachine' is not allowed to connect to this MariaDB server' rlm_sql (sql-imap): Failed to connect DB handle #0 rlm_sql (sql-imap): starting 1 rlm_sql (sql-imap): starting 2 rlm_sql (sql-imap): starting 3 rlm_sql (sql-imap): starting 4 rlm_sql (sql-imap): starting 5 rlm_sql (sql-imap): starting 6 rlm_sql (sql-imap): starting 7 rlm_sql (sql-imap): Failed to connect to any SQL server. Anyway, here's the valgrind output: # valgrind --trace-children=yes --track-origins=yes --leak-check=full -v ./radiusd -X Ready to process requests. Signalled to terminate Exiting normally. --7872-- Discarding syms at 0x7b33330-0x7b35be4 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_eap_tls-2.2.1.so due to munmap() --7872-- Discarding syms at 0x813a4f0-0x813c188 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_eap_ttls-2.2.1.so due to munmap() --7872-- Discarding syms at 0x83406e0-0x8343004 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_eap_peap-2.2.1.so due to munmap() --7872-- Discarding syms at 0x8546ec0-0x8547c6c in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_eap_mschapv2-2.2.1.so due to munmap() rlm_sql (sql-aai): Closing sqlsocket 4 rlm_sql (sql-aai): Closing sqlsocket 3 rlm_sql (sql-aai): Closing sqlsocket 2 rlm_sql (sql-aai): Closing sqlsocket 1 rlm_sql (sql-aai): Closing sqlsocket 0 rlm_sql (sql-imap): Closing sqlsocket 7 rlm_sql (sql-imap): Closing sqlsocket 6 rlm_sql (sql-imap): Closing sqlsocket 5 rlm_sql (sql-imap): Closing sqlsocket 4 rlm_sql (sql-imap): Closing sqlsocket 3 rlm_sql (sql-imap): Closing sqlsocket 2 rlm_sql (sql-imap): Closing sqlsocket 1 rlm_sql (sql-imap): Closing sqlsocket 0 rlm_sql (sql-eduroam): Closing sqlsocket 1 rlm_sql (sql-eduroam): Closing sqlsocket 0 rlm_sql (sql-dialup): Closing sqlsocket 1 rlm_sql (sql-dialup): Closing sqlsocket 0 rlm_sql (sql-imap-hash): Closing sqlsocket 7 rlm_sql (sql-imap-hash): Closing sqlsocket 6 rlm_sql (sql-imap-hash): Closing sqlsocket 5 rlm_sql (sql-imap-hash): Closing sqlsocket 4 rlm_sql (sql-imap-hash): Closing sqlsocket 3 rlm_sql (sql-imap-hash): Closing sqlsocket 2 rlm_sql (sql-imap-hash): Closing sqlsocket 1 rlm_sql (sql-imap-hash): Closing sqlsocket 0 rlm_sql (sql-userjabber): Closing sqlsocket 1 rlm_sql (sql-userjabber): Closing sqlsocket 0 rlm_sql (sql-smtp): Closing sqlsocket 2 rlm_sql (sql-smtp): Closing sqlsocket 1 rlm_sql (sql-smtp): Closing sqlsocket 0 rlm_sql (sql-webmailsso): Closing sqlsocket 1 rlm_sql (sql-webmailsso): Closing sqlsocket 0 rlm_sql (sql-webmailsso-users): Closing sqlsocket 9 rlm_sql (sql-webmailsso-users): Closing sqlsocket 8 rlm_sql (sql-webmailsso-users): Closing sqlsocket 7 rlm_sql (sql-webmailsso-users): Closing sqlsocket 6 rlm_sql (sql-webmailsso-users): Closing sqlsocket 5 rlm_sql (sql-webmailsso-users): Closing sqlsocket 4 rlm_sql (sql-webmailsso-users): Closing sqlsocket 3 rlm_sql (sql-webmailsso-users): Closing sqlsocket 2 rlm_sql (sql-webmailsso-users): Closing sqlsocket 1 rlm_sql (sql-webmailsso-users): Closing sqlsocket 0 rlm_sql (sql-vpn): Closing sqlsocket 1 rlm_sql (sql-vpn): Closing sqlsocket 0 --7872-- Discarding syms at 0xa5869c0-0xa586c84 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_always-2.2.1.so due to munmap() --7872-- Discarding syms at 0x894f8d0-0x894fdac in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_chap-2.2.1.so due to munmap() --7872-- Discarding syms at 0x771b3e0-0x771e2d0 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_eap-2.2.1.so due to munmap() --7872-- Discarding syms at 0x7925130-0x7929398 in /usr/local/freeradius/2.2.1-pre3/lib64/libfreeradius-eap-2.2.1.so due to munmap() --7872-- Discarding syms at 0x8b53620-0x8b54308 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_detail-2.2.1.so due to munmap() --7872-- Discarding syms at 0xaf9dfb0-0xaf9ea44 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_files-2.2.1.so due to munmap() --7872-- Discarding syms at 0x7311340-0x7312894 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_expr-2.2.1.so due to munmap() --7872-- Discarding syms at 0xab92680-0xab952e0 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_mschap-2.2.1.so due to munmap() --7872-- Discarding syms at 0xa98e000-0xa98e808 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_linelog-2.2.1.so due to munmap() --7872-- Discarding syms at 0xad99d20-0xad9a6b0 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_realm-2.2.1.so due to munmap() --7872-- Discarding syms at 0xa78a1c0-0xa78abdc in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_sql_log-2.2.1.so due to munmap() --7872-- Discarding syms at 0x8d596f0-0x8d5d5fc in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_sql-2.2.1.so due to munmap() --7872-- Discarding syms at 0x874b2f0-0x874cc88 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_pap-2.2.1.so due to munmap() --7872-- Discarding syms at 0x7515e00-0x75167f8 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_exec-2.2.1.so due to munmap() --7872-- Discarding syms at 0x8f62de0-0x8f637d0 in /usr/local/freeradius/2.2.1-pre3/lib64/rlm_sql_mysql-2.2.1.so due to munmap() --7872-- Discarding syms at 0x9190db0-0x91d8d3c in /usr/lib64/libmysqlclient.so.18.0.0 due to munmap() --7872-- Discarding syms at 0x96706a0-0x96d8f08 in /lib64/libm-2.17.so due to munmap() ==7872== Invalid read of size 8 ==7872== at 0x41DEB8: modcallable_free (modcall.c:2242) ==7872== by 0x41DEC5: modcallable_free (modcall.c:2243) ==7872== by 0x41DEC5: modcallable_free (modcall.c:2243) ==7872== by 0x41DEC5: modcallable_free (modcall.c:2243) ==7872== by 0x41B00C: indexed_modcallable_free (modules.c:308) ==7872== by 0x4E45DFC: FreeWalker (rbtree.c:63) ==7872== by 0x4E45DED: FreeWalker (rbtree.c:61) ==7872== by 0x4E4618C: rbtree_free (rbtree.c:74) ==7872== by 0x41AFD6: virtual_server_free (modules.c:264) ==7872== by 0x41BCF1: virtual_servers_free (modules.c:296) ==7872== by 0x41AB3C: free_mainconfig (mainconfig.c:1000) ==7872== by 0x409FDD: main (radiusd.c:472) ==7872== Address 0x2527285345554c49 is not stack'd, malloc'd or (recently) free'd ==7872== ==7872== ==7872== Process terminating with default action of signal 11 (SIGSEGV) ==7872== General Protection Fault ==7872== at 0x41DEB8: modcallable_free (modcall.c:2242) ==7872== by 0x41DEC5: modcallable_free (modcall.c:2243) ==7872== by 0x41DEC5: modcallable_free (modcall.c:2243) ==7872== by 0x41DEC5: modcallable_free (modcall.c:2243) ==7872== by 0x41B00C: indexed_modcallable_free (modules.c:308) ==7872== by 0x4E45DFC: FreeWalker (rbtree.c:63) ==7872== by 0x4E45DED: FreeWalker (rbtree.c:61) ==7872== by 0x4E4618C: rbtree_free (rbtree.c:74) ==7872== by 0x41AFD6: virtual_server_free (modules.c:264) ==7872== by 0x41BCF1: virtual_servers_free (modules.c:296) ==7872== by 0x41AB3C: free_mainconfig (mainconfig.c:1000) ==7872== by 0x409FDD: main (radiusd.c:472) --7872-- Discarding syms at 0x6cf13b0-0x6cf5c38 in /lib64/libnss_compat-2.17.so due to munmap() --7872-- Discarding syms at 0x6efa200-0x6f00314 in /lib64/libnss_nis-2.17.so due to munmap() --7872-- Discarding syms at 0x7105230-0x710c13c in /lib64/libnss_files-2.17.so due to munmap() --7872-- Discarding syms at 0xa381100-0xa383ee4 in /lib64/libnss_dns-2.17.so due to munmap() ==7872== ==7872== HEAP SUMMARY: ==7872== in use at exit: 1,642,660 bytes in 33,105 blocks ==7872== total heap usage: 42,300 allocs, 9,195 frees, 3,171,199 bytes allocated ==7872== ==7872== Searching for pointers to 33,105 not-freed blocks ==7872== Checked 2,214,536 bytes ==7872== ==7872== 24 bytes in 1 blocks are definitely lost in loss record 547 of 904 ==7872== at 0x4C2C27B: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==7872== by 0x91C52FF: ??? ==7872== by 0x91C16D9: ??? ==7872== by 0x919319C: ??? ==7872== by 0x919953E: ??? ==7872== by 0x8F630B5: ??? ==7872== by 0x8D5C76D: ??? ==7872== by 0x8D5C946: ??? ==7872== by 0x8D5A7D1: ??? ==7872== by 0x41BF88: find_module_instance (modules.c:620) ==7872== by 0x41E4F3: do_compile_modsingle (modcall.c:1925) ==7872== by 0x41E178: do_compile_modgroup (modcall.c:2146) ==7872== ==7872== 152 bytes in 1 blocks are definitely lost in loss record 703 of 904 ==7872== at 0x4C2C27B: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==7872== by 0x91C52FF: ??? ==7872== by 0x91C082D: ??? ==7872== by 0x91A3433: ??? ==7872== by 0x91931A3: ??? ==7872== by 0x919953E: ??? ==7872== by 0x8F630B5: ??? ==7872== by 0x8D5C76D: ??? ==7872== by 0x8D5C946: ??? ==7872== by 0x8D5A7D1: ??? ==7872== by 0x41BF88: find_module_instance (modules.c:620) ==7872== by 0x41E4F3: do_compile_modsingle (modcall.c:1925) ==7872== ==7872== LEAK SUMMARY: ==7872== definitely lost: 176 bytes in 2 blocks ==7872== indirectly lost: 0 bytes in 0 blocks ==7872== possibly lost: 0 bytes in 0 blocks ==7872== still reachable: 1,642,484 bytes in 33,103 blocks ==7872== suppressed: 0 bytes in 0 blocks ==7872== Reachable blocks (those to which a pointer was found) are not shown. ==7872== To see them, rerun with: --leak-check=full --show-reachable=yes ==7872== ==7872== ERROR SUMMARY: 23 errors from 4 contexts (suppressed: 2 from 2) ==7872== ==7872== 1 errors in context 1 of 4: ==7872== Invalid read of size 8 ==7872== at 0x41DEB8: modcallable_free (modcall.c:2242) ==7872== by 0x41DEC5: modcallable_free (modcall.c:2243) ==7872== by 0x41DEC5: modcallable_free (modcall.c:2243) ==7872== by 0x41DEC5: modcallable_free (modcall.c:2243) ==7872== by 0x41B00C: indexed_modcallable_free (modules.c:308) ==7872== by 0x4E45DFC: FreeWalker (rbtree.c:63) ==7872== by 0x4E45DED: FreeWalker (rbtree.c:61) ==7872== by 0x4E4618C: rbtree_free (rbtree.c:74) ==7872== by 0x41AFD6: virtual_server_free (modules.c:264) ==7872== by 0x41BCF1: virtual_servers_free (modules.c:296) ==7872== by 0x41AB3C: free_mainconfig (mainconfig.c:1000) ==7872== by 0x409FDD: main (radiusd.c:472) ==7872== Address 0x2527285345554c49 is not stack'd, malloc'd or (recently) free'd ==7872== ==7872== ==7872== 20 errors in context 2 of 4: ==7872== Syscall param �� points to uninitialised byte(s) ==7872== at 0x6416DEB: sendmmsg (in /lib64/libc-2.17.so) ==7872== by 0x527F2CE: __libc_res_nsend (in /lib64/libresolv-2.17.so) ==7872== by 0x527CB8B: __libc_res_nquery (in /lib64/libresolv-2.17.so) ==7872== by 0x527D147: __libc_res_nquerydomain (in /lib64/libresolv-2.17.so) ==7872== by 0x527D733: __libc_res_nsearch (in /lib64/libresolv-2.17.so) ==7872== by 0xA382A55: ??? ==7872== by 0x63FF499: gaih_inet (in /lib64/libc-2.17.so) ==7872== by 0x6402770: getaddrinfo (in /lib64/libc-2.17.so) ==7872== by 0x919AF78: ??? ==7872== by 0x8F6314F: ??? ==7872== by 0x8D5C76D: ??? ==7872== by 0x8D5C946: ??? ==7872== Address 0x7feffd210 is on thread 1's stack ==7872== Uninitialised value was created by a stack allocation ==7872== at 0x527E6D0: __libc_res_nsend (in /lib64/libresolv-2.17.so) ==7872== --7872-- --7872-- used_suppression: 2 dl-hack3-cond-1 ==7872== ==7872== ERROR SUMMARY: 23 errors from 4 contexts (suppressed: 2 from 2) Doesn't look very enlightening to me. Stefan On 10.04.2013 15:20, Alan DeKok wrote:
Stefan Winter wrote:
Hi,
any clue?
Not really. It looks like the data was free'd twice.
Maybe valgrind has more useful information?
Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
-- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Stefan Winter wrote: ...
==7872== Invalid read of size 8 ==7872== at 0x41DEB8: modcallable_free (modcall.c:2242)
Ouch.
==7872== Address 0x2527285345554c49 is not stack'd, malloc'd or (recently) free'd
Very much "ouch". That's ASCII for %'(SEULI? With endian issues, the characters will swap around. Maybe '%S ... ? Looks like an overflow bug. I'm not really sure what to think about this. The memory is getting smashed somewhere, but valgrind isn't finding it. Alan DeKok.
Hi, well, my primary interest is getting a 2.2.1 which terminates cleanly. If this error only occurs on exit and has no other implications, then I'd be just as fine with reverting to the more unelegant "don't call free_mainconfig()". Greetings, Stefan Winter On 11.04.2013 16:59, Alan DeKok wrote:
Stefan Winter wrote: ...
==7872== Invalid read of size 8 ==7872== at 0x41DEB8: modcallable_free (modcall.c:2242)
Ouch.
==7872== Address 0x2527285345554c49 is not stack'd, malloc'd or (recently) free'd
Very much "ouch". That's ASCII for %'(SEULI?
With endian issues, the characters will swap around. Maybe '%S ... ?
Looks like an overflow bug.
I'm not really sure what to think about this. The memory is getting smashed somewhere, but valgrind isn't finding it.
Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
-- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Stefan Winter wrote:
well, my primary interest is getting a 2.2.1 which terminates cleanly.
Me, too.
If this error only occurs on exit and has no other implications, then I'd be just as fine with reverting to the more unelegant "don't call free_mainconfig()".
Well.. I'd like to know why it's crashing. That really needs to be fixed. Alan DeKok.
Hi,
Well.. I'd like to know why it's crashing. That really needs to be fixed.
Ok, I've invested some more time into this: the config I run is rather complex, many vservers, many clients - so I deleted all parts one after another to see when the crashes occur and when not. I got a useful result, I believe: there is one line in one virtual server which leads to the segfault - comment it, stuff works, activate it, it breaks. I now have only two localost clients (one v4, one v6), one virtual server, and have taken out most modules and unlang to isolate the problem as good as possible. The result is the attached virtual server definition; the line which produces the segfault is the "if" inside post-auth. Note that sql-webmailsso is an existing module, and it's instantiated just fine, and used with its normal SQL commands in authorize (except that the SQL server doesn't allow connections from this test server; so the handles are not up after starting). The custom INSERT in post-auth seems to be the "guilty" part of my config, even if it's never executed; the segfaults occur when terminating the server right after it started. HTH, Stefan Winter -- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Hi,
The result is the attached virtual server definition; the line which produces the segfault is the "if" inside post-auth. Note that sql-webmailsso is an existing module, and it's instantiated just fine, and used with its normal SQL commands in authorize (except that the SQL server doesn't allow connections from this test server; so the handles are not up after starting). The custom INSERT in post-auth seems to be the "guilty" part of my config, even if it's never executed; the segfaults occur when terminating the server right after it started.
Was this info of any use? Greetings, Stefan -- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Hi, I know 3.0.0-beta1 is the cool new hot topic to work with, but still, I am dealing with a 2.x version which needs to work with SSHA1 and systemd. I've just tried a fresh github 2.x.x branch to see where things are regarding 2.2.1 and the stability I need. :-) I can confirm that the SSHA1 double-normalize bug has gone away for me; I keep authenticating some 10.000 users with SSHA1 now, so far without any issues. When I SIGTERM the server - as is required to work with systemd - I still see that while freeing mainconfig, there is a SEGFAULT. It looks like it's still at the same spot as reported earlier: if one has an sql module instance and a custom SQL query for that instance in unlang, then the server tries to "do something" with the custom query as it walks through the vservers; possibly trying to tear down the corresponding sql instance twice or so(?). See my original message below - and if some more detail is needed, I can work on debugging things in the coming days as it seems to be a calm week :-) Stefan
Well.. I'd like to know why it's crashing. That really needs to be fixed.
Ok, I've invested some more time into this: the config I run is rather complex, many vservers, many clients - so I deleted all parts one after another to see when the crashes occur and when not. I got a useful result, I believe:
there is one line in one virtual server which leads to the segfault - comment it, stuff works, activate it, it breaks.
I now have only two localost clients (one v4, one v6), one virtual server, and have taken out most modules and unlang to isolate the problem as good as possible.
The result is the attached virtual server definition; the line which produces the segfault is the "if" inside post-auth. Note that sql-webmailsso is an existing module, and it's instantiated just fine, and used with its normal SQL commands in authorize (except that the SQL server doesn't allow connections from this test server; so the handles are not up after starting). The custom INSERT in post-auth seems to be the "guilty" part of my config, even if it's never executed; the segfaults occur when terminating the server right after it started.
-- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Stefan Winter wrote:
I know 3.0.0-beta1 is the cool new hot topic to work with, but still, I am dealing with a 2.x version which needs to work with SSHA1 and systemd.
Yes...
I can confirm that the SSHA1 double-normalize bug has gone away for me; I keep authenticating some 10.000 users with SSHA1 now, so far without any issues.
That's good.
When I SIGTERM the server - as is required to work with systemd - I still see that while freeing mainconfig, there is a SEGFAULT. It looks like it's still at the same spot as reported earlier: if one has an sql module instance and a custom SQL query for that instance in unlang, then the server tries to "do something" with the custom query as it walks through the vservers; possibly trying to tear down the corresponding sql instance twice or so(?).
I'm not really sure why that's happening. If fixed it in 3.0, but the code is fairly different, and using talloc fixed a lot of problems like this.
See my original message below - and if some more detail is needed, I can work on debugging things in the coming days as it seems to be a calm week :-)
If you have a minimal config which reproduces it, I could take a look. The main thing is to get an interactive gdb session going. Alan DeKok.
Hi,
I'm not really sure why that's happening. If fixed it in 3.0, but the code is fairly different, and using talloc fixed a lot of problems like this.
See my original message below - and if some more detail is needed, I can work on debugging things in the coming days as it seems to be a calm week :-)
If you have a minimal config which reproduces it, I could take a look. The main thing is to get an interactive gdb session going.
I have attached the minimalistic config. It *only* calls this custom SQL statement. All other sections of this vserver are empty, and it is the only vserver in the config. I have also copy&pasted a full "step" execution from the moment virtual_servers_free is called. This should allow to see the sequence of events that made the SEGV happen. If I should print some variable contents post-mortem, please let me know. Greetings, Stefan
Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
Breakpoint 1, virtual_servers_free (when=when@entry=0) at modules.c:271 271 { (gdb) s 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 293 if ((when == 0) || (gdb) 282 next = server->next; (gdb) 293 if ((when == 0) || (gdb) 295 *last = server->next; (gdb) 296 virtual_server_free(server); (gdb) virtual_server_free (server=0x7ec510) at modules.c:262 262 if (!server) return; (gdb) 261 { (gdb) 262 if (!server) return; (gdb) 264 if (server->components) rbtree_free(server->components); (gdb) rbtree_free (tree=0x7ec4e0) at rbtree.c:69 69 if (!tree) return; (gdb) 68 { (gdb) 69 if (!tree) return; (gdb) 74 if (tree->Root != NIL) FreeWalker(tree, tree->Root); (gdb) 79 tree->Root = NULL; (gdb) 80 free(tree); (gdb) 81 } (gdb) 80 free(tree); (gdb) 0x00007ffff65a5620 in free () from /lib64/libc.so.6 (gdb) Single stepping until exit from function free, which has no line number information. 0x00007ffff65a2280 in _int_free () from /lib64/libc.so.6 (gdb) Single stepping until exit from function _int_free, which has no line number information. virtual_server_free (server=0x7ec510) at modules.c:265 265 server->components = NULL; (gdb) 267 free(server); (gdb) 268 } (gdb) 267 free(server); (gdb) 0x00007ffff65a5620 in free () from /lib64/libc.so.6 (gdb) Single stepping until exit from function free, which has no line number information. 0x00007ffff65a2280 in _int_free () from /lib64/libc.so.6 (gdb) Single stepping until exit from function _int_free, which has no line number information. virtual_servers_free (when=when@entry=0) at modules.c:279 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 275 for (i = 0; i < VIRTUAL_SERVER_HASH_SIZE; i++) { (gdb) 279 for (server = virtual_servers[i]; (gdb) 278 last = &virtual_servers[i]; (gdb) 279 for (server = virtual_servers[i]; (gdb) 293 if ((when == 0) || (gdb) 282 next = server->next; (gdb) 293 if ((when == 0) || (gdb) 295 *last = server->next; (gdb) 296 virtual_server_free(server); (gdb) virtual_server_free (server=0x7f1d10) at modules.c:262 262 if (!server) return; (gdb) 261 { (gdb) 262 if (!server) return; (gdb) 264 if (server->components) rbtree_free(server->components); (gdb) rbtree_free (tree=0x7ec5f0) at rbtree.c:69 69 if (!tree) return; (gdb) 68 { (gdb) 69 if (!tree) return; (gdb) 74 if (tree->Root != NIL) FreeWalker(tree, tree->Root); (gdb) FreeWalker (tree=0x7ec5f0, X=0x7ec620) at rbtree.c:59 59 { (gdb) 60 if (X->Left != NIL) FreeWalker(tree, X->Left); (gdb) 59 { (gdb) 60 if (X->Left != NIL) FreeWalker(tree, X->Left); (gdb) 61 if (X->Right != NIL) FreeWalker(tree, X->Right); (gdb) 63 if (tree->freeNode) tree->freeNode(X->Data); (gdb) indexed_modcallable_free (data=0x7f0cc0) at modules.c:305 305 { (gdb) 308 modcallable_free(&c->modulelist); (gdb) modcallable_free (pc=pc@entry=0x7f0cc8) at modcall.c:2233 2233 { (gdb) 2235 c = *pc; (gdb) 2236 if (c->type != MOD_SINGLE) { (gdb) 2239 for(loop = g->children; (gdb) 2242 next = loop->next; (gdb) 2243 modcallable_free(&loop); (gdb) modcallable_free (pc=pc@entry=0x7fffffffe478) at modcall.c:2233 2233 { (gdb) 2235 c = *pc; (gdb) 2236 if (c->type != MOD_SINGLE) { (gdb) 2239 for(loop = g->children; (gdb) 2242 next = loop->next; (gdb) 2243 modcallable_free(&loop); (gdb) modcallable_free (pc=pc@entry=0x7fffffffe448) at modcall.c:2233 2233 { (gdb) 2235 c = *pc; (gdb) 2236 if (c->type != MOD_SINGLE) { (gdb) 2239 for(loop = g->children; (gdb) 2242 next = loop->next; (gdb) 2243 modcallable_free(&loop); (gdb) modcallable_free (pc=pc@entry=0x7fffffffe418) at modcall.c:2233 2233 { (gdb) 2235 c = *pc; (gdb) 2236 if (c->type != MOD_SINGLE) { (gdb) 2239 for(loop = g->children; (gdb) 2242 next = loop->next; (gdb) Program received signal SIGSEGV, Segmentation fault. modcallable_free (pc=pc@entry=0x7fffffffe418) at modcall.c:2242 2242 next = loop->next; (gdb) Program terminated with signal SIGSEGV, Segmentation fault. The program no longer exists. (gdb) -- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Stefan Winter wrote:
I have also copy&pasted a full "step" execution from the moment virtual_servers_free is called. This should allow to see the sequence of events that made the SEGV happen. ... 2242 next = loop->next; (gdb)
Program received signal SIGSEGV, Segmentation fault. modcallable_free (pc=pc@entry=0x7fffffffe418) at modcall.c:2242
Well, that's it. I've pushed a fix. Sorry for the delay. Alan DeKok.
Hi,
2242 next = loop->next; (gdb)
Program received signal SIGSEGV, Segmentation fault. modcallable_free (pc=pc@entry=0x7fffffffe418) at modcall.c:2242
Well, that's it. I've pushed a fix.
Sorry for the delay.
Splendid! Now once the 2.2.1 virtual proxy -> post-auth thing is also fixed, I'm finally happy with a 2.2.1 release :-) Greetings, Stefan Winter -- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
On 11 Jul 2013, at 12:03, Stefan Winter <stefan.winter@restena.lu> wrote:
Hi,
2242 next = loop->next; (gdb)
Program received signal SIGSEGV, Segmentation fault. modcallable_free (pc=pc@entry=0x7fffffffe418) at modcall.c:2242
Well, that's it. I've pushed a fix.
Sorry for the delay.
Splendid!
Now once the 2.2.1 virtual proxy -> post-auth thing is also fixed, I'm finally happy with a 2.2.1 release :-)
Ok just pushed a fix for that. Arran Cudbard-Bell <a.cudbardb@freeradius.org> FreeRADIUS Development Team
Hi, cool, will try out current GIT on Monday (Friday is a no-go for "fiddling" for us). Greetings, Stefan On 11.07.2013 15:23, Arran Cudbard-Bell wrote:
On 11 Jul 2013, at 12:03, Stefan Winter <stefan.winter@restena.lu> wrote:
Hi,
2242 next = loop->next; (gdb)
Program received signal SIGSEGV, Segmentation fault. modcallable_free (pc=pc@entry=0x7fffffffe418) at modcall.c:2242
Well, that's it. I've pushed a fix.
Sorry for the delay.
Splendid!
Now once the 2.2.1 virtual proxy -> post-auth thing is also fixed, I'm finally happy with a 2.2.1 release :-)
Ok just pushed a fix for that.
Arran Cudbard-Bell <a.cudbardb@freeradius.org> FreeRADIUS Development Team
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
-- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Hi, still not exiting cleanly now - it gets past the SQL instance sql-webmailsso-users, so the change that got into 2.x.x has a positive effect - but now it crashes at a later stage of de-init. Here's a gdb bt: Signalled to terminate Exiting normally. rlm_sql (sql-aai-hash): Closing sqlsocket 4 rlm_sql (sql-aai-hash): Closing sqlsocket 3 rlm_sql (sql-aai-hash): Closing sqlsocket 2 rlm_sql (sql-aai-hash): Closing sqlsocket 1 rlm_sql (sql-aai-hash): Closing sqlsocket 0 rlm_sql (sql-eduroam-hash): Closing sqlsocket 1 rlm_sql (sql-eduroam-hash): Closing sqlsocket 0 rlm_sql (sql-imap-hash): Closing sqlsocket 7 rlm_sql (sql-imap-hash): Closing sqlsocket 6 rlm_sql (sql-imap-hash): Closing sqlsocket 5 rlm_sql (sql-imap-hash): Closing sqlsocket 4 rlm_sql (sql-imap-hash): Closing sqlsocket 3 rlm_sql (sql-imap-hash): Closing sqlsocket 2 rlm_sql (sql-imap-hash): Closing sqlsocket 1 rlm_sql (sql-imap-hash): Closing sqlsocket 0 rlm_sql (sql-userjabber-hash): Closing sqlsocket 1 rlm_sql (sql-userjabber-hash): Closing sqlsocket 0 rlm_sql (sql-smtp-hash): Closing sqlsocket 2 rlm_sql (sql-smtp-hash): Closing sqlsocket 1 rlm_sql (sql-smtp-hash): Closing sqlsocket 0 rlm_sql (sql-webmailsso): Closing sqlsocket 1 rlm_sql (sql-webmailsso): Closing sqlsocket 0 rlm_sql (sql-webmailsso-users): Closing sqlsocket 9 rlm_sql (sql-webmailsso-users): Closing sqlsocket 8 rlm_sql (sql-webmailsso-users): Closing sqlsocket 7 rlm_sql (sql-webmailsso-users): Closing sqlsocket 6 rlm_sql (sql-webmailsso-users): Closing sqlsocket 5 rlm_sql (sql-webmailsso-users): Closing sqlsocket 4 rlm_sql (sql-webmailsso-users): Closing sqlsocket 3 rlm_sql (sql-webmailsso-users): Closing sqlsocket 2 rlm_sql (sql-webmailsso-users): Closing sqlsocket 1 rlm_sql (sql-webmailsso-users): Closing sqlsocket 0 rlm_sql (sql-vpn-hash): Closing sqlsocket 1 rlm_sql (sql-vpn-hash): Closing sqlsocket 0 rlm_sql (sql-dialup-hash): Closing sqlsocket 1 rlm_sql (sql-dialup-hash): Closing sqlsocket 0 Program received signal SIGSEGV, Segmentation fault. modcallable_free (pc=pc@entry=0x7fffffffe3e8) at modcall.c:2242 2242 next = loop->next; (gdb) bt #0 modcallable_free (pc=pc@entry=0x7fffffffe3e8) at modcall.c:2242 #1 0x000000000041df56 in modcallable_free (pc=pc@entry=0x7fffffffe418) at modcall.c:2243 #2 0x000000000041df56 in modcallable_free (pc=pc@entry=0x7fffffffe448) at modcall.c:2243 #3 0x000000000041df56 in modcallable_free (pc=pc@entry=0x916fd8) at modcall.c:2243 #4 0x000000000041b0ad in indexed_modcallable_free (data=0x916fd0) at modules.c:308 #5 0x00007ffff7bc3eed in FreeWalker (tree=0x8fa260, X=0x916ff0) at rbtree.c:63 #6 0x00007ffff7bc3ede in FreeWalker (tree=0x8fa260, X=0x8fabd0) at rbtree.c:61 #7 0x00007ffff7bc41ed in rbtree_free (tree=0x8fa260) at rbtree.c:74 #8 0x000000000041b077 in virtual_server_free (server=0x8fa290) at modules.c:264 #9 0x000000000041bd92 in virtual_servers_free (when=when@entry=0) at modules.c:296 #10 0x000000000041abdd in free_mainconfig () at mainconfig.c:1002 #11 0x000000000040a01e in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:472 There's not much special about sql-dialup-hash; in particular no custom SQL query. It might be the last SQL instance that is de-init though. Maybe the pointer runs over the end? Stefan On 11.07.2013 16:17, Stefan Winter wrote:
Hi,
cool, will try out current GIT on Monday (Friday is a no-go for "fiddling" for us).
Greetings,
Stefan
On 11.07.2013 15:23, Arran Cudbard-Bell wrote:
On 11 Jul 2013, at 12:03, Stefan Winter <stefan.winter@restena.lu> wrote:
Hi,
2242 next = loop->next; (gdb)
Program received signal SIGSEGV, Segmentation fault. modcallable_free (pc=pc@entry=0x7fffffffe418) at modcall.c:2242
Well, that's it. I've pushed a fix.
Sorry for the delay.
Splendid!
Now once the 2.2.1 virtual proxy -> post-auth thing is also fixed, I'm finally happy with a 2.2.1 release :-)
Ok just pushed a fix for that.
Arran Cudbard-Bell <a.cudbardb@freeradius.org> FreeRADIUS Development Team
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
-- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
Hi again, calling post-auth on virtual proxy servers now works. I've got something else, but will start a new thread. Stefan On 11.07.2013 16:17, Stefan Winter wrote:
Hi,
cool, will try out current GIT on Monday (Friday is a no-go for "fiddling" for us).
Greetings,
Stefan
On 11.07.2013 15:23, Arran Cudbard-Bell wrote:
On 11 Jul 2013, at 12:03, Stefan Winter <stefan.winter@restena.lu> wrote:
Hi,
2242 next = loop->next; (gdb)
Program received signal SIGSEGV, Segmentation fault. modcallable_free (pc=pc@entry=0x7fffffffe418) at modcall.c:2242
Well, that's it. I've pushed a fix.
Sorry for the delay.
Splendid!
Now once the 2.2.1 virtual proxy -> post-auth thing is also fixed, I'm finally happy with a 2.2.1 release :-)
Ok just pushed a fix for that.
Arran Cudbard-Bell <a.cudbardb@freeradius.org> FreeRADIUS Development Team
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/devel.html
-- Stefan WINTER Ingenieur de Recherche Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche 6, rue Richard Coudenhove-Kalergi L-1359 Luxembourg Tel: +352 424409 1 Fax: +352 422473
On 25/03/13 14:21, Stefan Winter wrote:
Hi,
I'm pretty mucha dummy in gdb. I guess i did it wrong:
Program received signal SIGSEGV, Segmentation fault. 0x00007ffff65a5634 in free () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff65a5634 in free () from /lib64/libc.so.6 #1 0x000000000040e2c0 in cf_section_parse_free (cs=0x6797d0, base=0x87f730) at conffile.c:344 #2 0x000000000041ad11 in module_instance_free (data=0x87f5f0) at modules.c:382 #3 0x00007ffff7bc3dfd in FreeWalker (tree=0x7f8130, X=0x87dcb0) at rbtree.c:63 #4 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x83f310) at rbtree.c:61 #5 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x82ff50) at rbtree.c:60 #6 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x884660) at rbtree.c:60 #7 0x00007ffff7bc3ddd in FreeWalker (tree=0x7f8130, X=0x833870) at rbtree.c:60 #8 0x00007ffff7bc3dee in FreeWalker (tree=0x7f8130, X=0x822e20) at rbtree.c:61 #9 0x00007ffff7bc418d in rbtree_free (tree=0x7f8130) at rbtree.c:74 #10 0x000000000041bc40 in detach_modules () at modules.c:441 #11 0x0000000000409fd4 in main (argc=<optimized out>, argv=<optimized out>) at radiusd.c:465
You're inside "free" in libc here. You need to go: up ...into cf_section_parse_free.
participants (5)
-
Alan DeKok -
Arran Cudbard-Bell -
Olivier Beytrison -
Phil Mayers -
Stefan Winter