diff --git a/compute/pzgemm.c b/compute/pzgemm.c
index dee1fc2fc8ae80f6dcc294ef37d4fc6c90dda5c7..a863579d66797362f774743317f1418e72c28da1 100644
--- a/compute/pzgemm.c
+++ b/compute/pzgemm.c
@@ -45,14 +45,12 @@ chameleon_pzgemm_Astat( CHAM_context_t *chamctxt, cham_trans_t transA, cham_tran
     RUNTIME_sequence_t *sequence = options->sequence;
     int                 m, n, k;
     int                 tempmm, tempnn, tempkn, tempkm;
-    int                 myrank = RUNTIME_comm_rank( chamctxt );
-    int                 reduceC[ C->mt * C->nt ];
+    int                 myrank  = RUNTIME_comm_rank( chamctxt );
+    int8_t             *reduceC = calloc( C->mt * C->nt, sizeof(int8_t) );
 
     /* Set C tiles to redux mode. */
     for (n = 0; n < C->nt; n++) {
         for (m = 0; m < C->mt; m++) {
-            reduceC[ n * C->mt + m ] = 0;
-
             /* The node owns the C tile. */
             if ( C->get_rankof( C(m, n) ) == myrank ) {
                 reduceC[ n * C->mt + m ] = 1;
@@ -169,6 +167,7 @@ chameleon_pzgemm_Astat( CHAM_context_t *chamctxt, cham_trans_t transA, cham_tran
         }
     }
     options->forcesub = 0;
+    free( reduceC );
 
     (void)chamctxt;
 }
diff --git a/compute/pzgenm2.c b/compute/pzgenm2.c
index 28aedb8292c7afa1288a990cbff805392ac44c61..36b0ae6ee45dfdd82639f8cc521626da93aee1a8 100644
--- a/compute/pzgenm2.c
+++ b/compute/pzgenm2.c
@@ -167,8 +167,6 @@ chameleon_pzgenm2( double tol, const CHAM_desc_t *A, double *result,
 	chameleon_desc_destroy( &DROW );
 	chameleon_desc_destroy( &NRMX );
 	return;
-    } else {
-	normx = *result;
     }
 
     chameleon_desc_init( &NRMSX, CHAMELEON_MAT_ALLOC_GLOBAL, ChamRealDouble, 2, 1, 2,
diff --git a/compute/pzhemm.c b/compute/pzhemm.c
index 56b2c7267e4eb6279c36c9147eabb9b5fec80b9a..32d949c89cb6212f780e9c59713ec9e22d629bc8 100644
--- a/compute/pzhemm.c
+++ b/compute/pzhemm.c
@@ -48,13 +48,11 @@ chameleon_pzhemm_Astat( CHAM_context_t *chamctxt, cham_side_t side, cham_uplo_t
     int                 k, m, n, l, Am, An;
     int                 tempmm, tempnn, tempkn, tempkm;
     int                 myrank = RUNTIME_comm_rank( chamctxt );
-    int                 reduceC[ C->mt * C->nt ];
+    int8_t             *reduceC = calloc( C->mt * C->nt, sizeof(int8_t) );
 
     /* Set C tiles to redux mode */
     for (n = 0; n < C->nt; n++) {
         for (m = 0; m < C->mt; m++) {
-            reduceC[ n * C->mt + m ] = 0;
-
             /* The node owns the C tile. */
             if ( C->get_rankof( C(m, n) ) == myrank ) {
                 reduceC[ n * C->mt + m ] = 1;
@@ -124,9 +122,6 @@ chameleon_pzhemm_Astat( CHAM_context_t *chamctxt, cham_side_t side, cham_uplo_t
             /*
              *  ChamLeft / ChamLower
              */
-            /* Select row or column based on side */
-            l = ( side == ChamLeft ) ? m : n;
-
             if (side == ChamLeft) {
                 if (uplo == ChamLower) {
                     for (k = 0; k < C->mt; k++) {
@@ -278,6 +273,8 @@ chameleon_pzhemm_Astat( CHAM_context_t *chamctxt, cham_side_t side, cham_uplo_t
         }
     }
     options->forcesub = 0;
+    free( reduceC );
+
     (void)chamctxt;
 }
 
diff --git a/compute/pzsymm.c b/compute/pzsymm.c
index 481b32be8722314a7ae92c0939b6b8758df1824c..224137173d589d915a42429d9421088c528078a5 100644
--- a/compute/pzsymm.c
+++ b/compute/pzsymm.c
@@ -49,13 +49,11 @@ chameleon_pzsymm_Astat( CHAM_context_t *chamctxt, cham_side_t side, cham_uplo_t
     int                 k, m, n, l, Am, An;
     int                 tempmm, tempnn, tempkn, tempkm;
     int                 myrank = RUNTIME_comm_rank( chamctxt );
-    int                 reduceC[ C->mt * C->nt ];
+    int8_t             *reduceC = calloc( C->mt * C->nt, sizeof(int8_t) );
 
     /* Set C tiles to redux mode */
     for (n = 0; n < C->nt; n++) {
         for (m = 0; m < C->mt; m++) {
-            reduceC[ n * C->mt + m ] = 0;
-
             /* The node owns the C tile. */
             if ( C->get_rankof( C(m, n) ) == myrank ) {
                 reduceC[ n * C->mt + m ] = 1;
@@ -125,9 +123,6 @@ chameleon_pzsymm_Astat( CHAM_context_t *chamctxt, cham_side_t side, cham_uplo_t
             /*
              *  ChamLeft / ChamLower
              */
-            /* Select row or column based on side */
-            l = ( side == ChamLeft ) ? m : n;
-
             if (side == ChamLeft) {
                 if (uplo == ChamLower) {
                     for (k = 0; k < C->mt; k++) {
@@ -279,6 +274,8 @@ chameleon_pzsymm_Astat( CHAM_context_t *chamctxt, cham_side_t side, cham_uplo_t
         }
     }
     options->forcesub = 0;
+    free( reduceC );
+
     (void)chamctxt;
 }
 
diff --git a/compute/zprint.c b/compute/zprint.c
index 3dbd715e2c9120918817caa944836222ce344292..fe44e05d4026610e716744b722447b2e8b9dadd1 100644
--- a/compute/zprint.c
+++ b/compute/zprint.c
@@ -42,7 +42,6 @@ zprint( const CHAM_desc_t *descA,
 
     int tempmm = m == descA->mt-1 ? descA->m-m*descA->mb : descA->mb;
     int tempnn = n == descA->nt-1 ? descA->n-n*descA->nb : descA->nb;
-    int minmn = chameleon_min( tempmm, tempnn );
     int lda, i;
 
     if ( zprint_runtime_id == RUNTIME_SCHED_PARSEC ) {
diff --git a/coreblas/include/coreblas/sumsq_update.h b/coreblas/include/coreblas/sumsq_update.h
index 11f8503623ac1334c931d5f1fb2f92ae0ffaa899..b0c39dce4b0eee7892d4a9a7fce48508162468ba 100644
--- a/coreblas/include/coreblas/sumsq_update.h
+++ b/coreblas/include/coreblas/sumsq_update.h
@@ -41,8 +41,8 @@
  *          The value to integrate into the couple (scale, sumsq)
  *
  *******************************************************************************/
-static inline void
 #if defined(PRECISION_d) || defined(PRECISION_z)
+static inline void
 sumsq_update( int nb, double *scale, double *sumsq, const double *value )
 {
     double absval = fabs(*value);
@@ -59,6 +59,7 @@ sumsq_update( int nb, double *scale, double *sumsq, const double *value )
     }
 }
 #elif defined(PRECISION_s) || defined(PRECISION_c)
+static inline void
 sumsq_update( int nb, float *scale, float *sumsq, const float *value )
 {
     float absval = fabs(*value);
@@ -99,8 +100,8 @@ sumsq_update( int nb, float *scale, float *sumsq, const float *value )
  *          The value to integrate into the couple (scale, sumsq)
  *
  *******************************************************************************/
-static inline void
 #if defined(PRECISION_d) || defined(PRECISION_z)
+static inline void
 sumsq_update_2( const double *scalein, const double *sumsqin, double *scaleout, double *sumsqout )
 {
     if (*scaleout >= 0.) {
@@ -115,6 +116,7 @@ sumsq_update_2( const double *scalein, const double *sumsqin, double *scaleout,
     }
 }
 #elif defined(PRECISION_s) || defined(PRECISION_c)
+static inline void
 sumsq_update_2( const float *scalein, const float *sumsqin, float *scaleout, float *sumsqout )
 {
     if (*scaleout >= 0.) {
diff --git a/cudablas/compute/cuda_zlarfb.c b/cudablas/compute/cuda_zlarfb.c
index 5039d0265ca88a197568f7aa597384f44b212f08..8175d1944d74d50ec90f8d59be655c48c3f87942 100644
--- a/cudablas/compute/cuda_zlarfb.c
+++ b/cudablas/compute/cuda_zlarfb.c
@@ -45,6 +45,7 @@ CUDA_zlarfb( cham_side_t side, cham_trans_t trans,
     cublasStatus_t rc;
     cham_trans_t   transT, notransV, transV;
     cham_uplo_t    uplo;
+    int            info = 0;
 
     /* Check input arguments */
     if ((side != ChamLeft) && (side != ChamRight)) {
@@ -111,6 +112,7 @@ CUDA_zlarfb( cham_side_t side, cham_trans_t trans,
                                                V, LDV,
                           CUBLAS_SADDR(zzero), WORK, LDWORK );
         assert( rc == CUBLAS_STATUS_SUCCESS );
+        info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
 
         // W = W T^H = C^H V T^H
         CUDA_ztrmm( ChamRight, uplo, transT, ChamNonUnit,
@@ -127,6 +129,7 @@ CUDA_zlarfb( cham_side_t side, cham_trans_t trans,
                                                WORK, LDWORK,
                           CUBLAS_SADDR(zone),  C,    LDC );
         assert( rc == CUBLAS_STATUS_SUCCESS );
+        info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
     }
     else {
         // Form C H or C H^H
@@ -140,6 +143,7 @@ CUDA_zlarfb( cham_side_t side, cham_trans_t trans,
                                                V, LDV,
                           CUBLAS_SADDR(zzero), WORK, LDWORK );
         assert( rc == CUBLAS_STATUS_SUCCESS );
+        info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
 
         // W = W T = C V T
         CUDA_ztrmm( ChamRight, uplo, trans, ChamNonUnit,
@@ -156,7 +160,8 @@ CUDA_zlarfb( cham_side_t side, cham_trans_t trans,
                                                V,    LDV,
                           CUBLAS_SADDR(zone),  C,    LDC );
         assert( rc == CUBLAS_STATUS_SUCCESS );
+        info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
     }
 
-    return (rc == CUBLAS_STATUS_SUCCESS) ? CHAMELEON_SUCCESS : CHAMELEON_ERR_UNEXPECTED;
+    return (info == 0) ? CHAMELEON_SUCCESS : CHAMELEON_ERR_UNEXPECTED;
 }
diff --git a/cudablas/compute/cuda_zparfb.c b/cudablas/compute/cuda_zparfb.c
index 39aaa7586df4ec0ca904997dd7e9fca7e28c3106..8977eb6a169c64e98da17f6c82edc0195733c6c8 100644
--- a/cudablas/compute/cuda_zparfb.c
+++ b/cudablas/compute/cuda_zparfb.c
@@ -165,6 +165,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
     cham_trans_t     transW, transA2;
     int              wssize = 0;
     int              wrsize = 0;
+    int              info = 0;
 
     /* Check input arguments */
     if ((side != ChamLeft) && (side != ChamRight)) {
@@ -315,6 +316,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                                   A2    /* M2*N2 */, LDA2,
                               CUBLAS_SADDR(zone), workW /* K *N2 */, ldW );
             assert( rc == CUBLAS_STATUS_SUCCESS );
+            info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
 
             if ( workC == NULL ) {
                 /* W = op(T) * W */
@@ -331,6 +333,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                       workW + ldW  * j, 1,
                                       A1    + LDA1 * j, 1 );
                     assert( rc == CUBLAS_STATUS_SUCCESS );
+                    info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
                 }
 
                 /* A2 = A2 - op(V) * W  */
@@ -341,6 +344,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                                        workW /* K  * N2 */, ldW,
                                   CUBLAS_SADDR(zone),  A2    /* M2 * N2 */, LDA2 );
                 assert( rc == CUBLAS_STATUS_SUCCESS );
+                info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
 
             } else {
                 /* Wc = V * op(T) */
@@ -350,6 +354,8 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                   CUBLAS_SADDR(zone),  workV, ldV,
                                                        T,     LDT,
                                   CUBLAS_SADDR(zzero), workC, ldC );
+                assert( rc == CUBLAS_STATUS_SUCCESS );
+                info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
 
                 /* A1 = A1 - opt(T) * W */
                 rc = cublasZgemm( handle,
@@ -359,6 +365,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                                        workW, ldW,
                                   CUBLAS_SADDR(zone),  A1,    LDA1 );
                 assert( rc == CUBLAS_STATUS_SUCCESS );
+                info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
 
                 /* A2 = A2 - Wc * W */
                 rc = cublasZgemm( handle,
@@ -368,6 +375,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                                        workW, ldW,
                                   CUBLAS_SADDR(zone),  A2,    LDA2 );
                 assert( rc == CUBLAS_STATUS_SUCCESS );
+                info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
             }
         }
         else {
@@ -463,6 +471,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                                   workV /* K *N2 */, ldV,
                               CUBLAS_SADDR(zone), workW /* M1*K  */, ldW);
             assert( rc == CUBLAS_STATUS_SUCCESS );
+            info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
 
             if ( workC == NULL ) {
                 /* W = W * op(T) */
@@ -479,6 +488,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                       workW + ldW  * j, 1,
                                       A1    + LDA1 * j, 1 );
                     assert( rc == CUBLAS_STATUS_SUCCESS );
+                    info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
                 }
 
                 /* A2 = A2 - W * op(V)  */
@@ -489,6 +499,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                                        workV /* K *N2 */, ldV,
                                   CUBLAS_SADDR(zone),  A2    /* M2*N2 */, LDA2);
                 assert( rc == CUBLAS_STATUS_SUCCESS );
+                info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
 
             } else {
                 /* A1 = A1 - W * opt(T) */
@@ -499,6 +510,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                                         T,    LDT,
                                    CUBLAS_SADDR(zone),  A1,   LDA1 );
                 assert( rc == CUBLAS_STATUS_SUCCESS );
+                info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
 
                 /* Wc = op(T) * V */
                 rc = cublasZgemm( handle,
@@ -508,6 +520,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                                         workV, ldV,
                                    CUBLAS_SADDR(zzero), workC, ldC );
                 assert( rc == CUBLAS_STATUS_SUCCESS );
+                info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
 
                 /* A2 = A2 - W * Wc */
                 rc = cublasZgemm( handle,
@@ -517,6 +530,7 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
                                                         workC, ldC,
                                    CUBLAS_SADDR(zone),  A2,    LDA2 );
                 assert( rc == CUBLAS_STATUS_SUCCESS );
+                info += (rc == CUBLAS_STATUS_SUCCESS) ? 0 : 1;
             }
         }
     }
@@ -525,5 +539,5 @@ CUDA_zparfb( cham_side_t side, cham_trans_t trans,
         return CHAMELEON_ERR_NOT_SUPPORTED;
     }
 
-    return (rc == CUBLAS_STATUS_SUCCESS) ? CHAMELEON_SUCCESS : CHAMELEON_ERR_UNEXPECTED;
+    return (info == 0) ? CHAMELEON_SUCCESS : CHAMELEON_ERR_UNEXPECTED;
 }
diff --git a/runtime/starpu/control/runtime_control.c b/runtime/starpu/control/runtime_control.c
index d527cd56b307ad2dc033bf7ecc878a26cddff523..450fecf315ff69f85e62c2b790eb6fee6cfe30a4 100644
--- a/runtime/starpu/control/runtime_control.c
+++ b/runtime/starpu/control/runtime_control.c
@@ -45,7 +45,7 @@ void chameleon_starpu_parallel_worker_init( starpu_sched_opt_t *sched_opt )
         char level[256];
 
         int argc  = strchr( env_pw_level, ':') == NULL ? 1 : 2;
-        int match = sscanf( env_pw_level, "%[^:]:%d", level, &pw_level_number );
+        int match = sscanf( env_pw_level, "%255[^:]:%d", level, &pw_level_number );
 
 #if !defined(CHAMELEON_KERNELS_MT)
         chameleon_warning("chameleon_starpu_parallel_worker_init()", "CHAMELEON has been compiled with multi-threaded kernels disabled (-DCHAMELEON_KERNELS_MT=OFF). This won't break the execution, but you may not obtain the performance gain expected. It is recommended to recompile with -DCHAMELEON_KERNELS_MT=ON.\n");
diff --git a/runtime/starpu/control/runtime_descriptor.c b/runtime/starpu/control/runtime_descriptor.c
index 3438d0cb28cd51e549a488987ccd3d17e8afdaa2..36dda081062b9840531622c0c46e4de29a1eaaf1 100644
--- a/runtime/starpu/control/runtime_descriptor.c
+++ b/runtime/starpu/control/runtime_descriptor.c
@@ -339,9 +339,7 @@ void RUNTIME_data_flush( const RUNTIME_sequence_t *sequence,
     int64_t nn = n + (A->j / A->nb);
     int64_t shift = ((int64_t)A->lmt) * nn + mm;
     starpu_data_handle_t *handle = A->schedopt;
-    CHAM_tile_t          *tile   = A->tiles;
     handle += shift;
-    tile   += shift;
 
     if (*handle == NULL) {
         return;
@@ -403,7 +401,7 @@ void *RUNTIME_data_getaddr( const CHAM_desc_t *A, int m, int n )
     ptrtile += ((int64_t)A->lmt) * nn + mm;
 
     if ( *ptrtile != NULL ) {
-        return *ptrtile;
+        return (void*)(*ptrtile);
     }
 
     int home_node = -1;
@@ -443,5 +441,5 @@ void *RUNTIME_data_getaddr( const CHAM_desc_t *A, int m, int n )
              tile->name, *ptrtile, A->mpitag + A->lmt * nn + mm );
 #endif
     assert( *ptrtile );
-    return *ptrtile;
+    return (void*)(*ptrtile);
 }
diff --git a/runtime/starpu/control/runtime_tags.c b/runtime/starpu/control/runtime_tags.c
index 32c481a0d11a0970bd502bfc5800f0de4a6ead1d..3030d12c5a346dc9cdcebe5f95445b5fa6b2082e 100644
--- a/runtime/starpu/control/runtime_tags.c
+++ b/runtime/starpu/control/runtime_tags.c
@@ -165,6 +165,14 @@ chameleon_starpu_tag_release( int64_t min )
     cst_range_t *current = cst_first;
 
     assert( cst_first != NULL ); /* At least one range must be registered */
+    if ( current == NULL ) {
+#if defined(CHAMELEON_DEBUG_STARPU)
+        fprintf( stderr, "chameleon_starpu_tag: FAILED to release [%ld,...]\n",
+                 min );
+#endif
+
+        return;
+    }
 
     while ( (current != NULL) && (current->min < min) ) {
         prev    = current;
diff --git a/testing/parameters.c b/testing/parameters.c
index b94b54701591c29a8faf16ab5dd8803011477eba..8f6e1f4adb390c137411f0abf2222685b56b2415 100644
--- a/testing/parameters.c
+++ b/testing/parameters.c
@@ -305,7 +305,7 @@ void
 parameters_read( parameter_t *param,
                  const char  *values )
 {
-    int range = ( strchr( values, ':' ) != NULL );
+    int range = (values != NULL) && ( strchr( values, ':' ) != NULL );
 
     /* If we have a ranged of integer values */
     if ( range )
diff --git a/testing/testing_zgesvd.c b/testing/testing_zgesvd.c
index 3f8b023fe5a6c2515e90bba3ad9f08a3e898638c..6c1509e3ae73c65560567b0e6106b55a94971856 100644
--- a/testing/testing_zgesvd.c
+++ b/testing/testing_zgesvd.c
@@ -53,7 +53,8 @@ flops_zgesvd( int M, int N, int K, cham_job_t jobu, cham_job_t jobvt )
         ;
     }
 
-    return -1;
+    flops *= -1.; /* make it negative as long as the formulae is not complete */
+    return flops;
 }
 
 int
@@ -236,6 +237,10 @@ testing_zgesvd_std( run_arg_list_t *args, int check )
     /* Fills the matrix with random values */
     hres = CHAMELEON_zlatms( M, N, ChamDistUniform, seedA, ChamNonsymPosv, D, mode, cond, 1., A, LDA );
     if ( hres != 0 ) {
+        free( D );
+        free( S );
+        if ( U ) { free( U ); }
+        if ( Vt ) { free( Vt ); }
         return hres;
     }
     /*
@@ -262,13 +267,10 @@ testing_zgesvd_std( run_arg_list_t *args, int check )
     }
 
     free( A );
+    free( D );
     free( S );
-    if ( (jobu  == ChamAllVec) || (jobu  == ChamSVec) ) {
-        free( U );
-    }
-    if ( (jobvt == ChamAllVec) || (jobvt == ChamSVec) ) {
-        free( Vt );
-    }
+    if ( U ) { free( U ); }
+    if ( Vt ) { free( Vt ); }
     CHAMELEON_Desc_Destroy( &descT );
 
     return hres;
diff --git a/testing/testing_zunglq.c b/testing/testing_zunglq.c
index 6e2aa96a15f96c1c0e095ba068475397fa3907e4..63bc4daeed11fbaa3c2a551af9f5588d4d30876e 100644
--- a/testing/testing_zunglq.c
+++ b/testing/testing_zunglq.c
@@ -80,6 +80,12 @@ testing_zunglq_desc( run_arg_list_t *args, int check )
     /* Fills the matrix with random values */
     CHAMELEON_zplrnt_Tile( descA, seedA );
     hres = CHAMELEON_zgelqf_Tile( descA, descT );
+    if ( hres != CHAMELEON_SUCCESS ) {
+        CHAMELEON_Desc_Flush( descA, test_data.sequence );
+        CHAMELEON_Desc_Flush( descT, test_data.sequence );
+        CHAMELEON_Desc_Flush( descQ, test_data.sequence );
+        return hres;
+    }
 
     /* Calculates the solution */
     testing_start( &test_data );
diff --git a/testing/testing_zunglq_hqr.c b/testing/testing_zunglq_hqr.c
index e55034cd05d65e1af0279ee6cf9f66e74916ce94..63f922a7eaf4c6201287d7df1b7e8201b9cb7316 100644
--- a/testing/testing_zunglq_hqr.c
+++ b/testing/testing_zunglq_hqr.c
@@ -87,6 +87,13 @@ testing_zunglq_hqr_desc( run_arg_list_t *args, int check )
     /* Fills the matrix with random values */
     CHAMELEON_zplrnt_Tile( descA, seedA );
     hres = CHAMELEON_zgelqf_param_Tile( &qrtree, descA, descTS, descTT );
+    if ( hres != CHAMELEON_SUCCESS ) {
+        CHAMELEON_Desc_Flush( descA, test_data.sequence );
+        CHAMELEON_Desc_Flush( descTS, test_data.sequence );
+        CHAMELEON_Desc_Flush( descTT, test_data.sequence );
+        CHAMELEON_Desc_Flush( descQ, test_data.sequence );
+        return hres;
+    }
 
     /* Calculates the solution */
     testing_start( &test_data );
diff --git a/testing/testing_zungqr.c b/testing/testing_zungqr.c
index fae6002db07acb71f3105d08f49e9ffd570402d7..1a719e929650901f75eafad5efa63fa136f8587f 100644
--- a/testing/testing_zungqr.c
+++ b/testing/testing_zungqr.c
@@ -80,6 +80,12 @@ testing_zungqr_desc( run_arg_list_t *args, int check )
     /* Fills the matrix with random values */
     CHAMELEON_zplrnt_Tile( descA, seedA );
     hres = CHAMELEON_zgeqrf_Tile( descA, descT );
+    if ( hres != CHAMELEON_SUCCESS ) {
+        CHAMELEON_Desc_Flush( descA, test_data.sequence );
+        CHAMELEON_Desc_Flush( descT, test_data.sequence );
+        CHAMELEON_Desc_Flush( descQ, test_data.sequence );
+        return hres;
+    }
 
     /* Calculates the solution */
     testing_start( &test_data );
diff --git a/testing/testing_zungqr_hqr.c b/testing/testing_zungqr_hqr.c
index 8935e0f7a1ec37784379843ac539a31431f2fac3..e8f26af0596fb8f26710c28a166cba1b82a67101 100644
--- a/testing/testing_zungqr_hqr.c
+++ b/testing/testing_zungqr_hqr.c
@@ -87,6 +87,13 @@ testing_zungqr_hqr_desc( run_arg_list_t *args, int check )
     /* Fills the matrix with random values */
     CHAMELEON_zplrnt_Tile( descA, seedA );
     hres = CHAMELEON_zgeqrf_param_Tile( &qrtree, descA, descTS, descTT );
+    if ( hres != CHAMELEON_SUCCESS ) {
+        CHAMELEON_Desc_Flush( descA, test_data.sequence );
+        CHAMELEON_Desc_Flush( descTS, test_data.sequence );
+        CHAMELEON_Desc_Flush( descTT, test_data.sequence );
+        CHAMELEON_Desc_Flush( descQ, test_data.sequence );
+        return hres;
+    }
 
     /* Calculates the solution */
     testing_start( &test_data );