Toying with this concept I realized that some operations cannot be
performed if you launch a thread from a Web Worker.
A simpler example, following my setup linked in the OP:
#include <pthread.h>
#include <stdio.h>
#include <emscripten.h>
void *thread(void *arg)
{
printf("Hello from thread!\n"); // Execution hangs here if Module is
instantiated in a Web Worker
return NULL;
}
EMSCRIPTEN_KEEPALIVE void doSomething()
{
pthread_t thr;
pthread_create(&thr, NULL, thread, NULL);
}
To me it seems like it gets locked on spawning threads, IO, ... I guess
this is not expected behavior, and that this can happen because WASM
threads is a WIP feature. Is there anything else I could do here?
Cheers,
SFE
On Friday, July 24, 2020 at 5:35:43 PM UTC+1 [email protected] wrote:
> Interesting, so this can use pthreads from the main thread ok, but not
> when starting from a pthread?
>
> That is a less-tested use case, so it's possible you've run into a bug.
> Building with -s PTHREADS_DEBUG may help with extra logging. But it may be
> best to try to reduce this to a small testcase, as it may need to be
> debugged in depth.
>
> On Thu, Jul 23, 2020 at 7:46 AM Segmentation Fault Error <
> [email protected]> wrote:
>
>> Hello everyone,
>>
>>
>>
>> I have been using for a while emscripten to compile a large library.
>> Since its operations take long time, I moved the module to a web worker,
>> where I can call functions without blocking the UI. And it has worked
>> fantastic so far!
>>
>>
>>
>> To further improve performance, I then enabled pthreads in the toolchain.
>> I noticed then that the execution got stuck. Somehow this issue does not
>> occur if the module is executed on the main UI thread, instead of the web
>> worker.
>>
>>
>>
>> I have left a link below, to the demo code on how to reproduce the issue:
>> a function that launches a thread, that launches several threads. It
>> happens that this second level never gets executed if the function was
>> called from a web worker.
>>
>>
>>
>> Maybe I am missing something here, any idea?
>>
>>
>>
>> Regards,
>>
>> SFE
>>
>> Link:
>> https://drive.google.com/file/d/1EtkdRBN1Y8QpsRE19BH5AePAD3VLAV6U/view?usp=sharing
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "emscripten-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/emscripten-discuss/141a16e4-647e-484c-b36a-8db45addaec8o%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/emscripten-discuss/141a16e4-647e-484c-b36a-8db45addaec8o%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
--
You received this message because you are subscribed to the Google Groups
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/emscripten-discuss/71922739-0935-4b4d-b4c2-ee4c0067cd44n%40googlegroups.com.