diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/Linkifier.java b/gitiles-servlet/src/main/java/com/google/gitiles/Linkifier.java
index 1a49a41..8225278 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/Linkifier.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/Linkifier.java
@@ -29,9 +29,9 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -66,14 +66,12 @@
 
     List<CommentLinkInfo> list = new ArrayList<>();
     list.add(new CommentLinkInfo(HTTP_URL_PATTERN, "$0"));
-    Set<String> subsections = config.getSubsections(COMMENTLINK);
 
     List<String> patterns = new ArrayList<>();
-
     patterns.add(HTTP_URL_PATTERN.pattern());
     patterns.add(CHANGE_ID_PATTERN.pattern());
 
-    for (String subsection : subsections) {
+    for (String subsection : config.getSubsections(COMMENTLINK)) {
       String match = config.getString("commentlink", subsection, "match");
       String link = config.getString("commentlink", subsection, "link");
       String html = config.getString("commentlink", subsection, "html");
@@ -85,11 +83,17 @@
         log.warn("invalid commentlink.%s.match", subsection);
         continue;
       }
+      Pattern pattern;
+      try {
+        pattern = Pattern.compile(match);
+      } catch(PatternSyntaxException ex) {
+        log.warn("invalid commentlink." + subsection + ".match", ex);
+        continue;
+      }
       if (Strings.isNullOrEmpty(link)) {
         log.warn("invalid commentlink.%s.link", subsection);
         continue;
       }
-      Pattern pattern = Pattern.compile(match);
       list.add(new CommentLinkInfo(pattern, link));
       patterns.add(match);
     }
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/LinkifierTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/LinkifierTest.java
index 9a04f9d..4cca863 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/LinkifierTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/LinkifierTest.java
@@ -152,4 +152,12 @@
         ImmutableMap.of("text", "&lt;p&rt;")),
         l.linkify(REQ, "http://weird/htmlified/?url&lt;p&rt;"));
   }
+
+  @Test
+  public void invalidCommentlinkMatchRegex() throws Exception {
+    Config config = new Config();
+    config.setString("commentlink", "foo", "match", "bad-regex(");
+    new Linkifier(TestGitilesUrls.URLS, config);
+    // Must not throw an exception
+  }
 }
