diff --git a/repos/base/recipes/pkg/test-rm_stress/README b/repos/base/recipes/pkg/test-rm_stress/README
new file mode 100644
index 0000000000..c7dddfaac4
--- /dev/null
+++ b/repos/base/recipes/pkg/test-rm_stress/README
@@ -0,0 +1 @@
+Scenario that stresses region-map attachments
diff --git a/repos/base/recipes/pkg/test-rm_stress/archives b/repos/base/recipes/pkg/test-rm_stress/archives
new file mode 100644
index 0000000000..4683afc274
--- /dev/null
+++ b/repos/base/recipes/pkg/test-rm_stress/archives
@@ -0,0 +1,2 @@
+_/src/init
+_/src/test-rm_stress
diff --git a/repos/base/recipes/pkg/test-rm_stress/hash b/repos/base/recipes/pkg/test-rm_stress/hash
new file mode 100644
index 0000000000..5ea347ff7a
--- /dev/null
+++ b/repos/base/recipes/pkg/test-rm_stress/hash
@@ -0,0 +1 @@
+2020-04-02 d6b3e6026d373f74858d7a1b4759aeb431e43afc
diff --git a/repos/base/recipes/pkg/test-rm_stress/runtime b/repos/base/recipes/pkg/test-rm_stress/runtime
new file mode 100644
index 0000000000..4097dbb755
--- /dev/null
+++ b/repos/base/recipes/pkg/test-rm_stress/runtime
@@ -0,0 +1,29 @@
+
+
+
+
+ child "test-rm_stress" exited with exit value 0
+ child "test-rm_stress" exited with exit value -1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/repos/base/recipes/src/test-rm_stress/content.mk b/repos/base/recipes/src/test-rm_stress/content.mk
new file mode 100644
index 0000000000..0cb35455bb
--- /dev/null
+++ b/repos/base/recipes/src/test-rm_stress/content.mk
@@ -0,0 +1,2 @@
+SRC_DIR = src/test/rm_stress
+include $(GENODE_DIR)/repos/base/recipes/src/content.inc
diff --git a/repos/base/recipes/src/test-rm_stress/hash b/repos/base/recipes/src/test-rm_stress/hash
new file mode 100644
index 0000000000..75b2a97031
--- /dev/null
+++ b/repos/base/recipes/src/test-rm_stress/hash
@@ -0,0 +1 @@
+2020-04-02 39f4647992e33fba4b5aea0d490285e4cee797b1
diff --git a/repos/base/recipes/src/test-rm_stress/used_apis b/repos/base/recipes/src/test-rm_stress/used_apis
new file mode 100644
index 0000000000..df967b96a5
--- /dev/null
+++ b/repos/base/recipes/src/test-rm_stress/used_apis
@@ -0,0 +1 @@
+base
diff --git a/repos/base/src/test/rm_stress/main.cc b/repos/base/src/test/rm_stress/main.cc
new file mode 100644
index 0000000000..7b66fac0c2
--- /dev/null
+++ b/repos/base/src/test/rm_stress/main.cc
@@ -0,0 +1,70 @@
+/*
+ * \brief Test program for stressing region-map attachments
+ * \author Christian Helmuth
+ * \date 2020-04-03
+ */
+
+/*
+ * Copyright (C) 2020 Genode Labs GmbH
+ *
+ * This file is part of the Genode OS framework, which is distributed
+ * under the terms of the GNU Affero General Public License version 3.
+ */
+
+/* Genode includes */
+#include
+#include
+#include
+
+
+using namespace Genode;
+
+struct X : Genode::Hex
+{
+ template
+ explicit X(T value) : Genode::Hex(value, OMIT_PREFIX, PAD) { }
+};
+
+
+struct Page : Attached_ram_dataspace
+{
+ unsigned char const color;
+
+ Page(Env &env, unsigned char color)
+ :
+ Attached_ram_dataspace(env.ram(), env.rm(), 0x1000),
+ color(color)
+ {
+ memset(local_addr(), color, size());
+
+ log("new page @ ", local_addr(), " with color ", X(*local_addr()));
+ }
+};
+
+
+void Component::construct(Env &env)
+{
+ log("--- region-map attachment stress test ---");
+
+ Page page[] = { { env, 0xaa }, { env, 0x55 } };
+
+ enum { ROUNDS = 10000 };
+
+ for (unsigned r = 0; r < ROUNDS; ++r) {
+ for (unsigned i = 0; i < sizeof(page)/sizeof(*page); ++i) {
+ off_t const offset = 0;
+
+ unsigned char volatile const *v =
+ env.rm().attach(page[i].cap(), page[i].size(), offset);
+
+ if (page[i].color != *v) {
+ error("value @ ", v, " ", X(*v), " != ", X(page[i].color), " in round ", r);
+ env.parent().exit(-1);
+ }
+
+ env.rm().detach(Region_map::Local_addr(v));
+ }
+ }
+
+ env.parent().exit(0);
+}
diff --git a/repos/base/src/test/rm_stress/target.mk b/repos/base/src/test/rm_stress/target.mk
new file mode 100644
index 0000000000..179e695216
--- /dev/null
+++ b/repos/base/src/test/rm_stress/target.mk
@@ -0,0 +1,3 @@
+TARGET = test-rm_stress
+SRC_CC = main.cc
+LIBS = base
diff --git a/repos/gems/run/depot_autopilot.run b/repos/gems/run/depot_autopilot.run
index 5a36ac806b..9b033a10db 100644
--- a/repos/gems/run/depot_autopilot.run
+++ b/repos/gems/run/depot_autopilot.run
@@ -707,6 +707,7 @@ set default_test_pkgs {
test-rm_fault
test-rm_fault_no_nox
test-rm_nested
+ test-rm_stress
test-rom_block
test-rom_filter
test-rust