diff --git a/CMakeLists.txt b/CMakeLists.txt index 3bd8712..25068c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.16.0) project(pipedal - VERSION 1.4.83 + VERSION 1.4.85 DESCRIPTION "PiPedal Guitar Effect Pedal For Raspberry Pi" HOMEPAGE_URL "https://rerdavies.github.io/pipedal" ) EXECUTE_PROCESS( COMMAND dpkg --print-architecture COMMAND tr -d '\n' OUTPUT_VARIABLE DEBIAN_ARCHITECTURE ) -set (DISPLAY_VERSION "PiPedal v1.4.83-Experimental") +set (DISPLAY_VERSION "PiPedal v1.4.85-Experimental") set (PACKAGE_ARCHITECTURE ${DEBIAN_ARCHITECTURE}) set (CMAKE_INSTALL_PREFIX "/usr/") @@ -96,7 +96,7 @@ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "IoT guitar effect pedal for Raspberry Pi" set(CPACK_DEBIAN_PACKAGE_SECTION sound) set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE) -set(CPACK_DEBIAN_PACKAGE_DEPENDS "lv2-dev, ffmpeg, authbind, curl, gpg, alsa-base| pipewire, alsa-utils" ) +set(CPACK_DEBIAN_PACKAGE_DEPENDS "libicu-dev ,lv2-dev, ffmpeg, authbind, curl, gpg, alsa-base| pipewire, alsa-utils" ) set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DEBIAN_ARCHITECTURE}) set(CPACK_PACKAGING_INSTALL_PREFIX /usr) set(CPACK_PROJECT_NAME ${PROJECT_NAME}) diff --git a/README.md b/README.md index a332ae7..67dc2b6 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,11 @@ -Download: v1.4.83 +Download: v1.4.85 Website: [https://rerdavies.github.io/pipedal](https://rerdavies.github.io/pipedal). Documentation: [https://rerdavies.github.io/pipedal/Documentation.html](https://rerdavies.github.io/pipedal/Documentation.html). -#### NEW version 1.4.83 Release. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details. New Phaser and Graphic Equalizer plugins. +#### NEW version 1.4.85 Release. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details. New Phaser and Graphic Equalizer plugins.   diff --git a/docs/Installing.md b/docs/Installing.md index 6a66c15..7184b0f 100644 --- a/docs/Installing.md +++ b/docs/Installing.md @@ -13,18 +13,18 @@ page_icon: img/Install4.jpg Download the most recent Debian (.deb) package for your platform: -- [Raspberry Pi OS bookworm (aarch64) v1.4.83](https://github.com/rerdavies/pipedal/releases/download/v1.4.83/pipedal_1.4.83_arm64.deb) -- [Ubuntu 24.x (aarch64) v1.4.83](https://github.com/rerdavies/pipedal/releases/download/v1.4.83/pipedal_1.4.83_arm64.deb) -- [Ubuntu 24.x (amd64) v1.4.83](https://github.com/rerdavies/pipedal/releases/download/v1.4.83/pipedal_1.4.83_amd64.deb) +- [Raspberry Pi OS bookworm (aarch64) v1.4.85](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_arm64.deb) +- [Ubuntu 24.x (aarch64) v1.4.85](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_arm64.deb) +- [Ubuntu 24.x (amd64) v1.4.85](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_amd64.deb) -Version 1.4.83 has been tested on Raspberry Pi OS bookworm, Ubuntu 24.04 (amd64), and Ubuntu 24.10 (aarch64). Download the appropriate package for your platform, and install using the following procedure: +Version 1.4.85 has been tested on Raspberry Pi OS bookworm, Ubuntu 24.04 (amd64), and Ubuntu 24.10 (aarch64). Download the appropriate package for your platform, and install using the following procedure: ``` sudo apt update sudo apt upgrade cd ~/Downloads - sudo apt-get install ./pipedal_1.4.83_arm64.deb + sudo apt-get install ./pipedal_1.4.85_arm64.deb ``` You MUST use `apt-get`. `apt` will not install downloaded packages; and `dpkg -i` will not install dependencies. diff --git a/docs/download.md b/docs/download.md index 7cd8397..76088bd 100644 --- a/docs/download.md +++ b/docs/download.md @@ -4,9 +4,9 @@ Download the most recent Debian (.deb) package for your platform: -- [Raspberry Pi OS bookworm (aarch64) v1.4.83 Beta](https://github.com/rerdavies/pipedal/releases/download/v1.4.83/pipedal_1.4.83_arm64.deb) -- [Ubuntu 24.x (aarch64) v1.4.83 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.83/pipedal_1.4.83_arm64.deb) -- [Ubuntu 24.x (amd64) v1.4.83 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.83/pipedal_1.4.83_amd64.deb) +- [Raspberry Pi OS bookworm (aarch64) v1.4.85 Beta](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_arm64.deb) +- [Ubuntu 24.x (aarch64) v1.4.85 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_arm64.deb) +- [Ubuntu 24.x (amd64) v1.4.85 Alpha](https://github.com/rerdavies/pipedal/releases/download/v1.4.85/pipedal_1.4.85_amd64.deb) Install the package by running @@ -14,7 +14,7 @@ Install the package by running ``` sudo apt update cd ~/Downloads - sudo apt-get install ./pipedal_1.4.83_arm64.deb + sudo apt-get install ./pipedal_1.4.85_arm64.deb ``` You MUST use `apt-get` to install the package. `apt install` will NOT install the package correctly. The message about missing permissions given by `apt-get` is expected, and can be safely ignored. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobAmp.so b/lv2/aarch64/ToobAmp.lv2/ToobAmp.so index e0d9698..896f8a8 100644 Binary files a/lv2/aarch64/ToobAmp.lv2/ToobAmp.so and b/lv2/aarch64/ToobAmp.lv2/ToobAmp.so differ diff --git a/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so b/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so index a78d9a8..c2a382e 100644 Binary files a/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so and b/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so differ diff --git a/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl b/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl index 67ede49..7f1520c 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl @@ -83,6 +83,26 @@ simultaneously on a Pi 5. N100 micro PCs could presumably do even better. Howeve Users have reported success using NAM on Raspberry Pi 3 devices, but this is not recommended (or really supported), as CPU usage is very high on a Raspberry Pi 3. If you are interested in profiling your own amps and effect pedals, please visit https://www.tone3000.com/capture +When the Threaded control is on, neural amp modelling calculations are run on a separate thread from the +real-time audio thread. This introduces one extra audio buffer of latency, but allows the plugin to make full +use of all availble processor cores when running more than one instance of TooB Neural Amp Modeler. As a result, +you can run more instances of TooB Neural Amp Modeler than you ordinarily could. On a Pi 5, you can run up to 8 +instances of TooB Neural Amp Modeler in a single preset (as opposed to four or five), and up to 5 instances of TooB +Neural Amp Modeler (as opposed to two or three). + +You need to check that the PiPedal server's CPU is not temperature throttling +when using this feature. If the CPU temperature exceeds 80 degrees Celcius on a Raspberry Pi, the CPU clock rate is reduced, and +the performance of the plugins will be affected. Having a good heat sink, or active cooling system is recommended when using this feature. +PiPedal displays the current CPU temperature in a status message at the bottom of the display (unless you've turned +that off in settings), and also displays the current CPU temperature in the status message found at the top +of the Settings page. The exact temperature at which the CPU starts to throttle varies from computer to computer. If +you are running on a system that is not a Raspberry Pi, please consult your manufacturer's help documentation +to find out what temperature heat throttling starts at on your particular computer, if you really need to know +what the threshold is; but the effect on performance is pretty obvious when heat throttling does start. + +Note that heat throttling is done to protect your processor from permanent damage due to overheating; but there's no real risk of actual +damage, since heat throttling thresholds are set well below the point at which damage occurs. + TooB Neural Amp Modeler contains code optimizations that allow use of a third model on Raspberry PI 4 devices. These optimizations were offered to the upstream NAM project, but we recommended that they not be merged into upstream sources, because they significantly affect maintainability of the codebase. and the performance increase they provide (about 30%) is really only @@ -90,7 +110,8 @@ relevant on Raspberry PI 4-class devices. If you are interested in these optimiz project sources on GitHub. TooB Neural Amp Modeler uses code from the NeuralAmp Modeler Core project (https://www.neuralampmodeler.com/). The TooB team wishes -to express gratitude to Steven Atkinson for making this revolutionary technology available as open-source code. +to express gratitude to Steven Atkinson for making this revolutionary technology available as open-source code. This is groundbreaking +technology that changes everything; and work that would be impossible to replicate without the work that Steven has done. Code from the the NeuralAmpModelerCore project (https://github.com/sdatkinson/NeuralAmpModelerCore) is provided under the following license. @@ -180,6 +201,21 @@ SOFTWARE. lv2:ControlPort ; lv2:index 3; + lv2:symbol "buffer" ; + lv2:name "Threaded"; + lv2:default 0.0 ; + lv2:minimum 0.0; + lv2:maximum 1.0; + lv2:portProperty lv2:toggled; + rdfs:comment "Run computation on a separate thread. This allows more instances of NAM to run simultaneously, but adds one extra audio buffer of latency."; + rdfs:comment "Output gain"; + + ], + [ + a lv2:InputPort , + lv2:ControlPort ; + + lv2:index 4; lv2:symbol "gate" ; lv2:name "Noise Gate"; lv2:default -100.0 ; @@ -198,7 +234,7 @@ SOFTWARE. a lv2:OutputPort , lv2:ControlPort ; - lv2:index 4; + lv2:index 5; lv2:symbol "gateOut" ; lv2:name "\u00A0"; lv2:default 0.0; @@ -212,7 +248,7 @@ SOFTWARE. a lv2:InputPort , lv2:ControlPort ; - lv2:index 5 ; + lv2:index 6 ; lv2:symbol "toneStack" ; lv2:name "Type"; lv2:default 3.0 ; @@ -241,7 +277,7 @@ SOFTWARE. a lv2:InputPort , lv2:ControlPort ; - lv2:index 6; + lv2:index 7; lv2:symbol "bass" ; lv2:name "Bass"; lv2:default 5.0; @@ -255,7 +291,7 @@ SOFTWARE. a lv2:InputPort , lv2:ControlPort ; - lv2:index 7; + lv2:index 8; lv2:symbol "mid" ; lv2:name "Mid"; lv2:default 5.0; @@ -268,7 +304,7 @@ SOFTWARE. a lv2:InputPort , lv2:ControlPort ; - lv2:index 8; + lv2:index 9; lv2:symbol "treble" ; lv2:name "Treble"; lv2:default 5.0; @@ -280,14 +316,14 @@ SOFTWARE. [ a lv2:AudioPort , lv2:InputPort ; - lv2:index 9 ; + lv2:index 10 ; lv2:symbol "in" ; lv2:name "In" ], [ a lv2:AudioPort , lv2:OutputPort ; - lv2:index 10 ; + lv2:index 11 ; lv2:symbol "out" ; lv2:name "Out" ], @@ -299,7 +335,7 @@ SOFTWARE. lv2:designation lv2:control ; atom:supports patch:Message ; - lv2:index 11 ; + lv2:index 12 ; lv2:symbol "control" ; lv2:name "Control" ; rdfs:comment "Control" ; @@ -309,7 +345,7 @@ SOFTWARE. atom:bufferType atom:Sequence ; # atom:supports patch:Message; lv2:designation lv2:control ; - lv2:index 12; + lv2:index 13; lv2:symbol "notify" ; lv2:name "Notify" ; rdfs:comment "Notification" ; @@ -351,10 +387,9 @@ toobNam:ui pipedal_ui:frequencyPlot [ pipedal_ui:patchProperty toobNam:FrequencyResponse; - lv2:index 9 ; + lv2:index 10 ; pg:group toobNam:eqGroup ; pipedal_ui:width: 200; ] - . diff --git a/src/main.cpp b/src/main.cpp index 99c823c..7feb5aa 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -319,12 +319,19 @@ int main(int argc, char *argv[]) sigaddset(&sigSet, SIGTERM); sigaddset(&sigSet, SIGUSR1); + // block these signasl for all threads. s = pthread_sigmask(SIG_BLOCK, &sigSet, NULL); if (s != 0) { throw std::logic_error("pthread_sigmask failed."); } + // Clear any pending signals before waiting + struct timespec timeout = {0, 0}; + while (sigtimedwait(&sigSet, NULL, &timeout) > 0) { + // Consume any pending signals + } + PiPedalModel model; model.SetNetworkChangedListener( diff --git a/vg.output b/vg.output index ae1253a..fd9d5f3 100644 --- a/vg.output +++ b/vg.output @@ -1,146 +1,339 @@ -==5249== Memcheck, a memory error detector -==5249== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. -==5249== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info -==5249== Command: ./build/src/pipedald /etc/pipedal/config ./vite/dist -port 0.0.0.0:8080 -log-level debug -==5249== Parent PID: 5248 -==5249== -==5249== -==5249== HEAP SUMMARY: -==5249== in use at exit: 88,737 bytes in 474 blocks -==5249== total heap usage: 662,523 allocs, 662,049 frees, 52,720,309 bytes allocated -==5249== -==5249== 22 bytes in 1 blocks are definitely lost in loss record 11 of 102 -==5249== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==5249== by 0x61DC32F: ??? -==5249== by 0x61BFFC3: ??? -==5249== by 0x61C01DB: ??? -==5249== by 0x61BF9D7: ??? -==5249== by 0x61C0267: ??? -==5249== by 0x61C0677: ??? -==5249== by 0x61C0C1B: ??? -==5249== by 0x61C0C47: ??? -==5249== by 0x5F143DB: ??? -==5249== by 0x5F14613: ??? -==5249== by 0x6046B87: ??? -==5249== -==5249== 56 bytes in 1 blocks are definitely lost in loss record 45 of 102 -==5249== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==5249== by 0x6233FC7: ??? -==5249== by 0x6232503: ??? -==5249== by 0x6233197: ??? -==5249== by 0x6233343: ??? -==5249== by 0x6233AB7: ??? -==5249== by 0x5F14453: ??? -==5249== by 0x5F14613: ??? -==5249== by 0x6046B87: ??? -==5249== by 0x5EFD7B7: ??? -==5249== by 0x5EFE143: ??? -==5249== by 0x60467A7: ??? -==5249== -==5249== 88 bytes in 1 blocks are definitely lost in loss record 52 of 102 -==5249== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==5249== by 0x625EF8B: ??? -==5249== by 0x61CD1E7: ??? -==5249== by 0x61CD3AF: ??? -==5249== by 0x61CD46B: ??? -==5249== by 0x5F1C0E7: ??? -==5249== by 0x5F0A637: ??? -==5249== by 0x5F143AB: ??? -==5249== by 0x5F14613: ??? -==5249== by 0x6046B87: ??? -==5249== by 0x5EFD7B7: ??? -==5249== by 0x5EFE143: ??? -==5249== -==5249== 3,352 (80 direct, 3,272 indirect) bytes in 1 blocks are definitely lost in loss record 89 of 102 -==5249== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==5249== by 0x6235507: ??? -==5249== by 0x61BFFEB: ??? -==5249== by 0x61C01DB: ??? -==5249== by 0x61BF9D7: ??? -==5249== by 0x61C0267: ??? -==5249== by 0x61C0677: ??? -==5249== by 0x61C0C1B: ??? -==5249== by 0x61C0C47: ??? -==5249== by 0x5F143DB: ??? -==5249== by 0x5F14613: ??? -==5249== by 0x6046B87: ??? -==5249== -==5249== 3,709 (80 direct, 3,629 indirect) bytes in 1 blocks are definitely lost in loss record 91 of 102 -==5249== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==5249== by 0x6235507: ??? -==5249== by 0x626268B: ??? -==5249== by 0x604751B: ??? -==5249== by 0x624C53B: ??? -==5249== by 0x6046AA7: ??? -==5249== by 0x6046C17: ??? -==5249== by 0x5EFD7B7: ??? -==5249== by 0x5EFE143: ??? -==5249== by 0x60467A7: ??? -==5249== by 0x1B727F: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==5249== by 0x1B7717: LocaleImpl::GetCollator() (Locale.cpp:444) -==5249== -==5249== 3,950 (56 direct, 3,894 indirect) bytes in 1 blocks are definitely lost in loss record 92 of 102 -==5249== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==5249== by 0x625EF8B: ??? -==5249== by 0x624BE7B: ??? -==5249== by 0x60460BF: ??? -==5249== by 0x6046C0B: ??? -==5249== by 0x5EFD7B7: ??? -==5249== by 0x5EFE143: ??? -==5249== by 0x60467A7: ??? -==5249== by 0x1B727F: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==5249== by 0x1B7717: LocaleImpl::GetCollator() (Locale.cpp:444) -==5249== by 0x156B67: main (main.cpp:303) -==5249== -==5249== 4,264 bytes in 1 blocks are definitely lost in loss record 99 of 102 -==5249== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==5249== by 0x625EFDF: ??? -==5249== by 0x61C063F: ??? -==5249== by 0x61C0C1B: ??? -==5249== by 0x61C0C47: ??? -==5249== by 0x5F143DB: ??? -==5249== by 0x5F14613: ??? -==5249== by 0x6046B87: ??? -==5249== by 0x5EFD7B7: ??? -==5249== by 0x5EFE143: ??? -==5249== by 0x60467A7: ??? -==5249== by 0x1B727F: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==5249== -==5249== 5,804 (256 direct, 5,548 indirect) bytes in 1 blocks are definitely lost in loss record 100 of 102 -==5249== at 0x48850C8: malloc (vg_replace_malloc.c:381) -==5249== by 0x625EF8B: ??? -==5249== by 0x5F143CF: ??? -==5249== by 0x5F14613: ??? -==5249== by 0x6046B87: ??? -==5249== by 0x5EFD7B7: ??? -==5249== by 0x5EFE143: ??? -==5249== by 0x60467A7: ??? -==5249== by 0x1B727F: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) -==5249== by 0x1B7717: LocaleImpl::GetCollator() (Locale.cpp:444) -==5249== by 0x156B67: main (main.cpp:303) -==5249== -==5249== 7,733 bytes in 276 blocks are definitely lost in loss record 101 of 102 -==5249== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) -==5249== by 0x5912A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==5249== by 0x5912A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==5249== by 0x590DA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) -==5249== by 0x470DE3: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:831) -==5249== by 0x49D8F7: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) -==5249== by 0x49A61F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) -==5249== by 0x496C5F: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) -==5249== by 0x48F12B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) -==5249== by 0x488A3B: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) -==5249== by 0x482803: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) -==5249== by 0x47E363: std::shared_ptr std::make_shared(pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:1010) -==5249== -==5249== LEAK SUMMARY: -==5249== definitely lost: 12,635 bytes in 284 blocks -==5249== indirectly lost: 16,343 bytes in 30 blocks -==5249== possibly lost: 0 bytes in 0 blocks -==5249== still reachable: 59,759 bytes in 160 blocks -==5249== suppressed: 0 bytes in 0 blocks -==5249== Reachable blocks (those to which a pointer was found) are not shown. -==5249== To see them, rerun with: --leak-check=full --show-leak-kinds=all -==5249== -==5249== For lists of detected and suppressed errors, rerun with: -s -==5249== ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0) +==587874== Memcheck, a memory error detector +==587874== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. +==587874== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info +==587874== Command: ./build/src/pipedald /etc/pipedal/config ./vite/dist -port 0.0.0.0:8080 -log-level debug +==587874== Parent PID: 587873 +==587874== +==587874== +==587874== HEAP SUMMARY: +==587874== in use at exit: 96,771 bytes in 635 blocks +==587874== total heap usage: 1,049,648 allocs, 1,049,013 frees, 168,645,673 bytes allocated +==587874== +==587874== 22 bytes in 1 blocks are definitely lost in loss record 11 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x61CC32F: ??? +==587874== by 0x61AFFC3: ??? +==587874== by 0x61B01DB: ??? +==587874== by 0x61AF9D7: ??? +==587874== by 0x61B0267: ??? +==587874== by 0x61B0677: ??? +==587874== by 0x61B0C1B: ??? +==587874== by 0x61B0C47: ??? +==587874== by 0x5F043DB: ??? +==587874== by 0x5F04613: ??? +==587874== by 0x6036B87: ??? +==587874== +==587874== 32 bytes in 1 blocks are definitely lost in loss record 19 of 117 +==587874== at 0x4886B58: operator new[](unsigned long) (vg_replace_malloc.c:640) +==587874== by 0x13E98F13: toob::WavReader::ReadData() (WavReader.cpp:399) +==587874== by 0x13E9900F: toob::WavReader::Read(toob::AudioData&) (WavReader.cpp:415) +==587874== by 0x13E99097: toob::WavReader::Load(std::filesystem::__cxx11::path const&) (WavReader.cpp:431) +==587874== by 0x13E7E5BF: toob::ToobConvolutionReverbBase::LoadWorker::LoadFile(std::filesystem::__cxx11::path const&, float) (ToobConvolutionReverb.cpp:824) +==587874== by 0x13E7EA9F: toob::ToobConvolutionReverbBase::LoadWorker::OnWork() (ToobConvolutionReverb.cpp:884) +==587874== by 0x13DC564B: lv2c::lv2_plugin::Lv2Plugin::WorkerAction::Work(LV2_Worker_Status (*)(void*, unsigned int, void const*), void*) (Lv2Plugin.cpp:372) +==587874== by 0x13DC6DBB: lv2c::lv2_plugin::Lv2Plugin::OnWork(LV2_Worker_Status (*)(void*, unsigned int, void const*), void*, unsigned int, void const*) (Lv2Plugin.hpp:323) +==587874== by 0x13DC47B7: lv2c::lv2_plugin::Lv2Plugin::work(void*, LV2_Worker_Status (*)(void*, unsigned int, void const*), void*, unsigned int, void const*) (Lv2Plugin.cpp:85) +==587874== by 0x3AB21F: pipedal::Worker::RunBackgroundTask(unsigned long, unsigned char*) (Worker.cpp:330) +==587874== by 0x3AAC8F: pipedal::HostWorkerThread::ThreadProc() (Worker.cpp:236) +==587874== by 0x3AAE83: pipedal::HostWorkerThread::StartThread()::{lambda()#1}::operator()() const (Worker.cpp:259) +==587874== +==587874== 43 bytes in 1 blocks are definitely lost in loss record 30 of 117 +==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) +==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x3D4E7B: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:209) +==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) +==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) +==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==587874== by 0x485247: std::shared_ptr::shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr.h:464) +==587874== +==587874== 48 bytes in 2 blocks are definitely lost in loss record 42 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x4B67D9B: lilv_node_duplicate (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) +==587874== by 0x4B707C7: lilv_world_get (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) +==587874== by 0x3D5083: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:230) +==587874== by 0x3D4877: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) +==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) +==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) +==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==587874== +==587874== 48 bytes in 2 blocks are definitely lost in loss record 43 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x4B67D9B: lilv_node_duplicate (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) +==587874== by 0x4B707C7: lilv_world_get (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) +==587874== by 0x3D50B3: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:231) +==587874== by 0x3D4877: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) +==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) +==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) +==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==587874== +==587874== 48 bytes in 2 blocks are definitely lost in loss record 44 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x4B67D9B: lilv_node_duplicate (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) +==587874== by 0x4B707C7: lilv_world_get (in /usr/lib/aarch64-linux-gnu/liblilv-0.so.0.24.14) +==587874== by 0x3D50EB: pipedal::ModGuiPort::ModGuiPort(pipedal::PluginHost*, LilvNodeImpl const*) (ModGui.cpp:232) +==587874== by 0x3D4877: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:170) +==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) +==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) +==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==587874== +==587874== 51 bytes in 1 blocks are definitely lost in loss record 45 of 117 +==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) +==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x3D4527: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:128) +==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) +==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) +==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==587874== +==587874== 56 bytes in 1 blocks are definitely lost in loss record 51 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x6223FC7: ??? +==587874== by 0x6222503: ??? +==587874== by 0x6223197: ??? +==587874== by 0x6223343: ??? +==587874== by 0x6223AB7: ??? +==587874== by 0x5F04453: ??? +==587874== by 0x5F04613: ??? +==587874== by 0x6036B87: ??? +==587874== by 0x5EED7B7: ??? +==587874== by 0x5EEE143: ??? +==587874== by 0x60367A7: ??? +==587874== +==587874== 57 bytes in 1 blocks are definitely lost in loss record 52 of 117 +==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) +==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x3D42B7: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:99) +==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) +==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) +==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==587874== +==587874== 61 bytes in 1 blocks are definitely lost in loss record 54 of 117 +==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) +==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x3D44BF: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:124) +==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) +==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) +==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==587874== +==587874== 62 bytes in 1 blocks are definitely lost in loss record 55 of 117 +==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) +==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x3D43EF: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:114) +==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) +==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) +==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==587874== +==587874== 62 bytes in 1 blocks are definitely lost in loss record 56 of 117 +==587874== at 0x488A1C4: realloc (vg_replace_malloc.c:1437) +==587874== by 0x5902A2B: serd_chunk_sink (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x5902A87: serd_chunk_sink_finish (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x58FDA67: serd_file_uri_parse (in /usr/lib/aarch64-linux-gnu/libserd-0.so.0.30.16) +==587874== by 0x3D4457: pipedal::ModGui::ModGui(pipedal::PluginHost*, LilvPluginImpl const*, std::__cxx11::basic_string, std::allocator > const&, LilvNodeImpl const*) (ModGui.cpp:119) +==587874== by 0x3D4F5F: pipedal::ModGui::Create(pipedal::PluginHost*, LilvPluginImpl const*) (ModGui.cpp:221) +==587874== by 0x4747B7: pipedal::Lv2PluginInfo::Lv2PluginInfo(pipedal::PluginHost*, LilvWorldImpl*, LilvPluginImpl const*) (PluginHost.cpp:1048) +==587874== by 0x49FC8B: void std::_Construct(pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (stl_construct.h:119) +==587874== by 0x49CA5F: void std::allocator_traits >::construct(std::allocator&, pipedal::Lv2PluginInfo*, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (alloc_traits.h:635) +==587874== by 0x499297: std::_Sp_counted_ptr_inplace, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace(std::allocator, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:604) +==587874== by 0x49190B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(pipedal::Lv2PluginInfo*&, std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:971) +==587874== by 0x48B37F: std::__shared_ptr::__shared_ptr, pipedal::PluginHost*, LilvWorldImpl*&, LilvPluginImpl const*&>(std::_Sp_alloc_shared_tag >, pipedal::PluginHost*&&, LilvWorldImpl*&, LilvPluginImpl const*&) (shared_ptr_base.h:1712) +==587874== +==587874== 88 bytes in 1 blocks are definitely lost in loss record 62 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x624EF8B: ??? +==587874== by 0x61BD1E7: ??? +==587874== by 0x61BD3AF: ??? +==587874== by 0x61BD46B: ??? +==587874== by 0x5F0C0E7: ??? +==587874== by 0x5EFA637: ??? +==587874== by 0x5F043AB: ??? +==587874== by 0x5F04613: ??? +==587874== by 0x6036B87: ??? +==587874== by 0x5EED7B7: ??? +==587874== by 0x5EEE143: ??? +==587874== +==587874== 176 bytes in 2 blocks are definitely lost in loss record 71 of 117 +==587874== at 0x4885828: operator new(unsigned long) (vg_replace_malloc.c:422) +==587874== by 0x27E247: void PiPedalSocketHandler::Request(char const*, NotifyAtomOutputBody const&, std::function, std::function) (PiPedalSocket.cpp:895) +==587874== by 0x270453: PiPedalSocketHandler::OnNotifyPatchProperty(long, unsigned long, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&) (PiPedalSocket.cpp:2196) +==587874== by 0x2EEB07: pipedal::PiPedalModel::MonitorPatchProperty(long, long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) (PiPedalModel.cpp:2380) +==587874== by 0x26BC57: PiPedalSocketHandler::handleMessage(int, int, std::__cxx11::basic_string, std::allocator > const&, pipedal::json_reader*) (PiPedalSocket.cpp:1161) +==587874== by 0x26EE67: PiPedalSocketHandler::onReceive(std::basic_string_view > const&) (PiPedalSocket.cpp:1855) +==587874== by 0x1F56CB: pipedal::WebServerImpl::WebSocketSession::on_message(std::weak_ptr, std::shared_ptr >) (WebServer.cpp:857) +==587874== by 0x225A2F: void std::__invoke_impl, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >(std::__invoke_memfun_deref, void (pipedal::WebServerImpl::WebSocketSession::*&)(std::weak_ptr, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr&&, std::shared_ptr >&&) (invoke.h:74) +==587874== by 0x220083: std::__invoke_result, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >::type std::__invoke, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >(void (pipedal::WebServerImpl::WebSocketSession::*&)(std::weak_ptr, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr&&, std::shared_ptr >&&) (invoke.h:96) +==587874== by 0x21ABD7: void std::_Bind, std::_Placeholder<2>))(std::weak_ptr, std::shared_ptr >)>::__call&&, std::shared_ptr >&&, 0ul, 1ul, 2ul>(std::tuple&&, std::shared_ptr >&&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (functional:484) +==587874== by 0x21496F: void std::_Bind, std::_Placeholder<2>))(std::weak_ptr, std::shared_ptr >)>::operator(), std::shared_ptr >, void>(std::weak_ptr&&, std::shared_ptr >&&) (functional:567) +==587874== by 0x20E6F3: void std::__invoke_impl, std::_Placeholder<2>))(std::weak_ptr, std::shared_ptr >)>&, std::weak_ptr, std::shared_ptr > >(std::__invoke_other, std::_Bind, std::_Placeholder<2>))(std::weak_ptr, std::shared_ptr >)>&, std::weak_ptr&&, std::shared_ptr >&&) (invoke.h:61) +==587874== +==587874== 176 bytes in 2 blocks are definitely lost in loss record 72 of 117 +==587874== at 0x4885828: operator new(unsigned long) (vg_replace_malloc.c:422) +==587874== by 0x27D5AF: void PiPedalSocketHandler::Request(char const*, pipedal::VuUpdate const&, std::function, std::function) (PiPedalSocket.cpp:895) +==587874== by 0x26F85F: PiPedalSocketHandler::OnVuMeterUpdate(std::vector > const&) (PiPedalSocket.cpp:2020) +==587874== by 0x2EB9CF: pipedal::PiPedalModel::OnNotifyVusSubscription(std::vector > const&) (PiPedalModel.cpp:1633) +==587874== by 0x35F833: AudioHostImpl::ThreadProc() (AudioHost.cpp:1465) +==587874== by 0x360063: AudioHostImpl::StartReaderThread()::{lambda()#1}::operator()() const (AudioHost.cpp:1645) +==587874== by 0x3748D7: void std::__invoke_impl(std::__invoke_other, AudioHostImpl::StartReaderThread()::{lambda()#1}&&) (invoke.h:61) +==587874== by 0x3747EB: std::__invoke_result::type std::__invoke(AudioHostImpl::StartReaderThread()::{lambda()#1}&&) (invoke.h:96) +==587874== by 0x3746EB: void std::thread::_Invoker >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (std_thread.h:252) +==587874== by 0x37465B: std::thread::_Invoker >::operator()() (std_thread.h:259) +==587874== by 0x374167: std::thread::_State_impl > >::_M_run() (std_thread.h:210) +==587874== by 0x4CBE9DB: ??? (in /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.30) +==587874== +==587874== 1,760 bytes in 20 blocks are definitely lost in loss record 98 of 117 +==587874== at 0x4885828: operator new(unsigned long) (vg_replace_malloc.c:422) +==587874== by 0x27746F: void PiPedalSocketHandler::Request(char const*, MonitorResultBody const&, std::function, std::function) (PiPedalSocket.cpp:895) +==587874== by 0x26A42F: PiPedalSocketHandler::SendMonitorPortMessage_Inner(std::shared_ptr&, float) (PiPedalSocket.cpp:996) +==587874== by 0x26A16F: PiPedalSocketHandler::SendMonitorPortMessage(std::shared_ptr&, float) (PiPedalSocket.cpp:986) +==587874== by 0x26A4C3: PiPedalSocketHandler::MonitorPort(int, MonitorPortBody&)::{lambda(long, float)#1}::operator()(long, float) const (PiPedalSocket.cpp:1047) +==587874== by 0x2B3FBF: void std::__invoke_impl(std::__invoke_other, PiPedalSocketHandler::MonitorPort(int, MonitorPortBody&)::{lambda(long, float)#1}&, long&&, float&&) (invoke.h:61) +==587874== by 0x29D0B7: std::enable_if, void>::type std::__invoke_r(PiPedalSocketHandler::MonitorPort(int, MonitorPortBody&)::{lambda(long, float)#1}&, long&&, float&&) (invoke.h:111) +==587874== by 0x28AC7B: std::_Function_handler::_M_invoke(std::_Any_data const&, long&&, float&&) (std_function.h:290) +==587874== by 0x2FC283: std::function::operator()(long, float) const (std_function.h:591) +==587874== by 0x2EBEF3: pipedal::PiPedalModel::OnNotifyMonitorPort(pipedal::MonitorPortUpdate const&) (PiPedalModel.cpp:1702) +==587874== by 0x35F7CB: AudioHostImpl::ThreadProc() (AudioHost.cpp:1454) +==587874== by 0x360063: AudioHostImpl::StartReaderThread()::{lambda()#1}::operator()() const (AudioHost.cpp:1645) +==587874== +==587874== 3,352 (80 direct, 3,272 indirect) bytes in 1 blocks are definitely lost in loss record 103 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x6225507: ??? +==587874== by 0x61AFFEB: ??? +==587874== by 0x61B01DB: ??? +==587874== by 0x61AF9D7: ??? +==587874== by 0x61B0267: ??? +==587874== by 0x61B0677: ??? +==587874== by 0x61B0C1B: ??? +==587874== by 0x61B0C47: ??? +==587874== by 0x5F043DB: ??? +==587874== by 0x5F04613: ??? +==587874== by 0x6036B87: ??? +==587874== +==587874== 3,709 (80 direct, 3,629 indirect) bytes in 1 blocks are definitely lost in loss record 104 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x6225507: ??? +==587874== by 0x625268B: ??? +==587874== by 0x603751B: ??? +==587874== by 0x623C53B: ??? +==587874== by 0x6036AA7: ??? +==587874== by 0x6036C17: ??? +==587874== by 0x5EED7B7: ??? +==587874== by 0x5EEE143: ??? +==587874== by 0x60367A7: ??? +==587874== by 0x1B6C97: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) +==587874== by 0x1B712F: LocaleImpl::GetCollator() (Locale.cpp:444) +==587874== +==587874== 3,950 (56 direct, 3,894 indirect) bytes in 1 blocks are definitely lost in loss record 106 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x624EF8B: ??? +==587874== by 0x623BE7B: ??? +==587874== by 0x60360BF: ??? +==587874== by 0x6036C0B: ??? +==587874== by 0x5EED7B7: ??? +==587874== by 0x5EEE143: ??? +==587874== by 0x60367A7: ??? +==587874== by 0x1B6C97: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) +==587874== by 0x1B712F: LocaleImpl::GetCollator() (Locale.cpp:444) +==587874== by 0x156C67: main (main.cpp:303) +==587874== +==587874== 4,264 bytes in 1 blocks are definitely lost in loss record 113 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x624EFDF: ??? +==587874== by 0x61B063F: ??? +==587874== by 0x61B0C1B: ??? +==587874== by 0x61B0C47: ??? +==587874== by 0x5F043DB: ??? +==587874== by 0x5F04613: ??? +==587874== by 0x6036B87: ??? +==587874== by 0x5EED7B7: ??? +==587874== by 0x5EEE143: ??? +==587874== by 0x60367A7: ??? +==587874== by 0x1B6C97: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) +==587874== +==587874== 5,804 (256 direct, 5,548 indirect) bytes in 1 blocks are definitely lost in loss record 114 of 117 +==587874== at 0x48850C8: malloc (vg_replace_malloc.c:381) +==587874== by 0x624EF8B: ??? +==587874== by 0x5F043CF: ??? +==587874== by 0x5F04613: ??? +==587874== by 0x6036B87: ??? +==587874== by 0x5EED7B7: ??? +==587874== by 0x5EEE143: ??? +==587874== by 0x60367A7: ??? +==587874== by 0x1B6C97: CollatorImpl::CollatorImpl(std::shared_ptr, char const*) (Locale.cpp:385) +==587874== by 0x1B712F: LocaleImpl::GetCollator() (Locale.cpp:444) +==587874== by 0x156C67: main (main.cpp:303) +==587874== +==587874== 6,080 bytes in 190 blocks are definitely lost in loss record 115 of 117 +==587874== at 0x4885828: operator new(unsigned long) (vg_replace_malloc.c:422) +==587874== by 0x361553: AudioHostImpl::MakeRealtimeSubscription(pipedal::MonitorPortSubscription const&) (AudioHost.cpp:1962) +==587874== by 0x36173B: AudioHostImpl::SetMonitorPortSubscriptions(std::vector > const&) (AudioHost.cpp:1985) +==587874== by 0x2EBC5B: pipedal::PiPedalModel::UpdateRealtimeMonitorPortSubscriptions() (PiPedalModel.cpp:1663) +==587874== by 0x2EBE0B: pipedal::PiPedalModel::UnmonitorPort(long) (PiPedalModel.cpp:1686) +==587874== by 0x2692C3: PiPedalSocketHandler::FinalCleanup() (PiPedalSocket.cpp:671) +==587874== by 0x26943F: PiPedalSocketHandler::Close() (PiPedalSocket.cpp:692) +==587874== by 0x2E556B: pipedal::PiPedalModel::Close() (PiPedalModel.cpp:155) +==587874== by 0x156ED7: main (main.cpp:418) +==587874== +==587874== 6,720 bytes in 210 blocks are definitely lost in loss record 116 of 117 +==587874== at 0x4885828: operator new(unsigned long) (vg_replace_malloc.c:422) +==587874== by 0x361553: AudioHostImpl::MakeRealtimeSubscription(pipedal::MonitorPortSubscription const&) (AudioHost.cpp:1962) +==587874== by 0x36173B: AudioHostImpl::SetMonitorPortSubscriptions(std::vector > const&) (AudioHost.cpp:1985) +==587874== by 0x2EBC5B: pipedal::PiPedalModel::UpdateRealtimeMonitorPortSubscriptions() (PiPedalModel.cpp:1663) +==587874== by 0x2EBD23: pipedal::PiPedalModel::MonitorPort(long, std::__cxx11::basic_string, std::allocator > const&, float, std::function) (PiPedalModel.cpp:1673) +==587874== by 0x26A58F: PiPedalSocketHandler::MonitorPort(int, MonitorPortBody&) (PiPedalSocket.cpp:1037) +==587874== by 0x26D6DF: PiPedalSocketHandler::handleMessage(int, int, std::__cxx11::basic_string, std::allocator > const&, pipedal::json_reader*) (PiPedalSocket.cpp:1598) +==587874== by 0x26EE67: PiPedalSocketHandler::onReceive(std::basic_string_view > const&) (PiPedalSocket.cpp:1855) +==587874== by 0x1F56CB: pipedal::WebServerImpl::WebSocketSession::on_message(std::weak_ptr, std::shared_ptr >) (WebServer.cpp:857) +==587874== by 0x225A2F: void std::__invoke_impl, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >(std::__invoke_memfun_deref, void (pipedal::WebServerImpl::WebSocketSession::*&)(std::weak_ptr, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr&&, std::shared_ptr >&&) (invoke.h:74) +==587874== by 0x220083: std::__invoke_result, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >::type std::__invoke, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr, std::shared_ptr > >(void (pipedal::WebServerImpl::WebSocketSession::*&)(std::weak_ptr, std::shared_ptr >), pipedal::WebServerImpl::WebSocketSession*&, std::weak_ptr&&, std::shared_ptr >&&) (invoke.h:96) +==587874== by 0x21ABD7: void std::_Bind, std::_Placeholder<2>))(std::weak_ptr, std::shared_ptr >)>::__call&&, std::shared_ptr >&&, 0ul, 1ul, 2ul>(std::tuple&&, std::shared_ptr >&&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (functional:484) +==587874== +==587874== LEAK SUMMARY: +==587874== definitely lost: 20,326 bytes in 445 blocks +==587874== indirectly lost: 16,343 bytes in 30 blocks +==587874== possibly lost: 0 bytes in 0 blocks +==587874== still reachable: 60,102 bytes in 160 blocks +==587874== suppressed: 0 bytes in 0 blocks +==587874== Reachable blocks (those to which a pointer was found) are not shown. +==587874== To see them, rerun with: --leak-check=full --show-leak-kinds=all +==587874== +==587874== For lists of detected and suppressed errors, rerun with: -s +==587874== ERROR SUMMARY: 23 errors from 23 contexts (suppressed: 0 from 0)