diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c
index 5c7a5dd1346b0dd52166d6a7f8ca17f723e981bb..b365bbc70a91d1b11500faf048ac2a1871330ce1 100644
--- a/gtests/net/packetdrill/run_system_call.c
+++ b/gtests/net/packetdrill/run_system_call.c
@@ -4255,6 +4255,7 @@ static int syscall_sctp_recvmsg(struct state *state, struct syscall_spec *syscal
 	struct sctp_sndrcvinfo live_sinfo;
 	struct expression *len_expr, *script_sinfo_expr, *script_msg_flags_expr;
 	struct expression *script_fromlen_expr, *script_from_expr;
+	memset(&live_sinfo, 0, sizeof(struct sctp_sndrcvinfo));
 
 	if (check_arg_count(args, 7, error))
 		return STATUS_ERR;
@@ -4274,8 +4275,8 @@ static int syscall_sctp_recvmsg(struct state *state, struct syscall_spec *syscal
 	begin_syscall(state, syscall);
 	result = sctp_recvmsg(live_fd, msg, len, (struct sockaddr*) &live_from,
 			      &live_fromlen, &live_sinfo, &live_msg_flags);
-	free(msg);
 
+	free(msg);
 	if (end_syscall(state, syscall, CHECK_EXACT, result, error)) {
 		return STATUS_ERR;
 	}
diff --git a/gtests/net/packetdrill/tests/linux/sctp/api_tests/getsockopt/sctp_delayed_sack.pkt b/gtests/net/packetdrill/tests/linux/sctp/api_tests/getsockopt/sctp_delayed_sack.pkt
index db97982ef38db9bf444efb90388f6e401d46518c..2c4af4dca4b890c2bc4562f7e28e0f8009e3d36c 100644
--- a/gtests/net/packetdrill/tests/linux/sctp/api_tests/getsockopt/sctp_delayed_sack.pkt
+++ b/gtests/net/packetdrill/tests/linux/sctp/api_tests/getsockopt/sctp_delayed_sack.pkt
@@ -1,3 +1,4 @@
+	--tolerance_usecs=100000
 0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
 +0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
 +0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
diff --git a/gtests/net/packetdrill/tests/linux/sctp/api_tests/getsockopt/sctp_fragment_interleave.pkt b/gtests/net/packetdrill/tests/linux/sctp/api_tests/getsockopt/sctp_fragment_interleave.pkt
index b0e1ba1aa8cc6f9b1ba94dc509a9d6932b5f935a..58ba4d102cbf15777c3b78e7e4d06fdea8e8177b 100644
--- a/gtests/net/packetdrill/tests/linux/sctp/api_tests/getsockopt/sctp_fragment_interleave.pkt
+++ b/gtests/net/packetdrill/tests/linux/sctp/api_tests/getsockopt/sctp_fragment_interleave.pkt
@@ -3,6 +3,28 @@
 +0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
 +0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
 // Check the handshake with an empty(!) cookie
++0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENTS, {sctp_data_io_event=1,
+                                             sctp_association_event=0,
+                                             sctp_address_event=0,
+                                             sctp_send_failure_event=0,
+                                             sctp_peer_error_event=0,
+                                             sctp_shutdown_event=0,
+                                             sctp_partial_delivery_event=0,
+                                             sctp_adaptation_layer_event=0,
+                                             sctp_authentication_event=0,
+                                             sctp_sender_dry_event=0}, 10) = 0
+
++0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENTS, {sctp_data_io_event=1,
+                                             sctp_association_event=0,
+                                             sctp_address_event=0,
+                                             sctp_send_failure_event=0,
+                                             sctp_peer_error_event=0,
+                                             sctp_shutdown_event=0,
+                                             sctp_partial_delivery_event=0,
+                                             sctp_adaptation_layer_event=0,
+                                             sctp_authentication_event=0,
+                                             sctp_sender_dry_event=0}, [10]) = 0
+
 +0.1 connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress)
 +0.0 > sctp: INIT[flgs=0, tag=1, a_rwnd=..., os=..., is=..., tsn=1, ...]
 +0.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
@@ -11,6 +33,7 @@
 
 +0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
 
+
 +0 getsockopt(3, IPPROTO_SCTP, SCTP_FRAGMENT_INTERLEAVE, [0], [4]) = 0
 +0 setsockopt(3, IPPROTO_SCTP, SCTP_FRAGMENT_INTERLEAVE, [2], 4) = 0
 +0 getsockopt(3, IPPROTO_SCTP, SCTP_FRAGMENT_INTERLEAVE, [2], [4]) = 0
diff --git a/gtests/net/packetdrill/tests/linux/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_2.pkt b/gtests/net/packetdrill/tests/linux/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_2.pkt
index ef3af18f24aa5cadd0cbf1d88ced9d137114cd5b..ea2c7f6764b1c7c430b5d26afad37632ea3e7951 100644
--- a/gtests/net/packetdrill/tests/linux/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_2.pkt
+++ b/gtests/net/packetdrill/tests/linux/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_2.pkt
@@ -1,3 +1,4 @@
+	--tolerance_usecs=100000
 +0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
 +0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
 +0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
@@ -10,17 +11,39 @@
 +0.1 < sctp: COOKIE_ACK[flgs=0]
 +0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
 
+//Enable SCTP DATA_IO_EVENT to get sctp_sndrcvinfo
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENTS, {sctp_data_io_event=1,
+					       sctp_association_event=0,
+					       sctp_address_event=0,
+					       sctp_send_failure_event=0,
+					       sctp_peer_error_event=0,
+					       sctp_shutdown_event=0,
+					       sctp_partial_delivery_event=0,
+					       sctp_adaptation_layer_event=0,
+					       sctp_authentication_event=0,
+					       sctp_sender_dry_event=0}, 10) = 0
++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENTS, {sctp_data_io_event=1,
+					       sctp_association_event=0,
+					       sctp_address_event=0,
+					       sctp_send_failure_event=0,
+					       sctp_peer_error_event=0,
+					       sctp_shutdown_event=0,
+					       sctp_partial_delivery_event=0,
+					       sctp_adaptation_layer_event=0,
+					       sctp_authentication_event=0,
+					       sctp_sender_dry_event=0}, [10]) = 0
+
 +0.0 < sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=1234]
 *    > sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=..., gaps=[], dups=[]]
-+0.0 sctp_recvmsg(3, ..., 1000, ..., ..., {sinfo_stream=...,
-                                           sinfo_ssn=...,
++0.0 sctp_recvmsg(3, ..., 1000, ..., ..., {sinfo_stream=0,
+                                           sinfo_ssn=0,
                                            sinfo_flags=0,
-                                           sinfo_ppid=htonl(205526792),
-                                           sinfo_context=...,
-                                           sinfo_timetolive=...,
-                                           sinfo_tsn=...,
-                                           sinfo_cumtsn=...,
-                                           sinfo_assoc_id=...}, 128) = 1000
+                                           sinfo_ppid=htonl(1234),
+                                           sinfo_context=0,
+                                           sinfo_timetolive=0,
+                                           sinfo_tsn=1,
+                                           sinfo_cumtsn=0,
+                                           sinfo_assoc_id=...}, MSG_EOR) = 1000
 
 +0.0 close(3) = 0
 +0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=1]
diff --git a/gtests/net/packetdrill/tests/linux/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_3.pkt b/gtests/net/packetdrill/tests/linux/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_3.pkt
index 79dffa221038e8549d17df1b0aef6f4d8b87dc4f..a8b7e54c47e244ca510c3b81d66db0151f520186 100644
--- a/gtests/net/packetdrill/tests/linux/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_3.pkt
+++ b/gtests/net/packetdrill/tests/linux/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_3.pkt
@@ -10,7 +10,29 @@
 +0.1 < sctp: COOKIE_ACK[flgs=0]
 +0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
 
-+0.0 < sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0]
+//Enable SCTP DATA_IO_EVENT to get sctp_sndrcvinfo
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENTS, {sctp_data_io_event=1,
+					       sctp_association_event=0,
+					       sctp_address_event=0,
+					       sctp_send_failure_event=0,
+					       sctp_peer_error_event=0,
+					       sctp_shutdown_event=0,
+					       sctp_partial_delivery_event=0,
+					       sctp_adaptation_layer_event=0,
+					       sctp_authentication_event=0,
+					       sctp_sender_dry_event=0}, 10) = 0
++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENTS, {sctp_data_io_event=1,
+					       sctp_association_event=0,
+					       sctp_address_event=0,
+					       sctp_send_failure_event=0,
+					       sctp_peer_error_event=0,
+					       sctp_shutdown_event=0,
+					       sctp_partial_delivery_event=0,
+					       sctp_adaptation_layer_event=0,
+					       sctp_authentication_event=0,
+					       sctp_sender_dry_event=0}, [10]) = 0
+
++0.0 < sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=1234]
 *    > sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=..., gaps=[], dups=[]]
 +0.0 sctp_recvmsg(3, ..., 1000,
                   {sa_family=AF_INET,
@@ -20,11 +42,11 @@
                   {sinfo_stream=...,
                    sinfo_ssn=...,
                    sinfo_flags=0,
-                   sinfo_ppid=htonl(205526792),
+                   sinfo_ppid=htonl(1234),
                    sinfo_context=...,
                    sinfo_timetolive=...,
-                   sinfo_tsn=...,
-                   sinfo_cumtsn=...,
+                   sinfo_tsn=1,
+                   sinfo_cumtsn=0,
                    sinfo_assoc_id=...}, MSG_EOR) = 1000
 
 +0.0 < sctp: DATA[flgs=BE, len=1016, tsn=2, sid=0, ssn=1, ppid=0]
@@ -34,14 +56,14 @@
                    sin_port=htons(8080),
                    sin_addr=inet_addr("192.0.2.1")},
                   16,
-                  {sinfo_stream=...,
-                   sinfo_ssn=...,
+                  {sinfo_stream=0,
+                   sinfo_ssn=1,
                    sinfo_flags=0,
-                   sinfo_ppid=htonl(205526792),
-                   sinfo_context=...,
-                   sinfo_timetolive=...,
-                   sinfo_tsn=...,
-                   sinfo_cumtsn=...}, MSG_EOR) = 1000
+                   sinfo_ppid=htonl(0),
+                   sinfo_context=0,
+                   sinfo_timetolive=0,
+                   sinfo_tsn=2,
+                   sinfo_cumtsn=0}, MSG_EOR) = 1000
 
 +0.0 close(3) = 0
 +0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=2]