Is the invoked function pointer have a signature that is identical to the declared function pointer signature? I have had this issue before and fixed it by making sure the function pointer signatures match by 100%.
On Wednesday, December 3, 2014 8:26:57 PM UTC+10, Ed Costello wrote: > > Hi, > > I have compiled Csound to a javascript library, it runs fine until it > calls its deinitialise opcode function and I get this error: > > uncaught exception: abort() at jsStackTrace@ > http://0.0.0.0:8000/javascripts/libcsound.js:978:13 > stackTrace@http://0.0.0.0:8000/javascripts/libcsound.js:995:22 > abort@http://0.0.0.0:8000/javascripts/libcsound.js:623651:25 > nullFunc_iii@http://0.0.0.0:8000/javascripts/libcsound.js:8163:1498 > b22220@http://0.0.0.0:8000/javascripts/libcsound.js:596343:49 > _csoundDeinitialiseOpcodes@ > http://0.0.0.0:8000/javascripts/libcsound.js:50608:12 > _deact@http://0.0.0.0:8000/javascripts/libcsound.js:88727:4 > _xturnoff@http://0.0.0.0:8000/javascripts/libcsound.js:88658:3 > _xturnoff_now@http://0.0.0.0:8000/javascripts/libcsound.js:87742:2 > _csoundCleanup@http://0.0.0.0:8000/javascripts/libcsound.js:9797:6 > _CsoundObj_reset@http://0.0.0.0:8000/javascripts/libcsound.js:9026:3 > asm._CsoundObj_reset@ > http://0.0.0.0:8000/javascripts/libcsound.js:621675:10 > CsoundObj/this.start/audioProcessNode.onaudioprocess@ > http://0.0.0.0:8000/javascripts/CsoundObj.js:80:5 > > "processing" CsoundObj.js:72 > "Csound: B 0.000 .. 1.000 T 0.998 TT 0.998 M: 0.19998 0.19998" > libcsound.js:125 > "Csound: Score finished in csoundPerformKsmps()." libcsound.js:125 > "Invalid function pointer '0' called with signature 'iii'. Perhaps this is > an invalid value (e.g. caused by calling a virtual method on a NULL > pointer)? Or calling a function with an incorrect type, which will fail? > (it is worth building your source files with -Werror (warnings are errors), > as warnings can indicate undefined behavior which can cause this)" > libcsound.js:128 > "This pointer might make sense in another type signature: ii: 0 iiii: 0 > iiid: 0 i: 0 iiiii: 0 iiiiii: 0 iiiiiiii: 0 iiiiiiiii: 0 iiiiiiiiii: > 0 iiiiiiiiiii: 0 iiiiiiiiiidii: 0 diii: 0 viii: 0 vii: 0 iid: 0 dii: > 0 vi: 0 di: 0 viiid: 0 viiii: 0 vid: 0 ddi: 0 did: 0 viiiii: 0 v: > 0 viiiiid: 0 viiiiiii: 0 “ > > > This looks like it is related to function pointer casting, csounds > 'deinitialise opcodes' function does seem to cast each individual opcodes > deinit function to call it. > It says on the emscripten website that there are a number of ways to > approach fixing this problem, other than refactoring it says you can > compile with EMULATE_FUNCTION_POINTER_CASTS, unfortunately this does not > seem to be an option any more. Is there any other way of fixing this > without rewriting code? > Thanks > Ed > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
