diff --git a/cumulus/pallets/xcmp-queue/src/lib.rs b/cumulus/pallets/xcmp-queue/src/lib.rs
index e0c5b6e41ea0e779fa6cf86adfca33401eaaf40c..1b416a7c69e579687cdfb3357291a45f503b829b 100644
--- a/cumulus/pallets/xcmp-queue/src/lib.rs
+++ b/cumulus/pallets/xcmp-queue/src/lib.rs
@@ -655,7 +655,11 @@ impl<T: Config> Pallet<T> {
 								remaining_fragments = last_remaining_fragments;
 								break
 							},
-							Err(_) => {
+							Err(error) => {
+								log::error!(
+									"Failed to process XCMP-XCM message, caused by {:?}",
+									error
+								);
 								// Message looks invalid; don't attempt to retry
 							},
 						}
diff --git a/cumulus/pallets/xcmp-queue/src/tests.rs b/cumulus/pallets/xcmp-queue/src/tests.rs
index b6d8ef40b04d2bd7a91de8be10e38a5204fd0c35..62e674004eccdf20c31b0634a4fa674320a01734 100644
--- a/cumulus/pallets/xcmp-queue/src/tests.rs
+++ b/cumulus/pallets/xcmp-queue/src/tests.rs
@@ -65,6 +65,18 @@ fn handle_blob_message() {
 	});
 }
 
+#[test]
+#[should_panic = "Invalid incoming XCMP message data"]
+#[cfg(debug_assertions)]
+fn handle_invalid_data() {
+	new_test_ext().execute_with(|| {
+		let data = Xcm::<Test>(vec![]).encode();
+		InboundXcmpMessages::<Test>::insert(ParaId::from(1000), 1, data);
+		let format = XcmpMessageFormat::ConcatenatedVersionedXcm;
+		XcmpQueue::process_xcmp_message(1000.into(), (1, format), 10_000_000_000, 10_000_000_000);
+	});
+}
+
 #[test]
 fn service_overweight_unknown() {
 	new_test_ext().execute_with(|| {