diff --git a/gtests/net/packetdrill/run_packet.c b/gtests/net/packetdrill/run_packet.c
index ffa0d8278ebadbd5050ee852305ef454b9a01a5c..697feeea88c592b1c69d3db1668b14d4a4405328 100644
--- a/gtests/net/packetdrill/run_packet.c
+++ b/gtests/net/packetdrill/run_packet.c
@@ -2675,6 +2675,7 @@ int abort_association(struct state *state, struct socket *socket)
 	char *error = NULL;
 	struct packet *packet;
 	struct sctp_chunk_list *chunk_list;
+	struct sctp_cause_list *cause_list;
 	struct tuple live_inbound;
 	int result = STATUS_OK;
 	s64 flgs;
@@ -2683,14 +2684,16 @@ int abort_association(struct state *state, struct socket *socket)
 	    (socket->live.remote_initiate_tag == 0)) {
 		return STATUS_OK;
 	}
-	chunk_list = sctp_chunk_list_new();
 	if (socket->live.local_initiate_tag != 0) {
 		flgs = 0;
 	} else {
 		flgs = SCTP_ABORT_CHUNK_T_BIT;
 	}
-	/* XXX Provide an error cause */
-	sctp_chunk_list_append(chunk_list, sctp_abort_chunk_new(flgs, sctp_cause_list_new()));
+	cause_list = sctp_cause_list_new();
+	sctp_cause_list_append(cause_list,
+	                       sctp_user_initiated_abort_cause_new("packetdrill cleaning up"));
+	chunk_list = sctp_chunk_list_new();
+	sctp_chunk_list_append(chunk_list, sctp_abort_chunk_new(flgs, cause_list));
 	packet = new_sctp_packet(socket->address_family,
 				 DIRECTION_INBOUND, ECN_NONE,
 				 chunk_list, &error);