I am using libuv in console based application being developed on Windows XP
When my applications memory usage goes high, at certain point (at around
2GB) uv_queue_work
crashes with "runtime error" and sometimes with "R6016- not enough space
for thread data"
This little piece of code demonstrates the same. The code below tries to
create 321 threads.
(I am using 321 number for demo purpose but in original code the number is
just 31)
321 is not high number of threads on Windows XP. Still why would it crash:
void work_in_thread(uv_work_t* work_t)
{
// Allocate some memory
char* memory = new (std::nothrow) char[4321];
// Simulate some delay
Sleep(3);
}
void after_work_in_thread(uv_work_t* work_t, int status)
{
// Recreate just ended thread (to maintain thread count)
int RetVal = uv_queue_work(loop, work_t, work_in_thread,
after_work_in_thread);
if (RetVal != 0) printf("\nERROR recreating thread");
}
int main()
{
loop = uv_default_loop();
// Create working threads
for (int i=0; i<321; i++)
{
uv_work_t* work_t;
work_t = (uv_work_t*) malloc(sizeof(uv_work_t));
int RetVal = uv_queue_work(loop, work_t, work_in_thread,
after_work_in_thread);
if (RetVal != 0) printf("\nERROR creating thread");
}
uv_run(loop, UV_RUN_DEFAULT);
printf ("\nCame out of loop...");
return 0;
}
--
You received this message because you are subscribed to the Google Groups
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.