Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 09 May 2019 07:08:24 -0500
From:      Larry Rosenman <ler@FreeBSD.org>
To:        Mark Johnston <markj@freebsd.org>
Cc:        freebsd-current@freebsd.org, Mark Johnston <markjdb@gmail.com>
Subject:   Re: Crash loading dtraceall
Message-ID:  <7e7d0f269e3393b252d53392c0c0c260@FreeBSD.org>
In-Reply-To: <20190509043117.GF11774@raichu>
References:  <20190508205245.ulbo6fusk3b4py7t@ler-imac.local> <20190508222932.GB11774@raichu> <845dd186ef038d98c1a95a7454e432d2@FreeBSD.org> <20190508225553.GC11774@raichu> <460d563e2fe48bfd90b489015b4c0f9d@FreeBSD.org> <20190509033211.GE11774@raichu> <8418ec8f5e303dce4225a53be88fc49d@FreeBSD.org> <20190509043117.GF11774@raichu>

next in thread | previous in thread | raw e-mail | index | archive | help
On 05/08/2019 11:31 pm, Mark Johnston wrote:
> On Wed, May 08, 2019 at 11:01:58PM -0500, Larry Rosenman wrote:
>> On 05/08/2019 10:32 pm, Mark Johnston wrote:
>> > On Wed, May 08, 2019 at 05:57:18PM -0500, Larry Rosenman wrote:
>> >> On 05/08/2019 5:55 pm, Mark Johnston wrote:
>> >> > On Wed, May 08, 2019 at 05:47:08PM -0500, Larry Rosenman wrote:
>> >> >> On 05/08/2019 5:29 pm, Mark Johnston wrote:
>> >> >> > On Wed, May 08, 2019 at 03:52:45PM -0500, Larry Rosenman wrote:
>> >> >> >> Greetings,
>> >> >> >>
>> >> >> >>     Somewhere between r346483 and r347241 loading dtraceall causes a
>> >> >> >>     crash.  I have the cores and kernels.
>> >> >> >>
>> >> >> >>     It's hard for me to bisect more than this, as the box is remote.
>> >> >> >>
>> >> >> >>     What more do you need?  (this dump is fropm r347355).
>> >> >> >
>> > The problem is with the kernel linker's handling of ifuncs.  When
>> > enumerating symbols, it replaces ifunc symbol values with the return
>> > value of the resolver but preserves the original symbol size, which is
>> > that of the resolver.  I believe this patch will address the panic
>> > you're seeing:
>> >
>> It does *NOT*.
> 
> I see, my theory above is not the real problem here.  The resolver for
> x86_rng_store() may return NULL, which we do not expect.  Can you show
> the CPU info and features lines from the dmesg to confirm?
> 
> Also see if this patch helps:
> 
> diff --git a/sys/dev/random/ivy.c b/sys/dev/random/ivy.c
> index 57f3d0a1d80b..71065d788cf9 100644
> --- a/sys/dev/random/ivy.c
> +++ b/sys/dev/random/ivy.c
> @@ -97,6 +97,13 @@ x86_rdseed_store(u_long *buf)
>  	return (retry);
>  }
> 
> +static int
> +x86_dead_store(u_long *buf __unused)
> +{
> +
> +	panic("missing hardware PRNG support");
> +}
> +
>  DEFINE_IFUNC(static, int, x86_rng_store, (u_long *buf), static)
>  {
>  	has_rdrand = (cpu_feature2 & CPUID2_RDRAND);
> @@ -107,7 +114,7 @@ DEFINE_IFUNC(static, int, x86_rng_store, (u_long
> *buf), static)
>  	else if (has_rdrand)
>  		return (x86_rdrand_store);
>  	else
> -		return (NULL);
> +		return (x86_dead_store);
>  }
> 
>  /* It is required that buf length is a multiple of sizeof(u_long). */

The above patch (on top of the previous one) fixes the crash.

flags/features as requested:
CPU: Intel(R) Xeon(R) CPU           E5440  @ 2.83GHz (2826.30-MHz 
K8-class CPU)
   Origin="GenuineIntel"  Id=0x1067a  Family=0x6  Model=0x17  Stepping=10
   
Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
   
Features2=0xc0ce3bd<SSE3,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,DCA,SSE4.1,XSAVE,OSXSAVE>
   AMD Features=0x20100800<SYSCALL,NX,LM>
   AMD Features2=0x1<LAHF>
   VT-x: HLT,PAUSE
   TSC: P-state invariant, performance statistics


-- 
Larry Rosenman                     http://people.freebsd.org/~ler
Phone: +1 214-642-9640                 E-Mail: ler@FreeBSD.org
US Mail: 5708 Sabbia Dr, Round Rock, TX 78665-2106



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7e7d0f269e3393b252d53392c0c0c260>