diff --git a/.hgtags b/.hgtags
index 5c2b522..231cc0b 100644
--- a/.hgtags
+++ b/.hgtags
@@ -438,3 +438,4 @@
 9b3f5e4f33725f7c1d9b8e523133fe8383a54d9f jdk9-b33
 821164b0131a47ca065697c7d27d8f215e608c8d jdk9-b34
 438cb613151c4bd290bb732697517cba1cafcb04 jdk9-b35
+464ab653fbb17eb518d8ef60f8df301de7ef00d0 jdk9-b36
diff --git a/test/runtime/ErrorHandling/ProblematicFrameTest.java b/test/runtime/ErrorHandling/ProblematicFrameTest.java
new file mode 100644
index 0000000..9ce9f76
--- /dev/null
+++ b/test/runtime/ErrorHandling/ProblematicFrameTest.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8050167
+ * @summary Test that error is not occurred during printing problematic frame
+ * @library /testlibrary
+ * @build com.oracle.java.testlibrary.*
+ * @run driver ProblematicFrameTest
+ */
+
+import com.oracle.java.testlibrary.*;
+
+import sun.misc.Unsafe;
+import com.oracle.java.testlibrary.Utils;
+
+public class ProblematicFrameTest {
+    private static class Crasher {
+        public static void main(String[] args) {
+            Utils.getUnsafe().getInt(0);
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+            "-Xmx64m", "-XX:-TransmitErrorReport", Crasher.class.getName());
+        OutputAnalyzer output = new OutputAnalyzer(pb.start());
+        output.shouldNotMatch("error occurred during error reporting \\(printing problematic frame\\)");
+    }
+}
