diff --git a/gstlal-inspiral/bin/gstlal_inspiral b/gstlal-inspiral/bin/gstlal_inspiral
index c660534811d7042943bd867bc9aea0dcb058de0e..2146e703f51b4fbbeff2e17050230e0560d6f79a 100755
--- a/gstlal-inspiral/bin/gstlal_inspiral
+++ b/gstlal-inspiral/bin/gstlal_inspiral
@@ -1100,8 +1100,13 @@ for output_file_number, (svd_bank_url_dict, output_url, ranking_stat_output_url,
 	print("shutdown: del banks", flush=True, file=sys.stderr)
 	del banks
 
-	print("shutdown: Gstreamer set state to NULL", flush=True, file=sys.stderr)
-	stream.set_state(Gst.State.NULL)
+	# FIXME: error handling is broken and trying to
+	# set the state to NULL here for online data sources
+	# can sometimes cause the process to hang instead of
+	# exiting. So we'll just skip it for the online case
+	if not options.data_source in ("lvshm", "framexmit", "devshm"):
+		print("shutdown: Gstreamer set state to NULL", flush=True, file=sys.stderr)
+		stream.set_state(Gst.State.NULL)
 
 
 #