diff --git a/src/glpios01.c b/src/glpios01.c
index f821536..46d953d 100644
--- a/src/glpios01.c
+++ b/src/glpios01.c
@@ -1471,6 +1471,11 @@ int ios_solve_node(glp_tree *tree)
       }
       /* try to solve/re-optimize the LP relaxation */
       ret = glp_simplex(mip, &parm);
+      if (ret == GLP_EFAIL)
+      {  /* retry with a new basis */
+         glp_adv_basis(mip, 0);
+         ret = glp_simplex(mip, &parm);
+      }
       tree->curr->solved++;
 #if 0
       xprintf("ret = %d; status = %d; pbs = %d; dbs = %d; some = %d\n",
