From: Martin Quinson Date: Sun, 2 Sep 2018 00:09:27 +0000 (+0200) Subject: don't catch an exception that is never thrown X-Git-Tag: v3_21~121 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0c87bdf6f8519e321f3a18661cf624cc635e2040?hp=b2fe69328dc3b66ce74894b58f5446514e48d53c don't catch an exception that is never thrown xbt_os_thread_create() asserts that it succeeds, it does not throw anything. So put the documentation in the doc instead of displaying it when that non-existent exception is received. --- diff --git a/doc/doxygen/java.doc b/doc/doxygen/java.doc index 81c8027e51..d4c273adcf 100644 --- a/doc/doxygen/java.doc +++ b/doc/doxygen/java.doc @@ -61,6 +61,15 @@ $ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$SIMGRID_ROOT/lib Add these lines to your `~/.bashrc` file or equivalent to make these settings permanent even after a reboot. +** **pthread_create failed** + +You reached the amount of threads that can be run on your system. Try +increasing the thread limits of your operating system. + +If you manage to get it working, you could also switch to the Java +co-routines (see @ref bindings_java_coro_install). Unfortunately, +nobody used them since a few years, so they may well be broken by now. + ** **Other errors** When using jMSG, your program can crash for 3 main reasons: diff --git a/src/bindings/java/JavaContext.cpp b/src/bindings/java/JavaContext.cpp index 37c96d7225..82de71b095 100644 --- a/src/bindings/java/JavaContext.cpp +++ b/src/bindings/java/JavaContext.cpp @@ -56,28 +56,12 @@ JavaContext::JavaContext(std::function code, smx_actor_t process) : Context(std::move(code), cleanup_func, process) { - static int thread_amount=0; - thread_amount++; - - /* If the user provided a function for the process then use it otherwise is the context for maestro */ + /* If the user provided a function for the process then use it. Otherwise is the context for maestro */ if (has_code()) { this->begin = xbt_os_sem_init(0); this->end = xbt_os_sem_init(0); - try { - this->thread = xbt_os_thread_create( - nullptr, JavaContext::wrapper, this, nullptr); - } - catch (xbt_ex& ex) { - char* str = bprintf( - "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, ex.what()); - xbt_ex new_exception(XBT_THROW_POINT, str); - new_exception.category = ex.category; - new_exception.value = ex.value; - std::throw_with_nested(std::move(new_exception)); - } + this->thread = xbt_os_thread_create(nullptr, JavaContext::wrapper, this, nullptr); } else { xbt_os_thread_set_extra_data(this); }