[Rd] A few leaks on trunk

Ivan Krylov kry|ov@r00t @end|ng |rom gm@||@com
Thu Sep 3 23:21:02 CEST 2026


I was trying to run make check-devel on a sanitized build of R to
verify a bugfix and it kept failing due to leaks:

try(order(list(1,2))) leaks the 'isna' array before failing with
UNIMPLEMENTED_TYPE:
-----------------------------------8<-----------------------------------
Index: src/main/sort.c
===================================================================
--- src/main/sort.c	(revision 90482)
+++ src/main/sort.c	(working copy)
@@ -1193,6 +1193,7 @@
 	    for (i = 0; i < n; i++) isna[i] = ISNAN(cx[i].r) || ISNAN(cx[i].i);
 	    break;
 	default:
+	    R_Free(isna);
 	    UNIMPLEMENTED_TYPE("orderVector1", key);
 	}
 	for (i = 0; i < n; i++) numna += isna[i];
-----------------------------------8<-----------------------------------

echo hello | gzip -c > foo.gz
Rscript -e 'close(gzcon(file("foo.gz", "rb")))'
Leaks the underlying Rconnection struct that had been wrapped by gzcon:
-----------------------------------8<-----------------------------------
Index: src/main/connections.c
===================================================================
--- src/main/connections.c	(revision 90482)
+++ src/main/connections.c	(working copy)
@@ -4168,6 +4168,7 @@
 	Rgzconn priv = con->private;
 	con_close1(priv->con);
 	R_ReleaseObject(priv->con->ex_ptr);
+	free(priv->con);
     }
     /* close inconv and outconv if open */
     if(con->inconv) Riconv_close(con->inconv);
-----------------------------------8<-----------------------------------

addTaskCallback(\(...) FALSE, name = "hello world") leaks the name of
the task callback:
-----------------------------------8<-----------------------------------
Index: src/main/main.c
===================================================================
--- src/main/main.c	(revision 90482)
+++ src/main/main.c	(working copy)
@@ -1893,6 +1893,7 @@
 		Rf_ToplevelTaskHandlers = h;
 	    if(tmp->finalizer)
 		tmp->finalizer(tmp->data);
+	    free(tmp->name);
 	    free(tmp);
 	}
     }
-----------------------------------8<-----------------------------------

Unfortunately, there are more.

-- 
Best regards,
Ivan



More information about the R-devel mailing list