I changed to a debian test machine with stretch running version 3.0.18, compiled with clang (more on that in a minute). The crashes look the same to me. Am 07.03.19 um 15:48 schrieb Adam Majer:
On 3/6/19 11:17 PM, Alan DeKok wrote:
One could also try using valgrind and with origin tracking, it should also indicate where the pointer was freed.
valgrind --track-origins=yes /usr/sbin/radiusd -f -d /etc/raddb
That gives a lot of errors without any crash, starting with: ==8960== Memcheck, a memory error detector ==8960== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==8960== Using Valgrind-3.12.0.SVN and LibVEX; rerun with -h for copyright info ==8960== Command: /usr/sbin/freeradius -f -d /etc/freeradius/3.0/ ==8960== ==8961== ==8961== HEAP SUMMARY: ==8961== in use at exit: 314 bytes in 3 blocks ==8961== total heap usage: 5 allocs, 2 frees, 466 bytes allocated ==8961== ==8961== LEAK SUMMARY: ==8961== definitely lost: 0 bytes in 0 blocks ==8961== indirectly lost: 0 bytes in 0 blocks ==8961== possibly lost: 314 bytes in 3 blocks ==8961== still reachable: 0 bytes in 0 blocks ==8961== suppressed: 0 bytes in 0 blocks ==8961== Rerun with --leak-check=full to see details of leaked memory ==8961== ==8961== For counts of detected and suppressed errors, rerun with: -v ==8961== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) ==8960== Thread 4: ==8960== Conditional jump or move depends on uninitialised value(s) ==8960== at 0x403908D: ??? ==8960== by 0xD3E80EF: ??? ==8960== Uninitialised value was created by a heap allocation ==8960== at 0x4C2BBAF: malloc (vg_replace_malloc.c:299) ==8960== by 0x5BBBF9D: talloc_pool (in /usr/lib/x86_64-linux-gnu/libtalloc.so.2.1.8) ==8960== by 0x41B630: auth_socket_recv (listen.c:1553) ==8960== by 0x436DBD: event_socket_handler (process.c:4850) ==8960== by 0x5092647: fr_event_loop (in /usr/lib/freeradius/libfreeradius-radius.so) ==8960== by 0x427643: main (radiusd.c:596) ==8960== ==8960== Conditional jump or move depends on uninitialised value(s) ==8960== at 0x4048D0A: ??? ==8960== by 0xD3E80EF: ??? ==8960== Uninitialised value was created by a heap allocation ==8960== at 0x4C2BBAF: malloc (vg_replace_malloc.c:299) ==8960== by 0x5BBBF9D: talloc_pool (in /usr/lib/x86_64-linux-gnu/libtalloc.so.2.1.8) ==8960== by 0x41B630: auth_socket_recv (listen.c:1553) ==8960== by 0x436DBD: event_socket_handler (process.c:4850) ==8960== by 0x5092647: fr_event_loop (in /usr/lib/freeradius/libfreeradius-radius.so) ==8960== by 0x427643: main (radiusd.c:596) and ending with ==8960== Thread 4: ==8960== Conditional jump or move depends on uninitialised value(s) ==8960== at 0x40390AF: ??? ==8960== by 0x15EA0F2F: ??? ==8960== Uninitialised value was created by a heap allocation ==8960== at 0x4C2BBAF: malloc (vg_replace_malloc.c:299) ==8960== by 0x5BBBF9D: talloc_pool (in /usr/lib/x86_64-linux-gnu/libtalloc.so.2.1.8) ==8960== by 0x41B630: auth_socket_recv (listen.c:1553) ==8960== by 0x436DBD: event_socket_handler (process.c:4850) ==8960== by 0x5092647: fr_event_loop (in /usr/lib/freeradius/libfreeradius-radius.so) ==8960== by 0x427643: main (radiusd.c:596) ==8960== ==8960== Conditional jump or move depends on uninitialised value(s) ==8960== at 0x4048725: ??? ==8960== by 0x15EA0F2F: ??? ==8960== Uninitialised value was created by a heap allocation ==8960== at 0x4C2BBAF: malloc (vg_replace_malloc.c:299) ==8960== by 0x5BBBF9D: talloc_pool (in /usr/lib/x86_64-linux-gnu/libtalloc.so.2.1.8) ==8960== by 0x41B630: auth_socket_recv (listen.c:1553) ==8960== by 0x436DBD: event_socket_handler (process.c:4850) ==8960== by 0x5092647: fr_event_loop (in /usr/lib/freeradius/libfreeradius-radius.so) ==8960== by 0x427643: main (radiusd.c:596) ==8960== ==8960== Conditional jump or move depends on uninitialised value(s) ==8960== at 0x404844C: ??? ==8960== by 0x15EA0F2F: ??? ==8960== Uninitialised value was created by a heap allocation ==8960== at 0x4C2BBAF: malloc (vg_replace_malloc.c:299) ==8960== by 0x5BBBF9D: talloc_pool (in /usr/lib/x86_64-linux-gnu/libtalloc.so.2.1.8) ==8960== by 0x41B630: auth_socket_recv (listen.c:1553) ==8960== by 0x436DBD: event_socket_handler (process.c:4850) ==8960== by 0x5092647: fr_event_loop (in /usr/lib/freeradius/libfreeradius-radius.so) ==8960== by 0x427643: main (radiusd.c:596) ==8960== ==8960== ==8960== More than 1000 different errors detected. I'm not reporting any more. ==8960== Final error counts will be inaccurate. Go fix your program! ==8960== Rerun with --error-limit=no to disable this cutoff. Note ==8960== that errors may occur in your program without prior warning from ==8960== Valgrind, because errors are no longer being displayed. ==8960== freeradius still running fine at this point. Is it worth to investigate those errors? Daniel