Extensions Nodejs Erreur de segmentation uv_queue_work

J’essaie de créer un très petit exemple d’adjonctions nodejs. Mon code c ++ est le suivant:

void __sleep(uv_work_t* req) { usleep(1000 * 1000 * 5); // = 5seconds } void after(uv_work_t *handle, int status) { printf("After\n"); } Handle foo(const Arguments& args) { HandleScope scope; uv_loop_t *loop = uv_default_loop(); uv_work_t req; uv_queue_work(loop, &req, __sleep, after); return scope.Close(Undefined()); } void InitAll(Handle exports, Handle module) { NODE_SET_METHOD(exports, "foo", foo); } NODE_MODULE("myModule", InitAll) 

En js, ceci:

 console.log(myModule); myModule.foo(); console.log("started sleeping..."); 

Lorsque j’appelle la fonction myModule.foo , le processus se termine par une erreur de segmentation.

J’ai essayé d’append uv_run(loop, UV_RUN_DEFAULT) mais cela bloque le thread principal.

Où me suis-je trompé? Merci

Le problème est que req est alloué sur la stack et est libéré lorsque foo revient. Vous devez l’allouer sur le tas (en utilisant new ou malloc ) et le libérer manuellement lorsque vous avez terminé (par exemple, after rappel).