void_pfn_smxprocess_t cleanup_func,
void* data)
{
+ xbt_ex_t e;
+ static int thread_amount=0;
smx_ctx_java_t context = xbt_new0(s_smx_ctx_java_t, 1);
+ thread_amount++;
/* If the user provided a function for the process then use it
otherwise is the context for maestro */
if (code) {
context->super.argv = argv;
context->super.code = code;
- context->thread = xbt_os_thread_create(NULL,smx_ctx_java_thread_run,context,NULL);
+ TRY {
+ context->thread = xbt_os_thread_create(NULL,smx_ctx_java_thread_run,context,NULL);
+ } CATCH(e) {
+ RETHROWF("Failed to create context #%d. You may want to switch to Java coroutines to increase your limits (error: %s)."
+ "See the Install section of simgrid-java documentation (in doc/install.html) for more on coroutines.",
+ thread_amount);
+ }
}
else {
context->thread = NULL;