svn commit: r345733 - user/pho/stress2/misc

Peter Holm pho at FreeBSD.org
Tue Sep 3 14:06:00 UTC 2019


Author: pho
Date: Sat Mar 30 13:59:02 2019
New Revision: 345733
URL: https://svnweb.freebsd.org/changeset/base/345733

Log:
  Added a regression test for problem fixed in r345382.
  
  Submitted by:	markj@
  Sponsored by:	Dell EMC Isilon

Added:
  user/pho/stress2/misc/mprotect.sh   (contents, props changed)

Added: user/pho/stress2/misc/mprotect.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/pho/stress2/misc/mprotect.sh	Sat Mar 30 13:59:02 2019	(r345733)
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+# "panic: pmap_demote_pde: page table page for a wired mapping
+# is missing" seen.
+# Test scenario by Mark Johnston <markj at freebsd.org>
+
+# Fixed by r345382
+
+# $FreeBSD$
+
+. ../default.cfg
+
+cd /tmp
+cat > mprotect.c <<EOF
+#include <sys/mman.h>
+
+#include <err.h>
+#include <stdlib.h>
+
+int
+main(void)
+{
+	char *addr, c;
+	size_t i, len;
+
+	len = 2 * 1024 * 1024;
+	addr = mmap(NULL, 2 * 1024 * 1024, PROT_READ,
+	    MAP_ANON | MAP_ALIGNED_SUPER, -1, 0);
+	if (addr == MAP_FAILED)
+		err(1, "mmap");
+	if (mlock(addr, len) != 0) /* hopefully this gets a superpage */
+		err(1, "mlock");
+	if (mprotect(addr, len, PROT_NONE) != 0)
+		err(1, "mprotect");
+	if (mprotect(addr, len, PROT_READ) != 0)
+		err(1, "mprotect");
+	for (i = 0; i < len; i++) /* preemptive superpage mapping */
+		c = *(volatile char *)(addr + i);
+	if (mprotect(addr, 4096, PROT_NONE) != 0) /* trigger demotion */
+		err(1, "mprotect");
+	if (munlock(addr, len) != 0)
+		err(1, "munlock");
+
+	return (0);
+}
+EOF
+mycc -o mprotect -Wall -Wextra -O2 mprotect.c || exit 1
+
+./mprotect; s=$?
+
+rm mprotect.c mprotect
+exit $s




More information about the svn-src-user mailing list