From 11557daaec63db3fab270ba5293e38abf3efc135 Mon Sep 17 00:00:00 2001 From: Jon Meredith Date: Fri, 15 Jun 2012 16:29:36 +0100 Subject: [PATCH] Lock spidermonkey_drv.so in memory so NSPR thread cleanup code runs. Fixes SEGV under R15B --- c_src/spidermonkey_drv.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/c_src/spidermonkey_drv.c b/c_src/spidermonkey_drv.c index d9f2e73..3a90381 100644 --- a/c_src/spidermonkey_drv.c +++ b/c_src/spidermonkey_drv.c @@ -193,6 +193,13 @@ static ErlDrvData start(ErlDrvPort port, char *cmd) { retval->atom_ok = driver_mk_atom((char *) "ok"); retval->atom_error = driver_mk_atom((char *) "error"); retval->atom_unknown_cmd = driver_mk_atom((char *) "unknown_command"); + + /* Lock the driver in memory. NSPR registers some thread cleanup + ** code in _pt_thread_death on the async thread pool which + ** gets called after spidermonkey_drv.so is unloaded on R15B + */ + driver_lock_driver(port); + return (ErlDrvData) retval; }