diff --git a/tests/util/piglit-framework-gl/piglit_fbo_framework.c b/tests/util/piglit-framework-gl/piglit_fbo_framework.c
index e9becd6fffd2214215ea066ce36a82254c4bd73c..bbdc534cecc38ee0c6972295fb9056715c5e342d 100644
--- a/tests/util/piglit-framework-gl/piglit_fbo_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_fbo_framework.c
@@ -48,8 +48,6 @@ run_test(struct piglit_gl_framework **pgl_fw,
 	enum piglit_result result = PIGLIT_PASS;
 	struct piglit_gl_framework *gl_fw = *pgl_fw;
 
-	piglit_set_destroy_func((void*)destroy, gl_fw);
-
 	if (gl_fw->test_config->init)
 		gl_fw->test_config->init(argc, argv);
 	if (gl_fw->test_config->display)
@@ -166,6 +164,7 @@ piglit_fbo_framework_create(const struct piglit_gl_test_config *test_config)
 		goto fail;
 
 	gl_fw->destroy = destroy;
+	piglit_set_destroy_func((void*)destroy, gl_fw);
 	gl_fw->run_test = run_test;
 
 	return gl_fw;
diff --git a/tests/util/piglit-framework-gl/piglit_gbm_framework.c b/tests/util/piglit-framework-gl/piglit_gbm_framework.c
index d2713f55ba07544e26911bae48d4582faa962306..7552531764d2367fb875cad3b846ad1bb7706641 100644
--- a/tests/util/piglit-framework-gl/piglit_gbm_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_gbm_framework.c
@@ -88,6 +88,7 @@ piglit_gbm_framework_create(const struct piglit_gl_test_config *test_config)
 	winsys_fw->show_window = show_window;
 	winsys_fw->enter_event_loop = enter_event_loop;
 	gl_fw->destroy = destroy;
+	piglit_set_destroy_func((void*)destroy, gl_fw);
 
 	return gl_fw;
 
diff --git a/tests/util/piglit-framework-gl/piglit_glut_framework.c b/tests/util/piglit-framework-gl/piglit_glut_framework.c
index 2f4219798b57077823fed827939069c4e981be23..4c0dbe5efc58c6ac84ed369637616e294a22573a 100644
--- a/tests/util/piglit-framework-gl/piglit_glut_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_glut_framework.c
@@ -406,6 +406,7 @@ piglit_glut_framework_create(const struct piglit_gl_test_config *test_config)
 	glut_fw.gl_fw.set_keyboard_func = set_keyboard_func;
 	glut_fw.gl_fw.set_reshape_func = set_reshape_func;
 	glut_fw.gl_fw.destroy = destroy;
+	piglit_set_destroy_func((void*)destroy, &glut_fw.gl_fw);
 
 	return &glut_fw.gl_fw;
 }
diff --git a/tests/util/piglit-framework-gl/piglit_sl_framework.c b/tests/util/piglit-framework-gl/piglit_sl_framework.c
index 7138ffd6e0ed522682ecf0e47be1fe2bbe944fd0..68ded40c27be9892e8e76df0113da9050c3b7459 100644
--- a/tests/util/piglit-framework-gl/piglit_sl_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_sl_framework.c
@@ -68,6 +68,7 @@ piglit_sl_framework_create(const struct piglit_gl_test_config *test_config)
 	winsys_fw->show_window = show_window;
 	winsys_fw->enter_event_loop = enter_event_loop;
 	gl_fw->destroy = destroy;
+	piglit_set_destroy_func((void*)destroy, gl_fw);
 
 	return gl_fw;
 
diff --git a/tests/util/piglit-framework-gl/piglit_wgl_framework.c b/tests/util/piglit-framework-gl/piglit_wgl_framework.c
index 5a7273d794a7c1a8a0056d9e7bf5f261088a890d..f1a3c7d6e832711d7d252dcd89052779e6082f8a 100644
--- a/tests/util/piglit-framework-gl/piglit_wgl_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_wgl_framework.c
@@ -137,6 +137,7 @@ piglit_wgl_framework_create(const struct piglit_gl_test_config *test_config)
 	winsys_fw->show_window = show_window;
 	winsys_fw->enter_event_loop = enter_event_loop;
 	gl_fw->destroy = destroy;
+	piglit_set_destroy_func((void*)destroy, gl_fw);
 
 	winsys_fw->need_redisplay = true;
 
diff --git a/tests/util/piglit-framework-gl/piglit_wl_framework.c b/tests/util/piglit-framework-gl/piglit_wl_framework.c
index 79b21d4d555611147916e915700239942a2fcbb1..5abe848ade1f62c91fca9a04b38dcc04c90d8326 100644
--- a/tests/util/piglit-framework-gl/piglit_wl_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_wl_framework.c
@@ -312,6 +312,7 @@ piglit_wl_framework_create(const struct piglit_gl_test_config *test_config)
 	winsys_fw->show_window = show_window;
 	winsys_fw->enter_event_loop = enter_event_loop;
 	gl_fw->destroy = destroy;
+	piglit_set_destroy_func((void*)destroy, gl_fw);
 
 	return gl_fw;
 
diff --git a/tests/util/piglit-framework-gl/piglit_x11_framework.c b/tests/util/piglit-framework-gl/piglit_x11_framework.c
index 8ea7b3ac4bb79815e5c8ed9e243ee65fe489ea9d..397a7f1872d205c7c9d9d61a0d83ebc16e515ff8 100644
--- a/tests/util/piglit-framework-gl/piglit_x11_framework.c
+++ b/tests/util/piglit-framework-gl/piglit_x11_framework.c
@@ -234,6 +234,7 @@ piglit_x11_framework_create(const struct piglit_gl_test_config *test_config,
 	winsys_fw->show_window = show_window;
 	winsys_fw->enter_event_loop = enter_event_loop;
 	gl_fw->destroy = destroy;
+	piglit_set_destroy_func((void*)destroy, gl_fw);
 
 	return gl_fw;