On 17.12.2018 03:44, Emmanuel Dreyfus wrote: > I experience a startup crash on freeradius 3 startup: > Program terminated with signal SIGSEGV, Segmentation fault. > #0 0x00000000 in ?? () > (gdb) bt > #0 0x00000000 in ?? () > #1 0xbb3bce15 in read (d=3, buf=0xbf7fe83f, nbytes=1) > at /usr/src/lib/libpthread/pthread_cancelstub.c:485 > #2 0xbb680076 in fr_get_debug_state () > from /usr/pkg/lib/libfreeradius-radius.so > #3 0xbb680346 in fr_store_debug_state () > from /usr/pkg/lib/libfreeradius-radius.so > #4 0x0808d357 in main () > > This happens in code that tests if freeradius is being debugger by gdb. > And indeed, running inside gdb does not crash. > > There is a very simple workaround: disable the test. Freeradius works > fine this way. Does that look reasonable? > > --- src/lib//debug.c.orig > +++ src/lib/debug.c > @@ -105,9 +105,12 @@ > > static TALLOC_CTX *talloc_null_ctx; > static TALLOC_CTX *talloc_autofree_ctx; > > -#ifdef HAVE_SYS_PTRACE_H > +/* > + * That test crashes on startup for NetBSD > + */ > +#if defined(HAVE_SYS_PTRACE_H) && !defined(__NetBSD__) > # ifdef __linux__ > # define _PTRACE(_x, _y) ptrace(_x, _y, NULL, NULL) > # else > # define _PTRACE(_x, _y) ptrace(_x, _y, NULL, 0) > > You must specify the 3rd argument as (void *)1, otherwise it will resume from position 0x0. Linux does not support the 3rd argument.
Attachment:
signature.asc
Description: OpenPGP digital signature