So, hier der Bug Report mit den Testdateien . Laufend auf der aktuelle Dev (mit nur den notwendigen Änderungen, dass es auf meiner Testplatform läuft), kann ich den Absturzt reproduzierbar triggern.
JSBach_testfile_no_cover
Das ist die Ausgangsdatei, dass es nicht an dem MP3 selber liegt (15s Johann Sebastian Bach, Double Violin Concerto 1st Movement)
760k Cover Image
JSBach_testfile_cover_756k
Diese Datei stürzt mit der folgenden Fehlerausgabe ab:
Log
D [171602] Gebe Speicher der alten Playlist frei (Freier Speicher: 51732 Bytes)
D [171602] Freier Speicher nach Aufräumen: 51732 Bytes
D [171620] Freier Speicher: 47340 Bytes
N [171620] Playlist-Generierung
I [171620] Dateimodus erkannt.
N [171621] Modus: Einzelner Track
I [171641] info : Closing audio file
N [171642] Neue Playlist mit 1 Titel(n) empfangen
D [171642] Free heap: 61264
I [171648] info : buffers freed, free Heap: 84640 bytes
I [171648] info : Reading file: "/Test/JSBach_testfile_cover_756k.mp3"
I [171673] info : MP3Decoder has been initialized, free Heap: 56860 bytes , free stack 2504 DWORDs
N [171676] '/Test/JSBach_testfile_cover_756k.mp3' wird abgespielt (1 von 1)
I [171696] info : Content-Length: 1117565
I [171696] info : ID3 framesSize: 779690
I [171696] info : ID3 version: 2.3
I [171714] info : ID3 normal frames
I [171745] id3data : Album: Double Violin Concerto
I [171776] id3data : Artist: J.S. Bach
D [171812] no cover image for SD-card audio
I [171816] id3data : ContentType: Classical
I [171847] id3data : Title: 1st Movement
I [171878] id3data : Track: 1
Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x4009b74c PS : 0x00060933 A0 : 0x8009bd86 A1 : 0x3ffeda70
A2 : 0x3f800014 A3 : 0x3f8ae94c A4 : 0xd96da95f A5 : 0xbdfcad5d
A6 : 0x00060720 A7 : 0x00000001 A8 : 0x00000015 A9 : 0x0000000f
A10 : 0xc05816f0 A11 : 0x000003f4 A12 : 0x3f800038 A13 : 0x3f800078
A14 : 0x00060923 A15 : 0x00000000 SAR : 0x0000001b EXCCAUSE: 0x0000001d
EXCVADDR: 0xd96da96b LBEG : 0x400852a9 LEND : 0x400852b1 LCOUNT : 0x00000027
Backtrace: 0x4009b749:0x3ffeda70 0x4009bd83:0x3ffeda90 0x4009bec0:0x3ffedab0 0x40085d10:0x3ffedad0 0x40085d25:0x3ffedb00 0x4016723d:0x3ffedb20 0x400dcf97:0x3ffedb40 0x400e2e5e:0x3ffedb60 0x400e2feb:0x3ffedc20 0x4021f29b:0x3ffedc40 0x40220d99:0x3ffedc60 0x40113bc5:0x3ffedcb0 0x40113be9:0x3ffedcf0 0x40204872:0x3ffedd10 0x402048f1:0x3ffedd40 0x40205176:0x3ffedd60
#0 0x4009b749:0x3ffeda70 in remove_free_block at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_tlsf.c:206
(inlined by) block_locate_free at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_tlsf.c:442
(inlined by) tlsf_malloc at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_tlsf.c:849
#1 0x4009bd83:0x3ffeda90 in multi_heap_malloc_impl at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/multi_heap.c:187
#2 0x4009bec0:0x3ffedab0 in multi_heap_malloc at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/multi_heap_poisoning.c:234
(inlined by) multi_heap_malloc at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/multi_heap_poisoning.c:223
#3 0x40085d10:0x3ffedad0 in heap_caps_malloc_base at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_caps.c:175
(inlined by) heap_caps_malloc_base at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_caps.c:120
#4 0x40085d25:0x3ffedb00 in heap_caps_malloc at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_caps.c:195
#5 0x4016723d:0x3ffedb20 in ps_malloc at C:/Users/Laszlo/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-psram.c:109
#6 0x400dcf97:0x3ffedb40 in SpiRamAllocator::allocate(unsigned int) at src/Web.cpp:89
(inlined by) ArduinoJson::V6213PB2::AllocatorOwner<SpiRamAllocator>::allocate(unsigned int) at .pio/libdeps/testrig/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp:20
(inlined by) ArduinoJson::V6213PB2::BasicJsonDocument<SpiRamAllocator>::allocPool(unsigned int) at .pio/libdeps/testrig/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp:139
(inlined by) ArduinoJson::V6213PB2::BasicJsonDocument<SpiRamAllocator>::BasicJsonDocument(unsigned int, SpiRamAllocator) at .pio/libdeps/testrig/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp:46
#7 0x400e2e5e:0x3ffedb60 in processJsonRequest(char*) at src/Web.cpp:943
#8 0x400e2feb:0x3ffedc20 in onWebsocketEvent(AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int) at src/Web.cpp:1044
(inlined by) onWebsocketEvent at src/Web.cpp:1021
#9 0x4021f29b:0x3ffedc40 in std::_Function_handler<void (AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int), void (*)(AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int)>::_M_invoke(std::_Any_data const&, AsyncWebSocket*&&, AsyncWebSocketClient*&&, AwsEventType&&, void*&&, unsigned char*&&, unsigned int&&) at c:\users\laszlo\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:297
#10 0x40220d99:0x3ffedc60 in std::function<void (AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int)>::operator()(AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int) const at c:\users\laszlo\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:687
(inlined by) AsyncWebSocket::_handleEvent(AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int) at .pio/libdeps/testrig/ESP Async WebServer/src/AsyncWebSocket.cpp:864
#11 0x40113bc5:0x3ffedcb0 in AsyncWebSocketClient::_onData(void*, unsigned int) at .pio/libdeps/testrig/ESP Async WebServer/src/AsyncWebSocket.cpp:684
#12 0x40113be9:0x3ffedcf0 in std::_Function_handler<void (void*, AsyncClient*, void*, unsigned int), AsyncWebSocketClient::AsyncWebSocketClient(AsyncWebServerRequest*, AsyncWebSocket*)::{lambda(void*, AsyncClient*, void*, unsigned int)#7}>::_M_invoke(std::_Any_data const&, void*&&, AsyncClient*&&, std::_Any_data const&, unsigned int&&) at .pio/libdeps/testrig/ESP Async WebServer/src/AsyncWebSocket.cpp:483
(inlined by) _M_invoke at c:\users\laszlo\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:297
#13 0x40204872:0x3ffedd10 in std::function<void (void*, AsyncClient*, void*, unsigned int)>::operator()(void*, AsyncClient*, void*, unsigned int) const at c:\users\laszlo\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:687
(inlined by) AsyncClient::_recv(tcp_pcb*, pbuf*, signed char) at .pio/libdeps/testrig/AsyncTCP@src-b1b5fe1257067f03f2d57f92cc6925a2/src/AsyncTCP.cpp:934
#14 0x402048f1:0x3ffedd40 in AsyncClient::_s_recv(void*, tcp_pcb*, pbuf*, signed char) at .pio/libdeps/testrig/AsyncTCP@src-b1b5fe1257067f03f2d57f92cc6925a2/src/AsyncTCP.cpp:1210
#15 0x40205176:0x3ffedd60 in _async_service_task(void*) at .pio/libdeps/testrig/AsyncTCP@src-b1b5fe1257067f03f2d57f92cc6925a2/src/AsyncTCP.cpp:162
(inlined by) _async_service_task at .pio/libdeps/testrig/AsyncTCP@src-b1b5fe1257067f03f2d57f92cc6925a2/src/AsyncTCP.cpp:197
800k Cover Image
Log
N [502266] Neue Playlist mit 1 Titel(n) empfangen
D [502276] Free heap: 85224
I [502330] info : PSRAM found, inputBufferSize: 638965 bytes
I [502331] info : buffers freed, free Heap: 85224 bytes
I [502331] info : Reading file: "/Test/JSBach_testfile_cover_800k.mp3"
I [502363] info : MP3Decoder has been initialized, free Heap: 57464 bytes , free stack 2952 DWORDs
N [502367] '/Test/JSBach_testfile_cover_800k.mp3' wird abgespielt (1 von 1)
I [502386] info : Content-Length: 1161259
I [502386] info : ID3 framesSize: 823384
I [502387] info : ID3 version: 2.3
I [502405] info : ID3 normal frames
I [502436] id3data : Album: Double Violin Concerto
D [502463] no cover image for SD-card audio
I [502475] id3data : Artist: J.S. Bach
I [502507] id3data : ContentType: Classical
I [502537] id3data : Title: 1st Movement
I [502570] id3data : Track: 1
[502723][E][Audio.h:356] bigEndian(): range overflow
[502756][E][Audio.h:356] bigEndian(): range overflow
Guru Meditation Error: Core 1 panic'ed (LoadStoreAlignment). Exception was unhandled.
Core 1 register dump:
PC : 0x4009b74c PS : 0x00060433 A0 : 0x8009bd86 A1 : 0x3ffedb00
A2 : 0x3f800014 A3 : 0x3f8ae93c A4 : 0x40480dd1 A5 : 0xf11f014b
A6 : 0x00060220 A7 : 0x00000001 A8 : 0x00000015 A9 : 0x0000000f
A10 : 0xc05816f0 A11 : 0x000003f4 A12 : 0x3f800038 A13 : 0x3f800078
A14 : 0x00060423 A15 : 0x00000000 SAR : 0x0000001b EXCCAUSE: 0x00000009
EXCVADDR: 0x40480ddd LBEG : 0x400852a9 LEND : 0x400852b1 LCOUNT : 0x00000027
Backtrace: 0x4009b749:0x3ffedb00 0x4009bd83:0x3ffedb20 0x4009bec0:0x3ffedb40 0x40085d10:0x3ffedb60 0x40085d25:0x3ffedb90 0x4016723d:0x3ffedbb0 0x400dcf97:0x3ffedbd0 0x400e2e5e:0x3ffedbf0 0x400e2feb:0x3ffedcb0 0x4021f29b:0x3ffedcd0 0x40220d99:0x3ffedcf0 0x40113bc5:0x3ffedd40 0x40113be9:0x3ffedd80 0x40204872:0x3ffedda0 0x402048f1:0x3ffeddd0 0x40205176:0x3ffeddf0
#0 0x4009b749:0x3ffedb00 in remove_free_block at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_tlsf.c:206
(inlined by) block_locate_free at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_tlsf.c:442
(inlined by) tlsf_malloc at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_tlsf.c:849
#1 0x4009bd83:0x3ffedb20 in multi_heap_malloc_impl at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/multi_heap.c:187
#2 0x4009bec0:0x3ffedb40 in multi_heap_malloc at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/multi_heap_poisoning.c:234
(inlined by) multi_heap_malloc at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/multi_heap_poisoning.c:223
#3 0x40085d10:0x3ffedb60 in heap_caps_malloc_base at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_caps.c:175
(inlined by) heap_caps_malloc_base at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_caps.c:120
#4 0x40085d25:0x3ffedb90 in heap_caps_malloc at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_caps.c:195
#5 0x4016723d:0x3ffedbb0 in ps_malloc at C:/Users/Laszlo/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-psram.c:109
#6 0x400dcf97:0x3ffedbd0 in SpiRamAllocator::allocate(unsigned int) at src/Web.cpp:89
(inlined by) ArduinoJson::V6213PB2::AllocatorOwner<SpiRamAllocator>::allocate(unsigned int) at .pio/libdeps/testrig/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp:20
(inlined by) ArduinoJson::V6213PB2::BasicJsonDocument<SpiRamAllocator>::allocPool(unsigned int) at .pio/libdeps/testrig/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp:139
(inlined by) ArduinoJson::V6213PB2::BasicJsonDocument<SpiRamAllocator>::BasicJsonDocument(unsigned int, SpiRamAllocator) at .pio/libdeps/testrig/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp:46
#7 0x400e2e5e:0x3ffedbf0 in processJsonRequest(char*) at src/Web.cpp:943
#8 0x400e2feb:0x3ffedcb0 in onWebsocketEvent(AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int) at src/Web.cpp:1044
(inlined by) onWebsocketEvent at src/Web.cpp:1021
#9 0x4021f29b:0x3ffedcd0 in std::_Function_handler<void (AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int), void (*)(AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int)>::_M_invoke(std::_Any_data const&, AsyncWebSocket*&&, AsyncWebSocketClient*&&, AwsEventType&&, void*&&, unsigned char*&&, unsigned int&&) at c:\users\laszlo\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:297
#10 0x40220d99:0x3ffedcf0 in std::function<void (AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int)>::operator()(AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int) const at c:\users\laszlo\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:687
(inlined by) AsyncWebSocket::_handleEvent(AsyncWebSocketClient*, AwsEventType, void*, unsigned char*, unsigned int) at .pio/libdeps/testrig/ESP Async WebServer/src/AsyncWebSocket.cpp:864
#11 0x40113bc5:0x3ffedd40 in AsyncWebSocketClient::_onData(void*, unsigned int) at .pio/libdeps/testrig/ESP Async WebServer/src/AsyncWebSocket.cpp:684
#12 0x40113be9:0x3ffedd80 in std::_Function_handler<void (void*, AsyncClient*, void*, unsigned int), AsyncWebSocketClient::AsyncWebSocketClient(AsyncWebServerRequest*, AsyncWebSocket*)::{lambda(void*, AsyncClient*, void*, unsigned int)#7}>::_M_invoke(std::_Any_data const&, void*&&, AsyncClient*&&, std::_Any_data const&, unsigned int&&) at .pio/libdeps/testrig/ESP Async WebServer/src/AsyncWebSocket.cpp:483
(inlined by) _M_invoke at c:\users\laszlo\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:297
#13 0x40204872:0x3ffedda0 in std::function<void (void*, AsyncClient*, void*, unsigned int)>::operator()(void*, AsyncClient*, void*, unsigned int) const at c:\users\laszlo\.platformio\packages\toolchain-xtensa-esp32\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:687
(inlined by) AsyncClient::_recv(tcp_pcb*, pbuf*, signed char) at .pio/libdeps/testrig/AsyncTCP@src-b1b5fe1257067f03f2d57f92cc6925a2/src/AsyncTCP.cpp:934
#14 0x402048f1:0x3ffeddd0 in AsyncClient::_s_recv(void*, tcp_pcb*, pbuf*, signed char) at .pio/libdeps/testrig/AsyncTCP@src-b1b5fe1257067f03f2d57f92cc6925a2/src/AsyncTCP.cpp:1210
#15 0x40205176:0x3ffeddf0 in _async_service_task(void*) at .pio/libdeps/testrig/AsyncTCP@src-b1b5fe1257067f03f2d57f92cc6925a2/src/AsyncTCP.cpp:162
(inlined by) _async_service_task at .pio/libdeps/testrig/AsyncTCP@src-b1b5fe1257067f03f2d57f92cc6925a2/src/AsyncTCP.cpp:197
Interessant hier ist, dass vor dem Absturz 2x der Fehler „bigEndian(): range overflow“ eingetragen wird.
@Wolle Eine minimale Version, die den Absturz zeigt habe ich hier zusammengeschuster:
Log
[ 638][E][main.cpp:50] setup(): Starting playback of: /JSBach_testfile_no_cover.mp3
[ 15928][V][ssl_client.cpp:321] stop_ssl_socket(): Cleaning SSL connection.
[ 15939][E][main.cpp:50] setup(): Starting playback of: /JSBach_testfile_cover_756k.mp3
assert failed: tlsf_free IDF\components\heap\heap_tlsf.c:964 (!block_is_free(block) && "block already marked as free")
Backtrace: 0x40084651:0x3ffd0a20 0x4008e0e9:0x3ffd0a40 0x400928f1:0x3ffd0a60 0x4009198d:0x3ffd0b90 0x40092388:0x3ffd0bb0 0x400924c2:0x3ffd0bd0 0x40085499:0x3ffd0bf0 0x40092921:0x3ffd0c10 0x400d329a:0x3ffd0c30 0x400fbb0a:0x3ffd0c70
#0 0x40084651:0x3ffd0a20 in panic_abort at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\esp_system/panic.c:408
#1 0x4008e0e9:0x3ffd0a40 in esp_system_abort at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\esp_system/esp_system.c:137
#2 0x400928f1:0x3ffd0a60 in __assert_func at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\newlib/assert.c:85
#3 0x4009198d:0x3ffd0b90 in block_merge_prev at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_tlsf.c:343
(inlined by) tlsf_free at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_tlsf.c:966
#4 0x40092388:0x3ffd0bb0 in multi_heap_free_impl at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/multi_heap.c:212
#5 0x400924c2:0x3ffd0bd0 in multi_heap_free at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/multi_heap_poisoning.c:266
#6 0x40085499:0x3ffd0bf0 in heap_caps_free at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\heap/heap_caps.c:382
#7 0x40092921:0x3ffd0c10 in free at C:\Users\Laszlo\.platformio\packages\framework-espidf\components\newlib/heap.c:39
#8 0x400d329a:0x3ffd0c30 in setup() at src/main.cpp:57
#9 0x400fbb0a:0x3ffd0c70 in loopTask(void*) at C:/Users/Laszlo/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:42