tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: freeradius startup crash



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



Home | Main Index | Thread Index | Old Index