Thanks for all your work checking this out! You seem to be having the exact same issues I had - that normal debug mode pretty much fixes it (I left it going for hours and it didn't crash). It was a great idea to try turbo mode.
I've checked the code and I think I know what the problem is now. The actual C based UDP code always assumes that it has the whole UDP packet - but the JS code provides the data in chunks as it is received. The code handles the first packet totally fine, but then if there are only a few bytes left, when then remainder arrives there's a buffer overflow and it crashes.
I'm working on a fix for this now that should improve the native UDP handling.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Thanks for all your work checking this out! You seem to be having the exact same issues I had - that normal debug mode pretty much fixes it (I left it going for hours and it didn't crash). It was a great idea to try turbo mode.
I've checked the code and I think I know what the problem is now. The actual C based UDP code always assumes that it has the whole UDP packet - but the JS code provides the data in chunks as it is received. The code handles the first packet totally fine, but then if there are only a few bytes left, when then remainder arrives there's a buffer overflow and it crashes.
I'm working on a fix for this now that should improve the native UDP handling.