Emscripten で Cソース中に以下のようなプログラムを作ると、MyPrintf()内の
(2) で (3)の vsprintf() を呼び出そうとした瞬間に、なぜか (4) に来ずに、
(5)に戻ってきて a4 に制御が戻って来てしまうことが判明。タイマーイベント
を使ってる。誰か原因の見当が付く人いない?
EM_ASM( {
  function js_OnTimer() {
    console.log( 'begin of js_OnTimer()\n' ); //a1
    var cl_OnTimer = Module.cwrap('OnTimer', 'number', ['number']);
    console.log( 'js_OnTimer(), before calling cl_OnTimer(1)\n' ); //a2
    var rc = cl_OnTimer(1);       //a3
    console.log( 'js_OnTimer(), after calling cl_OnTimer(1)\n' ); //a4
    console.log( 'end of js_OnTimer()\n' ); //a5
  }
  setInterval(js_OnTimer, 1000);
});
extern "C" int OnTimer( int a ) {
  OnTimerCore();
  return 0;
}
void OnTimerCore() {
  MyPrintf( "begin(MyPrintf) of OnTimerCore(), %d", 123 ); // (1)
  printf( "begin(printf) of OnTimerCore(), %d\n", 456 ); // (5)
}