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