Dear all,<br><br>Now that I've successfully compiled ECL with empscripten after quite a few tweaking in code and config. However, it crashes:<br><br>>node a.out.js<br>Calling stub instead of signal()<br>Calling stub instead of signal()<br>Calling stub instead of signal()<br>Calling stub instead of signal()<br>Calling stub instead of signal()<br>Calling stub instead of signal()<br>Calling stub instead of signal()<br><br>Internal or unrecoverable error in:<br>can't reset env->cs_limit.<br>Calling stub instead of signal()<br><br>d:\ecl-em\msvc\bclink\a.out.js:84<br>      throw ex;<br>            ^<br>abort() at Error<br>    at jsStackTrace (d:\ecl-em\msvc\bclink\a.out.js:987:13)<br>    at stackTrace (d:\ecl-em\msvc\bclink\a.out.js:1004:22)<br>    at Object.abort (d:\ecl-em\msvc\bclink\a.out.js:227043:25)<br>    at _abort (d:\ecl-em\msvc\bclink\a.out.js:6686:22)<br>    at _ecl_internal_error (d:\ecl-em\msvc\bclink\a.out.js:106763:3)<br>    at _cs_set_size (d:\ecl-em\msvc\bclink\a.out.js:189770:3)<br>    at _ecl_cs_set_org (d:\ecl-em\msvc\bclink\a.out.js:139536:2)<br>    at _cl_boot (d:\ecl-em\msvc\bclink\a.out.js:51609:2)<br>    at _main (d:\ecl-em\msvc\bclink\a.out.js:51142:3)<br>    at Object.asm._main (d:\ecl-em\msvc\bclink\a.out.js:225080:19)<span id="_editor_bookmark_start_0" style="display: none; line-height: 0px;">‍</span><br><br>The crashing function is:<br><br>static void<br>cs_set_size(cl_env_ptr env, cl_index new_size)<br>{<br>    volatile char foo = 0;<br>    cl_index safety_area = ecl_option_values[ECL_OPT_C_STACK_SAFETY_AREA];<br>    new_size += 2*safety_area;<br>#ifdef ECL_DOWN_STACK<br>    if (&foo > env->cs_org - new_size + 16) {<br>        env->cs_limit = env->cs_org - new_size + 2*safety_area;<br>        if (env->cs_limit < env->cs_barrier)<br>            env->cs_barrier = env->cs_limit;<br>    }<br>#else<br>    if (&foo < env->cs_org + new_size - 16) {<br>        env->cs_limit = env->cs_org + new_size - 2*safety_area;<br>        if (env->cs_limit > env->cs_barrier)<br>            env->cs_barrier = env->cs_limit;<br>    }<br>#endif<br>    else<br>        ecl_internal_error("can't reset env->cs_limit.");<br>    env->cs_size = new_size;<br>}<br><span id="_editor_bookmark_start_13" style="display: none; line-height: 0px;">‍</span><br>I didn't change ECL_DOWN_STACK<span id="_editor_bookmark_start_38" style="display: none; line-height: 0px;">‍</span> in config.h so it remains 1.<br><br>Any thoughts about this? More information:<br><br>1.  I disabled FFI (by commenting out ECL_FFI<span id="_editor_bookmark_start_51" style="display: none; line-height: 0px;">‍</span>), will it affact anything? I think FFI does not make sense with emscripten so I disabled it.<br>2. "Calling stub instead of signal()<span id="_editor_bookmark_start_92" style="display: none; line-height: 0px;">‍</span>" is printed from the sub implementation of signal(), provided by empscriten, like this:<br><br>>grep "Calling stub" *.js -A 2 -B 2<br><br>  function ___libc_current_sigrtmax() {<br>      Module.printErr('Calling stub instead of __libc_current_sigrtmax');<br>      return 0;<br>    }<br>--<br><br>  function _signal(sig, func) {<br>      Module.printErr('Calling stub instead of signal()');<br>      return 0;<br>    }<br>--<br><br>  function _raise(sig) {<br>      Module.printErr('Calling stub instead of raise()');<br>    ___setErrNo(ERRNO_CODES.ENOSYS);<br>        Runtime.warnOnce('raise() returning an error as we do not support it');<br>--<br><br>  function ___libc_current_sigrtmin() {<br>      Module.printErr('Calling stub instead of __libc_current_sigrtmin');<br>      return 0;<br>    }<span id="_editor_bookmark_start_93" style="display: none; line-height: 0px;">‍</span><br><br>Thanks!<br><br>- Rujia<br><br>