diff --git a/test/core/http/parser_test.c b/test/core/http/parser_test.c
index 338a3015348055b82406cc8d5211580d4ce0a682..e46b8ebb692b22e997ef29c9ea1e317654544532 100644
--- a/test/core/http/parser_test.c
+++ b/test/core/http/parser_test.c
@@ -178,6 +178,32 @@ static void test_fails(grpc_slice_split_mode split_mode, char *response) {
   gpr_free(slices);
 }
 
+static const uint8_t failed_test1[] = {
+0x9e,0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30,0x4a,0x48,0x54,0x54,0x30,0x32,0x16,0xa,0x2f,0x48,0x20,0x31,0x2e,0x31,0x20,0x32,0x30,0x31,0x54,0x54,0xb9,0x32,0x31,0x2e,0x20,0x32,0x30,0x20,
+};
+
+typedef struct {
+  const char *name;
+  const uint8_t * data;
+  size_t length;
+} failed_test;
+
+#define FAILED_TEST(name) {#name, name, sizeof(name)}
+
+failed_test failed_tests[] = {
+  FAILED_TEST(failed_test1),
+};
+
+static void test_doesnt_crash(failed_test t) {
+  gpr_log(GPR_DEBUG, "Run previously failed test: %s", t.name);
+  grpc_http_parser p;
+  grpc_http_parser_init(&p);
+  gpr_slice slice = gpr_slice_from_copied_buffer((const char*)t.data,t.length);
+  grpc_http_parser_parse(&p, slice);
+  gpr_slice_unref(slice);
+  grpc_http_parser_destroy(&p);
+}
+
 int main(int argc, char **argv) {
   size_t i;
   const grpc_slice_split_mode split_modes[] = {GRPC_SLICE_SPLIT_IDENTITY,
@@ -186,6 +212,10 @@ int main(int argc, char **argv) {
 
   grpc_test_init(argc, argv);
 
+for (i=0; i<GPR_ARRAY_SIZE(failed_tests); i++) {
+test_doesnt_crash(failed_tests[i]);
+}
+
   for (i = 0; i < GPR_ARRAY_SIZE(split_modes); i++) {
     test_succeeds(split_modes[i],
                   "HTTP/1.0 200 OK\r\n"