diff --git a/gst/gstpad.c b/gst/gstpad.c
index d52a506..a2ba441 100644
--- a/gst/gstpad.c
+++ b/gst/gstpad.c
@@ -2199,7 +2199,10 @@ gst_pad_get_caps (GstPad * pad)
 
   g_return_val_if_fail (GST_IS_PAD (pad), NULL);
 
-  GST_OBJECT_LOCK (pad);
+  /* break getcaps cycles */
+  if (!GST_OBJECT_TRYLOCK (pad)) {
+    return gst_caps_new_any ();
+  }
 
   GST_CAT_DEBUG_OBJECT (GST_CAT_CAPS, pad, "get pad caps");
 
