Hi,
did you find fix for this problem . i am having similar type of issue . in 
which one scenario leads to memory leak.
my question is here .

https://groups.google.com/forum/#!topic/mozilla.dev.tech.js-engine.internals/9jKqgZGSjIY

thanks


On Thursday, June 8, 2017 at 7:08:02 PM UTC+5:30, sandhy...@gmail.com wrote:
> I am creating a C++ program that embeds Spidermonkey JS library. The program 
> is running fine but it it is leaking memory in JS_NewRuntime call with more 
> than one thread. It is leaking 32 bytes per thread.
> 
> Spidermonkey JS version : 45
> NSPR version: 4.15
> 
> 
> Sample program attached(sample.cpp):
> 
> // following code might be needed in some case
>  #define __STDC_LIMIT_MACROS
>  #include <stdint.h>
>  #include "nspr/prthread.h"
>  #include "nspr/prinit.h"
> 
> #include "jsapi.h"
> #include "js/Initialization.h"
> 
> /* The class of the global object. */
> static JSClass global_class = {
>     "global",
>     JSCLASS_GLOBAL_FLAGS,
>     nullptr,
>     nullptr,
>     nullptr,
>     nullptr,
>     nullptr,
>     nullptr,
>     nullptr,
>     nullptr,
>     nullptr,
>     nullptr,
>     nullptr,
>     JS_GlobalObjectTraceHook
> };
> 
> static void CreateThreads(void *);
> 
> int main(int argc, const char *argv[])
> {
>     JS_Init();
> 
>       PRThread*       Thread[5];
>       
>       for(int i=0; i<5; i++)
>       Thread[i] = PR_CreateThread(PR_USER_THREAD, &CreateThreads, 
> NULL,PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD, PR_JOINABLE_THREAD, 0);
> 
>       for(int i=0; i<5; i++)
>               PR_JoinThread(Thread[i]);   
>               
>     JS_ShutDown();
>     
>     return 0;
> }
> 
> void CreateThreads(void *arg)
> {
>       JSRuntime *rt = JS_NewRuntime(8L * 1024 * 1024);
>     if (!rt)
>         return ;
>     
>     JS_DestroyRuntime(rt);
> }
>  
> Command to compile: g++ --std=c++11 -DDEBUG -o a.out sample.cpp -I./include 
> -Llib -lmozjs-45 -lpthread -lnspr4
> 
> Command to execute: LD_LIBRARY_PATH=lib/ valgrind --leak-check=full 
> --log-file=./leak.log ./a.out
> 
> 
> Valgrind Stacktrace:
> 
> 128 bytes in 4 blocks are definitely lost in loss record 39 of 59
> ==13653==    at 0x4C27BE3: malloc (vg_replace_malloc.c:299)
> ==13653==    by 0x5753B86: js_malloc(unsigned long) (Utility.h:221)
> ==13653==    by 0x5757FF3: _Z6js_newIN4nspr6ThreadEIDnS2_bEEPT_DpOT0_ 
> (Utility.h:333)
> ==13653==    by 0x575578F: PR_GetCurrentThread() (PosixNSPR.cpp:146)
> ==13653==    by 0x575F6ED: JSRuntime::init(unsigned int, unsigned int) 
> (Runtime.cpp:265)
> ==13653==    by 0x54BE53C: JS_NewRuntime(unsigned int, unsigned int, 
> JSRuntime*) (jsapi.cpp:469)
> ==13653==    by 0x4009EB: CreateThreads(void*) (in 
> /vagrant/sandhya_workspae/t/jssample_new/a.out)
> ==13653==    by 0x6CCD5A9: _pt_root (ptthread.c:216)
> ==13653==    by 0x6A82DC4: start_thread (in /usr/lib64/libpthread-2.17.so)
> ==13653==    by 0x77FF73C: clone (in /usr/lib64/libc-2.17.so)
_______________________________________________
dev-tech-js-engine-internals mailing list
dev-tech-js-engine-internals@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to