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>