diff --git a/example/example20.cpp b/example/example20.cpp
index 77cda6b..662dc47 100644
--- a/example/example20.cpp
+++ b/example/example20.cpp
@@ -44,6 +44,8 @@
     return os << "n:a=" << v.a << ";b=" << v.b;
 }
 
+struct UnboundStruct { };
+
 template <typename T>
 py::array mkarray_via_buffer(size_t n) {
     return py::array(py::buffer_info(nullptr, sizeof(T),
@@ -61,6 +63,10 @@
     return arr;
 }
 
+std::string get_format_unbound() {
+    return py::format_descriptor<UnboundStruct>::format();
+}
+
 py::array_t<NestedStruct> create_nested(size_t n) {
     auto arr = mkarray_via_buffer<NestedStruct>(n);
     auto ptr = static_cast<NestedStruct*>(arr.request().ptr);
@@ -107,4 +113,5 @@
     m.def("print_rec_packed", &print_recarray<PackedStruct>);
     m.def("print_rec_nested", &print_recarray<NestedStruct>);
     m.def("print_dtypes", &print_dtypes);
+    m.def("get_format_unbound", &get_format_unbound);
 }
diff --git a/example/example20.py b/example/example20.py
index c581cf3..e0a0018 100644
--- a/example/example20.py
+++ b/example/example20.py
@@ -1,16 +1,20 @@
 #!/usr/bin/env python
 from __future__ import print_function
 
+import unittest
 import numpy as np
 from example import (
     create_rec_simple, create_rec_packed, create_rec_nested, print_format_descriptors,
-    print_rec_simple, print_rec_packed, print_rec_nested, print_dtypes
+    print_rec_simple, print_rec_packed, print_rec_nested, print_dtypes, get_format_unbound
 )
 
 
 def check_eq(arr, data, dtype):
     np.testing.assert_equal(arr, np.array(data, dtype=dtype))
 
+unittest.TestCase().assertRaisesRegex(
+    RuntimeError, 'unsupported buffer format', get_format_unbound)
+
 print_format_descriptors()
 print_dtypes()
 
