Panic in fbt_provide_module_function() on head amd64 r347403

Larry Rosenman ler at lerctr.org
Thu May 9 22:23:06 UTC 2019


On 05/09/2019 5:19 pm, Trond Endrestøl wrote:
> Host is Windows 7 x64 SP1.
> CPU is Core i7 960.
> Hypervisor is VirtualBox 6.0.6.
> VM is using UEFI.
> Kernel config is
> https://ximalas.info/~trond/create-zfs/canmount/VBOXGUEST-amd64-head
> 
> Crash happens early during boot, right after launching the APs.
> 
> fault virtual address   = 0x0
> [...]
> KDB backtrace:
> db_trace_self_wrapper() at
> vpanic() at
> panic() at
> trap_fatal() at
> trap_pfault() at
> trap() at
> calltrap() at
> -- trap 0xc, rip = 0xffffffff8196d63a, rsp = 0xffffffff8198d730, rbp =
> 0xffffffff8198d790 ---
> fbt_provide_module_function() at 0xffffffff8196d63a =
> fbt_provide_module_function+0x7a/frame 0xffffffff8198d790
> link_elf_each_function_nameval() at 0xffffffff80822ae5 =
> link_elf_each_function_nameval+0x115/frame 0xffffffff8198d7e0
> fbt_provide_module() at 0xffffffff8196c33e =
> fbt_provide_module+0xde/frame 0xffffffff8198dc10
> fbt_linker_file_cb() at 0xffffffff8196c242 =
> fbt_linker_file_cb+0x12/frame 0xffffffff8198dc20
> linker_file_foreach() at 0xffffffff807c47b7 =
> linker_file_foreach+0x67/frame 0xffffffff8198dc60
> mi_startup() at 0xffffffff80786de6 = mi_startup+0x216/frame 
> 0xffffffff8198dcb0
> btext() at 0xffffffff8030da2c = btext+0x2c
> Uptime: 1s
> 
> Previous BE is r346969 and works flawlessly.
> No dumpdev is enabled to capture the details this early during boot.
> Suggestions are welcome.

There is a patch:
 From: markj at FreeBSD.org (on my Crash loading dtraceall thread):


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). */


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


More information about the freebsd-current mailing list