diff --git a/gtests/net/packetdrill/run.c b/gtests/net/packetdrill/run.c
index d6ff4af6afc0669d84cb8ffcb6c166fbcd77255f..7baa7e2d02633fde97d7d7ab2fd6db8c16aba461 100644
--- a/gtests/net/packetdrill/run.c
+++ b/gtests/net/packetdrill/run.c
@@ -541,8 +541,10 @@ void run_script(struct config *config, struct script *script)
 		wire_client_send_client_starting(state->wire_client);
 
 	while (1) {
-		if (get_next_event(state, &error))
+		if (get_next_event(state, &error)) {
+			state_free(state);
 			die("%s", error);
+		}
 		event = state->event;
 		if (event == NULL)
 			break;