我的Emscripten程序在从函数返回时崩溃

时间:2014-09-07 08:59:53

标签: c++ emscripten

我的emscripten编译的程序崩溃,出现以下错误消息。使用g ++或clang编译时,相同的代码本机运行良好。通过插入printf statemens我确定崩溃发生在函数WebM::initialize()的最后一行(从main()调用)和函数main()中的下一行

之间
trap!
trap!

/opus_web_audio/build/src/encoder.js:79
      throw ex;
            ^
abort() at Error
    at jsStackTrace (/opus_web_audio/build/src/encoder.js:1138:13)
    at stackTrace (/opus_web_audio/build/src/encoder.js:1155:22)
    at abort (/opus_web_audio/build/src/encoder.js:164948:25)
    at _llvm_trap (/opus_web_audio/build/src/encoder.js:7136:7)
    at Array.__ZN4WebM10initializeEv [WebM::initialize()] [as 380] (/opus_web_audio/build/src/encoder.js:8133:3)
    at Object.dynCall_ii (/opus_web_audio/build/src/encoder.js:162153:43)
    at invoke_ii (/opus_web_audio/build/src/encoder.js:7282:32)
    at _main (/opus_web_audio/build/src/encoder.js:7784:5)
    at Object.asm._main (/opus_web_audio/build/src/encoder.js:162997:21)
    at Object.callMain (/opus_web_audio/build/src/encoder.js:164825:30)

1 个答案:

答案 0 :(得分:1)

错误的原因是WebM::initialize()函数可以在不调用return语句的情况下退出。编译器警告这一点,但我认为它是无害的并且最初忽略它。

/opus_web_audio/src/main.cpp:178:3: warning: control may reach end of non-void function [-Wreturn-type]