Index: Python/ast.c
===================================================================
--- Python/ast.c	(revision 59431)
+++ Python/ast.c	(working copy)
@@ -649,7 +649,11 @@
     arg_ty arg;
     int i = start;
     int j = 0; /* index for kwdefaults and kwonlyargs */
-    assert(kwonlyargs != NULL);
+
+    if (kwonlyargs == NULL) {
+        ast_error(CHILD(n, start), "no name for vararg");
+        return -1;
+    }
     assert(kwdefaults != NULL);
     while (i < NCH(n)) {
         ch = CHILD(n, i);
Index: Lib/test/test_keywordonlyarg.py
===================================================================
--- Lib/test/test_keywordonlyarg.py	(revision 59431)
+++ Lib/test/test_keywordonlyarg.py	(working copy)
@@ -48,6 +48,7 @@
         self.assertRaisesSyntaxError("def f(p1, *, p1=100):\n  pass\n")
         self.assertRaisesSyntaxError("def f(p1, *k1, k1=100):\n  pass\n")
         self.assertRaisesSyntaxError("def f(p1, *, k1, k1=100):\n  pass\n")
+        self.assertRaisesSyntaxError("def f(p1, *, **k1):\n  pass\n")
         self.assertRaisesSyntaxError("def f(p1, *, k1, **k1):\n  pass\n")
         self.assertRaisesSyntaxError("def f(p1, *, None, **k1):\n  pass\n")
         self.assertRaisesSyntaxError("def f(p, *, (k1, k2), **kw):\n  pass\n")
