TOPLLab / WARDuino

📟 A dynamic WebAssembly VM for embedded systems
https://topllab.github.io/WARDuino/
Mozilla Public License 2.0
73 stars 7 forks source link

Ts button example crashes on button press #186

Closed tolauwae closed 1 year ago

tolauwae commented 1 year ago

While the button.wast example works fine, the button.ts code crashes on an unhandled exception whenever a button is pressed.

Stack trace on esp:

0x400dcea9: void std::vector, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*, std::allocator, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*> >::emplace_back, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*>(nlohmann::basic_json, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*&&) at /home/tom/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/xtensa-esp32-elf/include/c++/8.4.0/bits/vector.tcc:109
0x400dcea9: std::vector, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*, std::allocator, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*> >::push_back(nlohmann::basic_json, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*&&) at /home/tom/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/xtensa-esp32-elf/include/c++/8.4.0/bits/stl_vector.h:1091
0x400dcea9: nlohmann::detail::json_sax_dom_parser, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > > >::start_array(unsigned int) at /home/tom/Arduino/libraries/WARDuino/src/Edward/../../lib/json/single_include/nlohmann/json.hpp:6247
0x400dcea9: bool nlohmann::detail::parser, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >, nlohmann::detail::iterator_input_adapter >::sax_parse_internal, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > > > >(nlohmann::detail::json_sax_dom_parser, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > > >*) at /home/tom/Arduino/libraries/WARDuino/src/Edward/../../lib/json/single_include/nlohmann/json.hpp:11602
0x4008a9e4: _fwalk_reent at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/fwalk.c:72
0x4008aa00: _findenv_r at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdlib/getenv_r.c:91
0x400dcea6: void std::vector, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*, std::allocator, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*> >::emplace_back, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*>(nlohmann::basic_json, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*&&) at /home/tom/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/xtensa-esp32-elf/include/c++/8.4.0/bits/vector.tcc:109
0x400dcea6: std::vector, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*, std::allocator, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*> >::push_back(nlohmann::basic_json, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >*&&) at /home/tom/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/xtensa-esp32-elf/include/c++/8.4.0/bits/stl_vector.h:1091
0x400dcea6: nlohmann::detail::json_sax_dom_parser, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > > >::start_array(unsigned int) at /home/tom/Arduino/libraries/WARDuino/src/Edward/../../lib/json/single_include/nlohmann/json.hpp:6247
0x400dcea6: bool nlohmann::detail::parser, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > >, nlohmann::detail::iterator_input_adapter >::sax_parse_internal, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > > > >(nlohmann::detail::json_sax_dom_parser, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > > >*) at /home/tom/Arduino/libraries/WARDuino/src/Edward/../../lib/json/single_include/nlohmann/json.hpp:11602
0x400e2ddd: i_instr_get_global(Module*) at /home/tom/Arduino/libraries/WARDuino/src/Interpreter/instructions.cpp:555
0x400e2ddd: interpret(Module*, bool) at /home/tom/Arduino/libraries/WARDuino/src/Interpreter/instructions.cpp:1641
0x400e36ca: mqtt_connected(Module*) at /home/tom/Arduino/libraries/WARDuino/src/Primitives/arduino.cpp:697
0x400de8e5: nlohmann::detail::iter_impl, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > > >::operator*() const at /home/tom/Arduino/libraries/WARDuino/src/Debug/../Edward/../../lib/json/single_include/nlohmann/json.hpp:12306
0x400de8e5: nlohmann::detail::iter_impl, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > > >::value() const at /home/tom/Arduino/libraries/WARDuino/src/Debug/../Edward/../../lib/json/single_include/nlohmann/json.hpp:12757
0x400de8e5: nlohmann::detail::iteration_proxy_value, std::allocator >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector > > > >::value() const at /home/tom/Arduino/libraries/WARDuino/src/Debug/../Edward/../../lib/json/single_include/nlohmann/json.hpp:4720
0x400de8e5: Debugger::updateCallbackmapping(Module*, char const*) at /home/tom/Arduino/libraries/WARDuino/src/Debug/debugger.cpp:1232
0x400e4291: __gnu_cxx::new_allocator::deallocate(char*, unsigned int) at /home/tom/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/xtensa-esp32-elf/include/c++/8.4.0/ext/new_allocator.h:125
0x400e4291: std::allocator_traits >::deallocate(std::allocator&, char*, unsigned int) at /home/tom/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/xtensa-esp32-elf/include/c++/8.4.0/bits/alloc_traits.h:462
0x400e4291: std::__cxx11::basic_string, std::allocator >::_M_destroy(unsigned int) at /home/tom/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/xtensa-esp32-elf/include/c++/8.4.0/bits/basic_string.h:226
0x400e4291: std::__cxx11::basic_string, std::allocator >::_M_dispose() at /home/tom/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/xtensa-esp32-elf/include/c++/8.4.0/bits/basic_string.h:221
0x400e4291: std::__cxx11::basic_string, std::allocator >::~basic_string() at /home/tom/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/gcc8_4_0-esp-2021r2-patch3/xtensa-esp32-elf/include/c++/8.4.0/bits/basic_string.h:657
0x400e4291: isr_17() at /home/tom/Arduino/libraries/WARDuino/src/Primitives/arduino.cpp:100
0x400d2d39: Debugger::handleInvoke(Module*, unsigned char*) at /home/tom/Arduino/libraries/WARDuino/src/Debug/debugger.cpp:385
0x400ecb65: Stream::readBytes(unsigned char*, unsigned int) at /home/tom/.arduino15/packages/esp32/hardware/e
[button.zip](https://github.com/TOPLLab/WARDuino/files/11731614/button.zip)
sp32/2.0.3/cores/esp32/Stream.h:103
0x400ecb65: HTTPClient::writeToStreamDataBlock(Stream*, int) at /home/tom/.arduino15/packages/esp32/hardware/esp32/2.0.3/libraries/HTTPClient/src/HTTPClient.cpp:1391

button.zip

tolauwae commented 1 year ago

This is due to the table index being out of range. This is a problem with the asc compiler.