Eventually tracked down using valgrind-build of beam and doing some digging.
Was erroring with
warning: Temporarily disabling breakpoints for unloaded shared library "/home/jmeredith/erlang_js/ebin/../priv/erlang_js_drv.so"
Program received signal SIGTRAP, Trace/breakpoint trap.
0x000000000ad60940 in ?? ()
(Gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y <PENDING> sm_eval
breakpoint already hit 1 time
which was in the memory range that erlang_js_drv.so used to occupy. Info gathered before the breakpoint.
(gdb) x _pt_thread_death
0xad60940 <_pt_thread_death>: 0x000001be
which is some thread cleanup code in NSPR.
Something must have changed about the order of library unloading for the R15 shutdown sequence as we haven't seen this on R14 or before to my knowledge.
The solution is to make the driver permanent and lock the shared object in memory with driver_lock_driver(port)
Fixes SEGV under R15B.
Eventually tracked down using valgrind-build of beam and doing some digging.
Was erroring with
which was in the memory range that erlang_js_drv.so used to occupy. Info gathered before the breakpoint.
The address above was mapped to
which is some thread cleanup code in NSPR.
Something must have changed about the order of library unloading for the R15 shutdown sequence as we haven't seen this on R14 or before to my knowledge.
The solution is to make the driver permanent and lock the shared object in memory with
driver_lock_driver(port)