-
Notifications
You must be signed in to change notification settings - Fork 99
Description
Steps to reproduce:
List the minimal actions needed to reproduce the behavior.
Compile and execute this code:
#include <Arduino.h>
#include <InfluxDbClient.h>
void func_2(Point new_point)
{
Serial.println(new_point.toLineProtocol());
}
void func_1()
{
Point new_point("test");
new_point.addField("testfield", 1);
Serial.println(new_point.toLineProtocol());
func_2(new_point);
}
void setup()
{
Serial.begin(115200);
}
void loop()
{
func_1();
delay(1000);
}
Expected behavior:
Would like to see two times the line protocol per iteration
Actual behavior:
ESP32 resets with "CORRUPT HEAP" fault. Backtrace:
Decoding stack results
0x40083a99: panic_abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/panic.c line 402
0x4008e65d: esp_system_abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/esp_system.c line 128
0x40093911: __assert_func at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/newlib/assert.c line 85
0x40093557: multi_heap_free at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/multi_heap_poisoning.c line 245
0x40083efd: heap_caps_free at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/heap_caps.c line 340
0x40093941: free at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/newlib/heap.c line 39
0x40156725: operator delete(void*) at /builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/gcc/libstdc++-v3/libsupc++/del_op.cc line 49
0x40156cd5: operator delete at /builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/gcc/libstdc++-v3/libsupc++/del_opv.cc line 35
0x400d3a83: Point::~Point() at .pio/libdeps/release/ESP8266 Influxdb/src/Point.cpp line 39
0x400df57a: ELStatus::persist_status(el_status_record) at .pio/libdeps/release/ESP8266 Influxdb/src/Point.h line 38
0x400df63e: ELStatus::loop() at lib/ELStatus/ELStatus.cpp line 70
0x400d2f02: loop() at src/main.cpp line 34
0x400e2681: loopTask(void*) at C:/Users/adiksauvan/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp line 50
Specifications:
- Library Version: 3.12.1
- InfluxDB Version: latest cloud release (not relevant here)
- Board/ESP chip: WEMOS D32 Pro (ESP32-WROVER)
- Device Arduino SDK version:
framework-arduinoespressif32 @ 3.20004.220825 (2.0.4)
tool-esptoolpy @ 1.30300.0 (3.3.0)
toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3
Am I missing something? Is this a stupid question? ;-) I know: passing objects by value is not a good idea in most cases. But I would like to understand, why it fails to hard here.
Thanks for any advice!
Keith