Skip to content

Commit 9b80fcd

Browse files
committed
do not load tbbmalloc_proxy
1 parent 580a83e commit 9b80fcd

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

R/hooks.R

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11

2-
.tbbDllInfo <- NULL
3-
.tbbMallocDllInfo <- NULL
4-
.tbbMallocProxyDllInfo <- NULL
2+
# NOTE: we intentionally do _not_ load tbbmalloc_proxy as its intended
3+
# use is to replace the default allocator, something that is dangerous
4+
# to do by default (and especially should only be done via e.g. LD_PRELOAD)
5+
.tbbDllInfo <- NULL
6+
.tbbMallocDllInfo <- NULL
57

68
loadTbbLibrary <- function(name) {
79

@@ -20,11 +22,11 @@ loadTbbLibrary <- function(name) {
2022

2123
.onLoad <- function(libname, pkgname) {
2224

23-
# load tbb, tbbmalloc, tbbmalloc_proxy
24-
.tbbDllInfo <<- loadTbbLibrary("tbb")
25-
.tbbMallocDllInfo <<- loadTbbLibrary("tbbmalloc")
26-
.tbbMallocProxyDllInfo <<- loadTbbLibrary("tbbmalloc_proxy")
25+
# load tbb, tbbmalloc
26+
.tbbDllInfo <<- loadTbbLibrary("tbb")
27+
.tbbMallocDllInfo <<- loadTbbLibrary("tbbmalloc")
2728

29+
# load RcppParallel library
2830
library.dynam("RcppParallel", pkgname, libname)
2931

3032
}
@@ -34,10 +36,16 @@ loadTbbLibrary <- function(name) {
3436
# unload the package library
3537
library.dynam.unload("RcppParallel", libpath)
3638

39+
# unload tbb_malloc if we loaded it
40+
if (!is.null(.tbbMallocDllInfo)) {
41+
dyn.unload(.tbbMallocDllInfo[["path"]])
42+
.tbbMallocDllInfo <<- NULL
43+
}
44+
3745
# unload tbb if we loaded it
38-
dlls <- list(.tbbDllInfo, .tbbMallocDllInfo, .tbbMallocProxyDllInfo)
39-
for (dll in dlls)
40-
if (!is.null(dll))
41-
dyn.unload(dll[["path"]])
46+
if (!is.null(.tbbDllInfo)) {
47+
dyn.unload(.tbbDllInfo[["path"]])
48+
.tbbDllInfo <<- NULL
49+
}
4250

4351
}

0 commit comments

Comments
 (0)