VST3/CLAP crashes on REAPER for Windows if output with WASAPI

Hi, falkTX!
I found that both VST3 and CLAP UI will crash REAPER, if I set audio output driver to WASAPI. But everything worked well with ASIO driver.
Related project: Minaton-XT
Here are backtraces:

CLAP (on create):

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffa276af633 in ntdll!RtlIsZeroMemory () from C:\WINDOWS\SYSTEM32\ntdll.dll
(gdb) bt
#0  0x00007ffa276af633 in ntdll!RtlIsZeroMemory () from C:\WINDOWS\SYSTEM32\ntdll.dll
#1  0x00007ffa276b83f2 in ntdll!RtlpNtSetValueKey () from C:\WINDOWS\SYSTEM32\ntdll.dll
#2  0x00007ffa276b86da in ntdll!RtlpNtSetValueKey () from C:\WINDOWS\SYSTEM32\ntdll.dll
#3  0x00007ffa276be361 in ntdll!RtlpNtSetValueKey () from C:\WINDOWS\SYSTEM32\ntdll.dll
#4  0x00007ffa276b8300 in ntdll!RtlpNtSetValueKey () from C:\WINDOWS\SYSTEM32\ntdll.dll
#5  0x00007ffa275dd95f in ntdll!RtlAllocateHeap () from C:\WINDOWS\SYSTEM32\ntdll.dll
#6  0x00007ffa275db44d in ntdll!RtlAllocateHeap () from C:\WINDOWS\SYSTEM32\ntdll.dll
#7  0x00007ffa276a8c38 in ntdll!RtlRegisterSecureMemoryCacheCallback () from C:\WINDOWS\SYSTEM32\ntdll.dll
#8  0x00007ffa275dd255 in ntdll!RtlAllocateHeap () from C:\WINDOWS\SYSTEM32\ntdll.dll
#9  0x00007ffa275db44d in ntdll!RtlAllocateHeap () from C:\WINDOWS\SYSTEM32\ntdll.dll
#10 0x00007ffa257e9d40 in msvcrt!malloc () from C:\WINDOWS\System32\msvcrt.dll
#11 0x00007ff9daa1642c in operator new(unsigned long long) () from C:\Sources\minaton\build\bin\minaton.clap
#12 0x00007ff9da8d26a0 in DISTRHO::PluginCLAP::createUI (isFloating=false, this=0x3369340)
    at D:/Sources/minaton/dpf/distrho/src/DistrhoPluginCLAP.cpp:1727
#13 DISTRHO::clap_gui_create (plugin=<optimized out>, api=<optimized out>, is_floating=false)
    at D:/Sources/minaton/dpf/distrho/src/DistrhoPluginCLAP.cpp:2099
#14 DISTRHO::clap_gui_create (plugin=<optimized out>, api=<optimized out>, is_floating=<optimized out>)
    at D:/Sources/minaton/dpf/distrho/src/DistrhoPluginCLAP.cpp:2092

VST3 (on destroy):

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffa276af633 in ntdll!RtlIsZeroMemory () from C:\WINDOWS\SYSTEM32\ntdll.dll
(gdb) bt
#0  0x00007ffa276af633 in ntdll!RtlIsZeroMemory () from C:\WINDOWS\SYSTEM32\ntdll.dll
#1  0x00007ffa276b83f2 in ntdll!RtlpNtSetValueKey () from C:\WINDOWS\SYSTEM32\ntdll.dll
#2  0x00007ffa276b86da in ntdll!RtlpNtSetValueKey () from C:\WINDOWS\SYSTEM32\ntdll.dll
#3  0x00007ffa276be361 in ntdll!RtlpNtSetValueKey () from C:\WINDOWS\SYSTEM32\ntdll.dll
#4  0x00007ffa275d5bf0 in ntdll!RtlGetCurrentServiceSessionId () from C:\WINDOWS\SYSTEM32\ntdll.dll
#5  0x00007ffa275d47b1 in ntdll!RtlFreeHeap () from C:\WINDOWS\SYSTEM32\ntdll.dll
#6  0x00007ffa257e9c9c in msvcrt!free () from C:\WINDOWS\System32\msvcrt.dll
#7  0x00007ff9cefd79d9 in minaton_synth::cleanup (this=0x1534b040) at D:/Sources/minaton/src/synth.cpp:78
#8  0x00007ff9cefd5cce in DISTRHO::MinatonPlugin::~MinatonPlugin (this=0x321ebe0, __in_chrg=<optimized out>)
    at D:/Sources/minaton/plugin/MinatonPlugin.cpp:45
#9  0x00007ff9cefd5d6d in DISTRHO::MinatonPlugin::~MinatonPlugin (this=0x321ebe0, __in_chrg=<optimized out>)
    at D:/Sources/minaton/plugin/MinatonPlugin.cpp:48
#10 0x00007ff9cf074ec6 in DISTRHO::PluginExporter::~PluginExporter (this=0xc7cd100, __in_chrg=<optimized out>)
    at D:/Sources/minaton/dpf/distrho/src/DistrhoPluginInternal.hpp:478
#11 DISTRHO::PluginVst3::~PluginVst3 (this=0xc7c60b0, __in_chrg=<optimized out>)
    at D:/Sources/minaton/dpf/distrho/src/DistrhoPluginVST3.cpp:694
#12 DISTRHO::ScopedPointer<DISTRHO::PluginVst3>::operator= (newObjectToTakePossessionOf=0x0, this=0x321eb88)
    at D:/Sources/minaton/dpf/distrho/extra/ScopedPointer.hpp:153
#13 DISTRHO::dpf_edit_controller::terminate (self=<optimized out>)
    at D:/Sources/minaton/dpf/distrho/src/DistrhoPluginVST3.cpp:3674

Problem still exists on recent versions of my project. Here's backtrace:
(gdb) bt
#0  0x00007ff8bce965a4 in DISTRHO::MinatonPlugin::_processAudioFrame (this=0x13ad9390, audio_l=0x13bb3130,
    audio_r=0x1442b1d0, frame_index=1972) at D:/Sources/minaton/plugin/MinatonProcess.cpp:113
#1  0x00007ff8bce95558 in DISTRHO::MinatonPlugin::run (this=0x13ad9390, inputs=0xcf9c740, outputs=0xcf9c730,
    frames=2048, midiEvents=0x31fbea0, midiEventCount=0) at D:/Sources/minaton/plugin/MinatonPlugin.cpp:154
#2  0x00007ff8bcfafad5 in DISTRHO::PluginExporter::run (this=0x31fbe30, inputs=0xcf9c740, outputs=0xcf9c730,
    frames=2048, midiEvents=0x31fbea0, midiEventCount=0)
    at D:/Sources/minaton/dpf/distrho/src/DistrhoPluginInternal.hpp:964
#3  0x00007ff8bcfaae22 in DISTRHO::PluginVst3::process (this=0x31f4de0, data=0xcf9c900)
    at D:/Sources/minaton/dpf/distrho/src/DistrhoPluginVST3.cpp:1587
#4  0x00007ff8bcfb2e23 in DISTRHO::dpf_audio_processor::process (self=0xa1aab8, data=0xcf9c900)
    at D:/Sources/minaton/dpf/distrho/src/DistrhoPluginVST3.cpp:4116

Notice param frame_index in BT frame #0. It stucks at a strange index number 1972, but audio buffer is acutally 2048.

that frame_index has nothing to do with dpf, I suspect this is a bug in the plugin.
the 1st post leads me to think it is writing out of bounds and getting memory corrupted.
try running it through valgrind, like described in https://github.com/DISTRHO/Cardinal/blob/main/docs/DEBUGGING.md#plugin-usage (but change CARLA_BRIDGE_DUMMY=30 to CARLA_BRIDGE_DUMMY=1

OK, I'll debug further.
The bug is reproducible on REAPER with Wine. When WASAPI buffer size is 2048, problem occurs.

then maybe it is an issue with the plugin with higher buffer sizes, as simple as that.
try in linux with such high buffer size too?

Sure. On REAPER for Linux, with PulseAudio & buffer size of 2048, the same problem occured.

I've found out why my plugin crashes with 2048 samples.
I implement bufferSizeChanged() so that if buffer size changes, I can reallocate my resampler buffer. But, REAPER does not invoke this method on buffer size changes.

I would be very surprised if that is the case. it is more likely that the buffer size is correct from the start, and thus never needs to change.
You can always call that manually yourself during init, like bufferSizeChanged(getBufferSize()).
Basically, that is a callback for when things change. If the initial conditions do not change, there is no callback.

and regarding your backtrace. you very much likely have corrupted memory, which invalidates any possible debug afterwards.
so you need to prevent memory from being corrupted in the first place, valgrind helps for finding where. also latest clang and gcc have built-in flags for similar things, called ASAN.

Sounds like sometimes Glibc malloc() may have bugs occasionally.

it 100% does not. otherwise all software would randomly break.
dont assume the external libs to have problems before confirming issues in the local code.
and yes, memory corruption will turn everything into undefined and weird state. you cant assume the program to continue to work in any reliable way if any of its memory gets corrupted, it is too late after that

Thanks! I checked my plugin with Valgrind, and it reported a bunch of memory leak issues.
A section of Valgrind report
Try to use PulseAudio with buffer size 2048, then load CLAPi Minaton.

[DSP] Sample rate changed: from 44100.000000 to 48000.000000
==2288== Thread 5 reaper/audio:
==2288== Conditional jump or move depends on uninitialised value(s)
==2288==    at 0x280F3097: DISTRHO::MinatonPlugin::_processAudioFrame(float*, float*, unsigned int) (MinatonProcess.cpp:65)
==2288==    by 0x280F2124: DISTRHO::MinatonPlugin::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (MinatonPlugin.cpp:156)
==2288==    by 0x280DC8C8: DISTRHO::PluginExporter::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (DistrhoPluginInternal.hpp:964)
==2288==    by 0x280DFA25: DISTRHO::PluginCLAP::process(clap_process const*) (DistrhoPluginCLAP.cpp:1077)
==2288==    by 0x280D99FC: DISTRHO::clap_plugin_process(clap_plugin const*, clap_process const*) (DistrhoPluginCLAP.cpp:2447)
==2288==    by 0xB7A998: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7C5AC9: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79B0FD: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79FB42: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72A8AE: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==
==2288== Invalid write of size 4
==2288==    at 0x280F37B2: DISTRHO::MinatonPlugin::_processAudioFrame(float*, float*, unsigned int) (MinatonProcess.cpp:113)
==2288==    by 0x280F2124: DISTRHO::MinatonPlugin::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (MinatonPlugin.cpp:156)
==2288==    by 0x280DC8C8: DISTRHO::PluginExporter::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (DistrhoPluginInternal.hpp:964)
==2288==    by 0x280DFA25: DISTRHO::PluginCLAP::process(clap_process const*) (DistrhoPluginCLAP.cpp:1077)
==2288==    by 0x280D99FC: DISTRHO::clap_plugin_process(clap_plugin const*, clap_process const*) (DistrhoPluginCLAP.cpp:2447)
==2288==    by 0xB7A998: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7C5AC9: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79B0FD: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79FB42: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72A8AE: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==  Address 0x6a39090 is 0 bytes after a block of size 4,096 alloc'd
==2288==    at 0x4841848: malloc (vg_replace_malloc.c:431)
==2288==    by 0x280F25EC: DISTRHO::MinatonPlugin::reinitResampler(unsigned int, unsigned int) (MinatonPlugin.cpp:241)
==2288==    by 0x280F24B3: DISTRHO::MinatonPlugin::sampleRateChanged(double) (MinatonPlugin.cpp:217)
==2288==    by 0x280DCBD9: DISTRHO::PluginExporter::setSampleRate(double, bool) (DistrhoPluginInternal.hpp:1032)
==2288==    by 0x280DF106: DISTRHO::PluginCLAP::activate(double, unsigned int) (DistrhoPluginCLAP.cpp:807)
==2288==    by 0x280D997A: DISTRHO::clap_plugin_activate(clap_plugin const*, double, unsigned int, unsigned int) (DistrhoPluginCLAP.cpp:2418)
==2288==    by 0xB788FB: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7E716: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7F122: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7CF0C1: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79E2A4: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x77A883: ??? (in /usr/lib/REAPER/reaper)
==2288==
==2288== Invalid write of size 4
==2288==    at 0x280F3805: DISTRHO::MinatonPlugin::_processAudioFrame(float*, float*, unsigned int) (MinatonProcess.cpp:114)
==2288==    by 0x280F2124: DISTRHO::MinatonPlugin::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (MinatonPlugin.cpp:156)
==2288==    by 0x280DC8C8: DISTRHO::PluginExporter::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (DistrhoPluginInternal.hpp:964)
==2288==    by 0x280DFA25: DISTRHO::PluginCLAP::process(clap_process const*) (DistrhoPluginCLAP.cpp:1077)
==2288==    by 0x280D99FC: DISTRHO::clap_plugin_process(clap_plugin const*, clap_process const*) (DistrhoPluginCLAP.cpp:2447)
==2288==    by 0xB7A998: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7C5AC9: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79B0FD: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79FB42: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72A8AE: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==  Address 0xa750430 is 0 bytes after a block of size 4,096 alloc'd
==2288==    at 0x4841848: malloc (vg_replace_malloc.c:431)
==2288==    by 0x280F2609: DISTRHO::MinatonPlugin::reinitResampler(unsigned int, unsigned int) (MinatonPlugin.cpp:242)
==2288==    by 0x280F24B3: DISTRHO::MinatonPlugin::sampleRateChanged(double) (MinatonPlugin.cpp:217)
==2288==    by 0x280DCBD9: DISTRHO::PluginExporter::setSampleRate(double, bool) (DistrhoPluginInternal.hpp:1032)
==2288==    by 0x280DF106: DISTRHO::PluginCLAP::activate(double, unsigned int) (DistrhoPluginCLAP.cpp:807)
==2288==    by 0x280D997A: DISTRHO::clap_plugin_activate(clap_plugin const*, double, unsigned int, unsigned int) (DistrhoPluginCLAP.cpp:2418)
==2288==    by 0xB788FB: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7E716: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7F122: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7CF0C1: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79E2A4: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x77A883: ??? (in /usr/lib/REAPER/reaper)
==2288==
==2288== Invalid read of size 4
==2288==    at 0x285366ED: linear_vari_process (src_linear.c:123)
==2288==    by 0x280F21B1: DISTRHO::MinatonPlugin::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (MinatonPlugin.cpp:171)
==2288==    by 0x280DC8C8: DISTRHO::PluginExporter::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (DistrhoPluginInternal.hpp:964)
==2288==    by 0x280DFA25: DISTRHO::PluginCLAP::process(clap_process const*) (DistrhoPluginCLAP.cpp:1077)
==2288==    by 0x280D99FC: DISTRHO::clap_plugin_process(clap_plugin const*, clap_process const*) (DistrhoPluginCLAP.cpp:2447)
==2288==    by 0xB7A998: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7C5AC9: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79B0FD: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79FB42: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72A8AE: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==  Address 0x6a39090 is 0 bytes after a block of size 4,096 alloc'd
==2288==    at 0x4841848: malloc (vg_replace_malloc.c:431)
==2288==    by 0x280F25EC: DISTRHO::MinatonPlugin::reinitResampler(unsigned int, unsigned int) (MinatonPlugin.cpp:241)
==2288==    by 0x280F24B3: DISTRHO::MinatonPlugin::sampleRateChanged(double) (MinatonPlugin.cpp:217)
==2288==    by 0x280DCBD9: DISTRHO::PluginExporter::setSampleRate(double, bool) (DistrhoPluginInternal.hpp:1032)
==2288==    by 0x280DF106: DISTRHO::PluginCLAP::activate(double, unsigned int) (DistrhoPluginCLAP.cpp:807)
==2288==    by 0x280D997A: DISTRHO::clap_plugin_activate(clap_plugin const*, double, unsigned int, unsigned int) (DistrhoPluginCLAP.cpp:2418)
==2288==    by 0xB788FB: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7E716: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7F122: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7CF0C1: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79E2A4: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x77A883: ??? (in /usr/lib/REAPER/reaper)
==2288==
==2288== Invalid read of size 4
==2288==    at 0x285366E8: linear_vari_process (src_linear.c:122)
==2288==    by 0x280F21B1: DISTRHO::MinatonPlugin::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (MinatonPlugin.cpp:171)
==2288==    by 0x280DC8C8: DISTRHO::PluginExporter::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (DistrhoPluginInternal.hpp:964)
==2288==    by 0x280DFA25: DISTRHO::PluginCLAP::process(clap_process const*) (DistrhoPluginCLAP.cpp:1077)
==2288==    by 0x280D99FC: DISTRHO::clap_plugin_process(clap_plugin const*, clap_process const*) (DistrhoPluginCLAP.cpp:2447)
==2288==    by 0xB7A998: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7C5AC9: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79B0FD: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79FB42: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72A8AE: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==  Address 0x6a39090 is 0 bytes after a block of size 4,096 alloc'd
==2288==    at 0x4841848: malloc (vg_replace_malloc.c:431)
==2288==    by 0x280F25EC: DISTRHO::MinatonPlugin::reinitResampler(unsigned int, unsigned int) (MinatonPlugin.cpp:241)
==2288==    by 0x280F24B3: DISTRHO::MinatonPlugin::sampleRateChanged(double) (MinatonPlugin.cpp:217)
==2288==    by 0x280DCBD9: DISTRHO::PluginExporter::setSampleRate(double, bool) (DistrhoPluginInternal.hpp:1032)
==2288==    by 0x280DF106: DISTRHO::PluginCLAP::activate(double, unsigned int) (DistrhoPluginCLAP.cpp:807)
==2288==    by 0x280D997A: DISTRHO::clap_plugin_activate(clap_plugin const*, double, unsigned int, unsigned int) (DistrhoPluginCLAP.cpp:2418)
==2288==    by 0xB788FB: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7E716: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7F122: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7CF0C1: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79E2A4: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x77A883: ??? (in /usr/lib/REAPER/reaper)
==2288==
==2288== Invalid read of size 4
==2288==    at 0x285367E0: linear_vari_process (src_linear.c:144)
==2288==    by 0x280F21B1: DISTRHO::MinatonPlugin::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (MinatonPlugin.cpp:171)
==2288==    by 0x280DC8C8: DISTRHO::PluginExporter::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (DistrhoPluginInternal.hpp:964)
==2288==    by 0x280DFA25: DISTRHO::PluginCLAP::process(clap_process const*) (DistrhoPluginCLAP.cpp:1077)
==2288==    by 0x280D99FC: DISTRHO::clap_plugin_process(clap_plugin const*, clap_process const*) (DistrhoPluginCLAP.cpp:2447)
==2288==    by 0xB7A998: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7C5AC9: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79B0FD: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79FB42: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72A8AE: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==  Address 0x6a3a08c is 4 bytes before a block of size 3 free'd
==2288==    at 0x484412F: free (vg_replace_malloc.c:974)
==2288==    by 0x537781E: UnknownInlinedFun (fccfg.c:1754)
==2288==    by 0x537781E: FcConfigSubstituteWithPat (fccfg.c:2158)
==2288==    by 0x54440A2: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x646227: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x647DE0: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x5447B1F: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x5447A4A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x544C690: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x5E4EB86: UnknownInlinedFun (gdkevents.c:73)
==2288==    by 0x5E4EB86: _gdk_event_emit (gdkevents.c:67)
==2288==    by 0x5E60981: _gdk_window_process_updates_recurse_helper.lto_priv.0 (gdkwindow.c:3874)
==2288==    by 0x5E64FD7: gdk_window_process_updates_internal (gdkwindow.c:4020)
==2288==    by 0x5E651F4: UnknownInlinedFun (gdkwindow.c:4215)
==2288==    by 0x5E651F4: gdk_window_process_updates_with_mode.lto_priv.0 (gdkwindow.c:4186)
==2288==  Block was alloc'd at
==2288==    at 0x4841848: malloc (vg_replace_malloc.c:431)
==2288==    by 0x4DA53EE: strdup (strdup.c:42)
==2288==    by 0x53731D3: UnknownInlinedFun (fcpat.c:103)
==2288==    by 0x53731D3: FcConfigEvaluate (fccfg.c:1240)
==2288==    by 0x5377766: UnknownInlinedFun (fccfg.c:1709)
==2288==    by 0x5377766: FcConfigSubstituteWithPat (fccfg.c:2158)
==2288==    by 0x54440A2: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x646227: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x647DE0: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x5447B1F: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x5447A4A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x544C690: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x5E4EB86: UnknownInlinedFun (gdkevents.c:73)
==2288==    by 0x5E4EB86: _gdk_event_emit (gdkevents.c:67)
==2288==    by 0x5E60981: _gdk_window_process_updates_recurse_helper.lto_priv.0 (gdkwindow.c:3874)
==2288==
==2288== Invalid read of size 4
==2288==    at 0x285366ED: linear_vari_process (src_linear.c:123)
==2288==    by 0x280F225A: DISTRHO::MinatonPlugin::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (MinatonPlugin.cpp:179)
==2288==    by 0x280DC8C8: DISTRHO::PluginExporter::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (DistrhoPluginInternal.hpp:964)
==2288==    by 0x280DFA25: DISTRHO::PluginCLAP::process(clap_process const*) (DistrhoPluginCLAP.cpp:1077)
==2288==    by 0x280D99FC: DISTRHO::clap_plugin_process(clap_plugin const*, clap_process const*) (DistrhoPluginCLAP.cpp:2447)
==2288==    by 0xB7A998: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7C5AC9: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79B0FD: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79FB42: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72A8AE: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==  Address 0xa750430 is 0 bytes after a block of size 4,096 alloc'd
==2288==    at 0x4841848: malloc (vg_replace_malloc.c:431)
==2288==    by 0x280F2609: DISTRHO::MinatonPlugin::reinitResampler(unsigned int, unsigned int) (MinatonPlugin.cpp:242)
==2288==    by 0x280F24B3: DISTRHO::MinatonPlugin::sampleRateChanged(double) (MinatonPlugin.cpp:217)
==2288==    by 0x280DCBD9: DISTRHO::PluginExporter::setSampleRate(double, bool) (DistrhoPluginInternal.hpp:1032)
==2288==    by 0x280DF106: DISTRHO::PluginCLAP::activate(double, unsigned int) (DistrhoPluginCLAP.cpp:807)
==2288==    by 0x280D997A: DISTRHO::clap_plugin_activate(clap_plugin const*, double, unsigned int, unsigned int) (DistrhoPluginCLAP.cpp:2418)
==2288==    by 0xB788FB: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7E716: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7F122: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7CF0C1: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79E2A4: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x77A883: ??? (in /usr/lib/REAPER/reaper)
==2288==
==2288== Invalid read of size 4
==2288==    at 0x285366E8: linear_vari_process (src_linear.c:122)
==2288==    by 0x280F225A: DISTRHO::MinatonPlugin::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (MinatonPlugin.cpp:179)
==2288==    by 0x280DC8C8: DISTRHO::PluginExporter::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (DistrhoPluginInternal.hpp:964)
==2288==    by 0x280DFA25: DISTRHO::PluginCLAP::process(clap_process const*) (DistrhoPluginCLAP.cpp:1077)
==2288==    by 0x280D99FC: DISTRHO::clap_plugin_process(clap_plugin const*, clap_process const*) (DistrhoPluginCLAP.cpp:2447)
==2288==    by 0xB7A998: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7C5AC9: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79B0FD: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79FB42: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72A8AE: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==  Address 0xa750430 is 0 bytes after a block of size 4,096 alloc'd
==2288==    at 0x4841848: malloc (vg_replace_malloc.c:431)
==2288==    by 0x280F2609: DISTRHO::MinatonPlugin::reinitResampler(unsigned int, unsigned int) (MinatonPlugin.cpp:242)
==2288==    by 0x280F24B3: DISTRHO::MinatonPlugin::sampleRateChanged(double) (MinatonPlugin.cpp:217)
==2288==    by 0x280DCBD9: DISTRHO::PluginExporter::setSampleRate(double, bool) (DistrhoPluginInternal.hpp:1032)
==2288==    by 0x280DF106: DISTRHO::PluginCLAP::activate(double, unsigned int) (DistrhoPluginCLAP.cpp:807)
==2288==    by 0x280D997A: DISTRHO::clap_plugin_activate(clap_plugin const*, double, unsigned int, unsigned int) (DistrhoPluginCLAP.cpp:2418)
==2288==    by 0xB788FB: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7E716: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0xB7F122: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7CF0C1: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79E2A4: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x77A883: ??? (in /usr/lib/REAPER/reaper)
==2288==
==2288== Invalid read of size 4
==2288==    at 0x285367E0: linear_vari_process (src_linear.c:144)
==2288==    by 0x280F225A: DISTRHO::MinatonPlugin::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (MinatonPlugin.cpp:179)
==2288==    by 0x280DC8C8: DISTRHO::PluginExporter::run(float const**, float**, unsigned int, DISTRHO::MidiEvent const*, unsigned int) (DistrhoPluginInternal.hpp:964)
==2288==    by 0x280DFA25: DISTRHO::PluginCLAP::process(clap_process const*) (DistrhoPluginCLAP.cpp:1077)
==2288==    by 0x280D99FC: DISTRHO::clap_plugin_process(clap_plugin const*, clap_process const*) (DistrhoPluginCLAP.cpp:2447)
==2288==    by 0xB7A998: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7C5AC9: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79B0FD: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x79FB42: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72A8AE: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==  Address 0xa75142c is 3,900 bytes inside a block of size 7,392 free'd
==2288==    at 0x4846BE0: realloc (vg_replace_malloc.c:1649)
==2288==    by 0x58999E2: ft_mem_qrealloc (ftutil.c:156)
==2288==    by 0x58B3B1C: Modify_CVT_Check.part.0.lto_priv.0 (ttinterp.c:1476)
==2288==    by 0x58A331E: UnknownInlinedFun (ttinterp.c:1469)
==2288==    by 0x58A331E: Write_CVT (ttinterp.c:1493)
==2288==    by 0x58AA9F1: UnknownInlinedFun (ttinterp.c:3101)
==2288==    by 0x58AA9F1: TT_RunIns (ttinterp.c:8136)
==2288==    by 0x5893360: UnknownInlinedFun (ttinterp.c:463)
==2288==    by 0x5893360: TT_Hint_Glyph (ttgload.c:863)
==2288==    by 0x589F51E: UnknownInlinedFun (ttgload.c:1101)
==2288==    by 0x589F51E: load_truetype_glyph.lto_priv.0 (ttgload.c:1766)
==2288==    by 0x58A4E5C: TT_Load_Glyph.lto_priv.0 (ttgload.c:2880)
==2288==    by 0x5898533: FT_Load_Glyph (ftobjs.c:1066)
==2288==    by 0x5445952: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x645598: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x645A07: ??? (in /usr/lib/REAPER/reaper)
==2288==  Block was alloc'd at
==2288==    at 0x4846BE0: realloc (vg_replace_malloc.c:1649)
==2288==    by 0x58999E2: ft_mem_qrealloc (ftutil.c:156)
==2288==    by 0x58B3B1C: Modify_CVT_Check.part.0.lto_priv.0 (ttinterp.c:1476)
==2288==    by 0x58A331E: UnknownInlinedFun (ttinterp.c:1469)
==2288==    by 0x58A331E: Write_CVT (ttinterp.c:1493)
==2288==    by 0x58AA9F1: UnknownInlinedFun (ttinterp.c:3101)
==2288==    by 0x58AA9F1: TT_RunIns (ttinterp.c:8136)
==2288==    by 0x5893360: UnknownInlinedFun (ttinterp.c:463)
==2288==    by 0x5893360: TT_Hint_Glyph (ttgload.c:863)
==2288==    by 0x589F51E: UnknownInlinedFun (ttgload.c:1101)
==2288==    by 0x589F51E: load_truetype_glyph.lto_priv.0 (ttgload.c:1766)
==2288==    by 0x58A4E5C: TT_Load_Glyph.lto_priv.0 (ttgload.c:2880)
==2288==    by 0x5898533: FT_Load_Glyph (ftobjs.c:1066)
==2288==    by 0x5445952: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x645598: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x645A07: ??? (in /usr/lib/REAPER/reaper)
==2288==
==2288== Conditional jump or move depends on uninitialised value(s)
==2288==    at 0x71E68A: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72BE30: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x8C0638: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x8C5077: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x8C7F2E: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x41ACC5: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x41F37D: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
==2288==
==2288== Conditional jump or move depends on uninitialised value(s)
==2288==    at 0x71E6C5: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72BE30: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x8C0638: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x8C5077: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x8C7F2E: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x41ACC5: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x41F37D: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
==2288==
==2288== Conditional jump or move depends on uninitialised value(s)
==2288==    at 0x72D0E5: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7290E4: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x8C0638: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x8C5077: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x8C7F2E: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x41ACC5: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x41F37D: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
==2288==
==2288== Thread 6 reaper/mediaafx:
==2288== Conditional jump or move depends on uninitialised value(s)
==2288==    at 0x71E6C5: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72BE30: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x73163F: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x6F5D9E: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
==2288==
==2288== Conditional jump or move depends on uninitialised value(s)
==2288==    at 0x71E68A: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x72BE30: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x73163F: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x6F5D9E: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
==2288==
==2288== Conditional jump or move depends on uninitialised value(s)
==2288==    at 0x72D0E5: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x730464: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x73163F: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x6F5D9E: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
==2288==

valgrind: m_mallocfree.c:279 (mk_plain_bszB): Assertion 'bszB != 0' failed.
valgrind: This is probably caused by your program erroneously writing past the
end of a heap block and corrupting heap metadata.  If you fix any
invalid writes reported by Memcheck, this assertion failure will
probably go away.  Please try that before reporting this as a bug.

host stacktrace:
==2288==    at 0x58042C9A: show_sched_status_wrk (m_libcassert.c:406)
==2288==    by 0x58042DC7: report_and_quit (m_libcassert.c:477)
==2288==    by 0x58042F6B: vgPlain_assert_fail (m_libcassert.c:543)
==2288==    by 0x5804D8C4: mk_plain_bszB (m_mallocfree.c:279)
==2288==    by 0x5804D8C4: mk_plain_bszB (m_mallocfree.c:277)
==2288==    by 0x5804D8C4: get_bszB_as_is (m_mallocfree.c:302)
==2288==    by 0x5804D8C4: is_inuse_block (m_mallocfree.c:332)
==2288==    by 0x5804D8C4: vgPlain_arena_free (m_mallocfree.c:2128)
==2288==    by 0x58004CAD: release_oldest_block (mc_malloc_wrappers.c:167)
==2288==    by 0x58004CAD: create_MC_Chunk (mc_malloc_wrappers.c:210)
==2288==    by 0x5800515F: vgMemCheck_new_block (mc_malloc_wrappers.c:386)
==2288==    by 0x580052FE: vgMemCheck_malloc (mc_malloc_wrappers.c:405)
==2288==    by 0x580A067D: do_client_request (scheduler.c:1979)
==2288==    by 0x580A067D: vgPlain_scheduler (scheduler.c:1542)
==2288==    by 0x580E587D: thread_wrapper (syswrap-linux.c:102)
==2288==    by 0x580E587D: run_a_thread_NORETURN (syswrap-linux.c:155)

sched status:
  running_tid=1

Thread 1: status = VgTs_Runnable (lwpid 2288)
==2288==    at 0x4841848: malloc (vg_replace_malloc.c:431)
==2288==    by 0x53CA8C7: UnknownInlinedFun (xcb_in.c:948)
==2288==    by 0x53CA8C7: UnknownInlinedFun (xcb_out.c:55)
==2288==    by 0x53CA8C7: UnknownInlinedFun (xcb_out.c:46)
==2288==    by 0x53CA8C7: xcb_send_request_with_fds64 (xcb_out.c:338)
==2288==    by 0x53CAA8D: xcb_send_request (xcb_out.c:359)
==2288==    by 0xC69A93B: xcb_glx_query_server_string (glx.c:1653)
==2288==    by 0x28EF36AF: __glXQueryServerString (glx_query.c:47)
==2288==    by 0x28EF48CC: UnknownInlinedFun (glxext.c:713)
==2288==    by 0x28EF48CC: glx_screen_init (glxext.c:753)
==2288==    by 0x28F11392: dri3_create_screen.lto_priv.0 (dri3_glx.c:808)
==2288==    by 0x28EF5108: UnknownInlinedFun (glxext.c:800)
==2288==    by 0x28EF5108: __glXInitialize (glxext.c:935)
==2288==    by 0x28EF5B65: glXGetFBConfigs (glxcmds.c:1460)
==2288==    by 0x28EF5C47: glXChooseFBConfig (glxcmds.c:1400)
==2288==    by 0x5A511C4: glXChooseFBConfig (libglx.c:1487)
==2288==    by 0x2817BF48: DGL::puglX11GlConfigure(DGL::PuglViewImpl*) (x11_gl.c:72)
==2288==    by 0x28177A8D: DGL::puglRealize(DGL::PuglViewImpl*) (x11.c:393)
==2288==    by 0x28123931: DGL::Window::PrivateData::initPost() (WindowPrivateData.cpp:282)
==2288==    by 0x280F1056: DISTRHO::PluginWindow::PluginWindow(DISTRHO::UI*, DISTRHO::PluginApplication&, unsigned long, unsigned int, unsigned int, double) (DistrhoUIPrivateData.hpp:201)
==2288==    by 0x280F0801: DISTRHO::UI::PrivateData::createNextWindow(DISTRHO::UI*, unsigned int, unsigned int, bool) (DistrhoUI.cpp:207)
==2288==    by 0x280F08D6: DISTRHO::UI::UI(unsigned int, unsigned int, bool) (DistrhoUI.cpp:221)
==2288==    by 0x280F9F75: DISTRHO::MinatonUI::MinatonUI() (MinatonUI.cpp:25)
==2288==    by 0x280FC625: DISTRHO::createUI() (MinatonUI.cpp:410)
==2288==    by 0x280DD458: DISTRHO::UIExporter::UIExporter(void*, unsigned long, double, void (*)(void*, unsigned int, bool), void (*)(void*, unsigned int, float), void (*)(void*, char const*, char const*), void (*)(void*, unsigned char, unsigned char, unsigned char), void (*)(void*, unsigned int, unsigned int), bool (*)(void*, char const*), char const*, void*, double, unsigned int, unsigned int, char const*) (DistrhoUIInternal.hpp:89)
==2288==    by 0x280DE102: DISTRHO::ClapUI::getSize(unsigned int*, unsigned int*) const (DistrhoPluginCLAP.cpp:290)
==2288==    by 0x280D9133: DISTRHO::clap_gui_get_size(clap_plugin const*, unsigned int*, unsigned int*) (DistrhoPluginCLAP.cpp:2130)
==2288==    by 0xB7670F: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7B422C: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7BA012: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7972E5: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x7AAA9E: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x54405D0: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x765618: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x795DF8: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x77AC38: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x407970: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x78D3C3: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x54311B5: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x5424C66: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x78B0F1: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x54311B5: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x5424C66: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x542F6CA: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x54250BC: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x5449936: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x544C80C: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x544F292: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x5431521: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x40C65D: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x4D29CCF: (below main) (libc_start_call_main.h:58)
client stack range: [0x1FFEFE5000 0x1FFF000FFF] client SP: 0x1FFEFF1A40
valgrind stack range: [0x1002CCF000 0x1002DCEFFF] top usage: 19432 of 1048576

Thread 2: status = VgTs_WaitSys syscall 230 (lwpid 2505)
==2288==    at 0x4DD7835: clock_nanosleep@@GLIBC_2.17 (clock_nanosleep.c:48)
==2288==    by 0x4DE9EF6: nanosleep (nanosleep.c:25)
==2288==    by 0x4E12978: usleep (usleep.c:31)
==2288==    by 0x10E40894: ??? (in /usr/lib/REAPER/Plugins/reaper_video.so)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
client stack range: [0x2057A000 0x20D78FFF] client SP: 0x20D78DD0
valgrind stack range: [0x1012E76000 0x1012F75FFF] top usage: 3416 of 1048576

Thread 3: status = VgTs_WaitSys syscall 7 (lwpid 2556)
==2288==    at 0x4E0559F: poll (poll.c:29)
==2288==    by 0x7A888C6: UnknownInlinedFun (poll2.h:39)
==2288==    by 0x7A888C6: poll_func (thread-mainloop.c:70)
==2288==    by 0x7A7246B: pa_mainloop_poll (mainloop.c:863)
==2288==    by 0x7A7C42B: pa_mainloop_iterate (mainloop.c:945)
==2288==    by 0x7A7C4E0: pa_mainloop_run (mainloop.c:963)
==2288==    by 0x7A8CC01: thread (thread-mainloop.c:101)
==2288==    by 0x7B05C66: internal_thread_func (thread-posix.c:81)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
client stack range: [0x2DA14000 0x2E212FFF] client SP: 0x2E212C30
valgrind stack range: [0x1015265000 0x1015364FFF] top usage: 5272 of 1048576

Thread 4: status = VgTs_WaitSys syscall 0 (lwpid 2557)
==2288==    at 0x4E05B9C: __libc_read (read.c:26)
==2288==    by 0x4E05B9C: read (read.c:24)
==2288==    by 0x7ACE4B5: UnknownInlinedFun (unistd.h:38)
==2288==    by 0x7ACE4B5: pa_read (core-util.c:434)
==2288==    by 0x7A7C0B6: UnknownInlinedFun (mainloop.c:802)
==2288==    by 0x7A7C0B6: pa_mainloop_prepare (mainloop.c:810)
==2288==    by 0x7A7C41C: pa_mainloop_iterate (mainloop.c:942)
==2288==    by 0x7A7C4E0: pa_mainloop_run (mainloop.c:963)
==2288==    by 0x7A8CC01: thread (thread-mainloop.c:101)
==2288==    by 0x7B05C66: internal_thread_func (thread-posix.c:81)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
client stack range: [0x32215000 0x32A13FFF] client SP: 0x32A13C20
valgrind stack range: [0x101556D000 0x101566CFFF] top usage: 5272 of 1048576

Thread 5: status = VgTs_WaitSys syscall 202 (lwpid 2558)
==2288==    at 0x4D8B555: __futex_lock_pi64 (futex-internal.c:180)
==2288==    by 0x4D90D5B: __pthread_mutex_cond_lock_full (pthread_mutex_lock.c:441)
==2288==    by 0x4D8DC23: __pthread_cond_wait_common (pthread_cond_wait.c:607)
==2288==    by 0x4D8DC23: pthread_cond_wait@@GLIBC_2.3.2 (pthread_cond_wait.c:618)
==2288==    by 0x7A89AAC: pa_threaded_mainloop_wait (thread-mainloop.c:216)
==2288==    by 0x7A50800: pa_simple_write (simple.c:288)
==2288==    by 0x41D1C2: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x41ADB0: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x41F37D: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
client stack range: [0x32A16000 0x33214FFF] client SP: 0x33214CC8
valgrind stack range: [0x1015781000 0x1015880FFF] top usage: 4824 of 1048576

Thread 6: status = VgTs_WaitSys syscall 202 (lwpid 2559)
==2288==    at 0x4D8B4AE: __futex_abstimed_wait_common64 (futex-internal.c:57)
==2288==    by 0x4D8B4AE: __futex_abstimed_wait_common (futex-internal.c:87)
==2288==    by 0x4D8E054: __pthread_cond_wait_common (pthread_cond_wait.c:503)
==2288==    by 0x4D8E054: pthread_cond_timedwait@@GLIBC_2.3.2 (pthread_cond_wait.c:643)
==2288==    by 0x540B7BC: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x6F5873: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
client stack range: [0x33217000 0x33A15FFF] client SP: 0x33A15C20
valgrind stack range: [0x1015A85000 0x1015B84FFF] top usage: 3536 of 1048576

Thread 7: status = VgTs_WaitSys syscall 202 (lwpid 2560)
==2288==    at 0x4D8B4AE: __futex_abstimed_wait_common64 (futex-internal.c:57)
==2288==    by 0x4D8B4AE: __futex_abstimed_wait_common (futex-internal.c:87)
==2288==    by 0x4D8E054: __pthread_cond_wait_common (pthread_cond_wait.c:503)
==2288==    by 0x4D8E054: pthread_cond_timedwait@@GLIBC_2.3.2 (pthread_cond_wait.c:643)
==2288==    by 0x540B7BC: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x6F5873: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
client stack range: [0x33A18000 0x34216FFF] client SP: 0x34216C20
valgrind stack range: [0x1015D89000 0x1015E88FFF] top usage: 3496 of 1048576

Thread 8: status = VgTs_WaitSys syscall 202 (lwpid 2561)
==2288==    at 0x4D8B4AE: __futex_abstimed_wait_common64 (futex-internal.c:57)
==2288==    by 0x4D8B4AE: __futex_abstimed_wait_common (futex-internal.c:87)
==2288==    by 0x4D8E054: __pthread_cond_wait_common (pthread_cond_wait.c:503)
==2288==    by 0x4D8E054: pthread_cond_timedwait@@GLIBC_2.3.2 (pthread_cond_wait.c:643)
==2288==    by 0x540B7BC: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x6F575C: ??? (in /usr/lib/REAPER/reaper)
==2288==    by 0x540BE2A: ??? (in /usr/lib/REAPER/libSwell.so)
==2288==    by 0x4D8E9EA: start_thread (pthread_create.c:444)
==2288==    by 0x4E12C83: clone (clone.S:100)
client stack range: [0x34219000 0x34A17FFF] client SP: 0x34A17C20
valgrind stack range: [0x101608D000 0x101618CFFF] top usage: 3264 of 1048576

Note: see also the FAQ in the source distribution.
It contains workarounds to several common problems.
In particular, if Valgrind aborted or crashed after
identifying problems in your program, there's a good chance
that fixing those problems will prevent Valgrind aborting or
crashing, especially if it happened in m_mallocfree.c.

If that doesn't help, please report this bug to: www.valgrind.org

In the bug report, send all the above text, the valgrind
version, and what OS and version you are using.  Thanks.

But now I have a better solution.
The problematic buffers are resampler input buffers, and they have the same size of host buffer. As host buffers has a bunch of common sizes (16 ~ 2048), I really don't need to reallocate my buffers all the time.
Now I prefer fixed size of my own buffer arrays, with enough size (16384). I believe this can work on almost all common hosts and DAWs.

typically you only reallocate buffers to the size that the host tells you it is going to use, the buffer size hint, but hosts can and will process with less samples sometimes (and more rarely also with more)
a very high buffer size wastes memory, but anyway that is your call and not an issue on DPF side. closing the ticket

OK, I will choose a smaller buffer size.
Many thanks!


Dev helper: clone db to dev

Regularly clone production db one-kol --> dev one-km-dev, it'll make UI development much easier.

Thanks, I'll look into it.

Cloning the production db to dev will reveal user information and all of our internal data, so I'm closing this for now.


Having problems getting this working with twitter

Hi,
I'm trying to use this to retrieve Twitter timeline data. I have an app configured under my twitter account. Using jsOAuth I get a success message back but data.text is empty. Can you assist? Here is a snippet of what I am doing (key and secret removed obviously). The consumerKey and consumerSecret values I grabbed from the OAuth settings area on my Twitter apps's detail page.
var oauthConfig = {
consumerKey: "",
consumerSecret: "",
requestTokenUrl: "https://api.twitter.com/oauth/request_token",
authorizationUrl: "https://api.twitter.com/oauth/authorize",
accessTokenUrl: "https://api.twitter.com/oauth/access_token"
};
var oauth = OAuth(oauthConfig);
function oauthSuccess(data) {
alert('Success '+data.text);
}
function oauthFailure(data) {
alert('Something bad happened!');
}
oauth.get('jsonUrl', oauthSuccess, oauthFailure);

@bytespider sorry for my ignorance, but I'm learning about OAuth and trying to use this library without success.
I created a small app to try to use this code sniped you provided in kodingen
(Copy and paste from here )
More details here and here
I asked some questions related to stackoverflow.
oauth-and-dropbox-api
and
error-origin-null-is-not-allowed-by-access-control-allow-origin-in-jsoauth
In the openAuthoriseWindow function the value of url is: "https://api.twitter.com/oauth/authorize?"
Thanks for the help!

AJAX requests from browsers violates the cross domain origin security built into browsers. There is a policy called CORS which would let you do cross origin AJAX.
jsOAuth was designed for using in client side applications, namely appcelerator titanium, adobe air and phonegap. It can also be use in browser plugins.
Move your code into a browser plugin if you can. Or if you have the time, look into Appcelerator Titanium and create an app.
Hope this helps.
On 3 Jan 2012, at 12:23 AM<EMAIL_ADDRESS>wrote:

@bytespider sorry for my ignorance, but I'm learning about OAuth and trying to use this library without success.
I created a small app to try to use this code sniped you provided in kodingen
(Copy and paste from here )
More details here and here
I asked some questions related to stackoverflow.
oauth-and-dropbox-api
and
error-origin-null-is-not-allowed-by-access-control-allow-origin-in-jsoauth
In the openAuthoriseWindow function the value of url is: "https://api.twitter.com/oauth/authorize?"
Thanks for the help!

Reply to this email directly or view it on GitHub:
https://github.com/bytespider/jsOAuth/issues/19#issuecomment-3335222

Disabling some options of the browser with --disable-web-security,  --allow-file-access-from-files and --allow-file-access I managed to make it work !
Now my problem is use this library with "non-PIN" mode.
$("button").click(function(){
    oauth.fetchRequestToken(openAuthoriseWindow, failureHandler);
});

openAuthoriseWindow = function(url) {
    var wnd = window.open(url, 'authorise');
    //What should I do here?
}

failureHandler = function(data) {
    console.error(data);
}

I read this article but I'm still a little confused
Note: I know jsOAuth was designed for client side applications, but I'm just learning about twitter API and OAuth.

Sorry, I had to assume you were trying to use it for a website as I comes up time and time again despite the documentation and read me stating otherwise.
There is only 2 ways to disable PIN based auth.

Use the xAuth component of twitter which allows you to send the users login credentials. This however requires approval from Twitter.
Use a callback url with which you can pass the tokens back into jsOAuth to continue. This however makes things complicated and thus has not been done by many (if at all).

There is a hack you can attempt to use if you really must remove PIN auth, which loosely involves screen scraping the auth window popup and closing it and then setting it using setVerifier. I have achieved this previously by setting a timer at intervals to check for the div the PIN code is in then removing the timer once its found.
The article you mentioned by Libby is for use with PhoneGap and Child browser.
Hope this helps you move forward.
--
Rob Griffiths
Twitter: @bytespider
Google+: http://bytespider.eu/+
Github: https://github.com/bytespider
bytespider.euSent with Sparrow (http://www.sparrowmailapp.com/?sig)
On Tuesday, 3 January 2012 at 12:52, Riderman wrote:

Disabling some options of the browser with --disable-web-security, --allow-file-access-from-files and --allow-file-access I managed to make it work !
Now my problem is use this library with "non-PIN" mode.
$("button").click(function(){
 oauth.fetchRequestToken(openAuthoriseWindow, failureHandler);
});

openAuthoriseWindow = function(url) {
 var wnd = window.open(url, 'authorise');
 //What should I do here?
}

failureHandler = function(data) {
 console.error(data);
}

I read this article but I'm still a little confused
Note: I know jsOAuth was designed for client side applications, but I'm just learning about twitter API and OAuth.

Reply to this email directly or view it on GitHub:
https://github.com/bytespider/jsOAuth/issues/19#issuecomment-3339425

At this point it looks like you are on the right track.
I'd suggest having a function in your code that is launched on document ready that looks for the token in the URL and then uses postMessage to tell the other window what to do then close itself. https://developer.mozilla.org/en/DOM/window.postMessage
--
Rob Griffiths
Twitter: @bytespider
Google+: http://bytespider.eu/+
Github: https://github.com/bytespider
bytespider.euSent with Sparrow (http://www.sparrowmailapp.com/?sig)
On Tuesday, 3 January 2012 at 13:35, Riderman wrote:

I understand, some examples using callback url?
I did some tests but I'm dubious about how to call a javascript function in the callback url
See my tests
When you click Connect to twitter, the login screen opens, then the Twitter authorize APP and after he simply calls the callback URL.
I would like to close this window and call a javascript function on the page that originated.
oauth = OAuth({
 consumerKey: srv.key,
 consumerSecret: srv.secret,
 requestTokenUrl: srv.request_token,
 authorizationUrl: srv.authorize,
 accessTokenUrl: srv.access_token,
 callbackUrl: "http://ridermansb.kodingen.com/twitter.html"
 });

Screenshots
I took some Screenshots will explain better:

after...

Sorry bothering you so much, I do not know where to turn.
Thanks for your help!

Reply to this email directly or view it on GitHub:
https://github.com/bytespider/jsOAuth/issues/19#issuecomment-3339858

You shouldn't need the token key or secret as the request token key and secret were already collected. You just need to set the PIN and request your access token.
window.setVerifier = function(verifier)  {
    oauth.setVerifier(verifier);

    // continue the flow by fetching a access token
    oauth.fetchAccessToken(getTwittData, failureHandler);
}

I'd consider it a good idea to use a cookie or local storage to flag the fact you are waiting for a verifier PIN request and clear it once you have it, just as a little hacking protection.

Looking at this, its exactly what I would have done. You can examine the local storage in chrome developer tools. Make sure if saved into there.
On 5 Jan 2012, at 05:02 PM<EMAIL_ADDRESS>wrote:

Need to store the authentication information so that the user does not need to authenticate yourself every time you enter the page.
Any idea how I do this?
I tried to do the following:
After you authorize my APP, I put the verifier code using localStorage:
window.setAccessToken = function(token, verifier)  {
   oauth.setVerifier(verifier);
   if (localStorage != 'undefined') {
       localStorage.setItem("verifier", verifier);
   }
   oauth.fetchAccessToken(currentUser, failureHandler);
}

When the page is loaded:
var storedVerifier = localStorage.getItem("verifier");
if (storedVerifier) {
   oauth.setVerifier(storedVerifier);
}
//Verify Auth
oauth.getJSON("https://api.twitter.com/1/account/verify_credentials.json", showUser, failureHandlerConnect);

But nothing happens!
Problem
After the first authentication, the user would not need to authorize my app over every time the page is reloaded.

Reply to this email directly or view it on GitHub:
https://github.com/bytespider/jsOAuth/issues/19#issuecomment-3372530

Sorry, yes you need to save the token and token secret then reload them with setAccessToken(token, token_secret).
On 5 Jan 2012, at 05:23 PM<EMAIL_ADDRESS>wrote:

The value seems to be right!
According to my tests .. loading the page the first time nothing happens.
After log in, the token and verifier are saved in localStorage.
On the next page load, the values are retrieved normally.
I wonder if it would be necessary to save the "token" as well, something like:
window.setAccessToken = function(token, verifier)  {
   oauth.setVerifier(verifier);
   if (localStorage != 'undefined') {
       localStorage.setItem("verifier", verifier);
       localStorage.setItem("token", token);
   }
   oauth.fetchAccessToken(currentUser, failureHandler);
}

But on page load, which would use this value?
var storedVerifier = localStorage.getItem("verifier");
var token = localStorage.getItem("token");
if (storedVerifier) {
   oauth.setVerifier(storedVerifier);
       //AND TOKEN ??    oauth.setAccessToken(??) ???
}

Reply to this email directly or view it on GitHub:
https://github.com/bytespider/jsOAuth/issues/19#issuecomment-3372889

Okay, looks like you're storing the wrong things. You need to use getAccessToken inside your fetchAccessToken callback to get the access token key and secret and store those. I'm away from a computer right now and will reply with code later if you haven't resolved your issue.
On 5 Jan 2012, at 05:41 PM<EMAIL_ADDRESS>wrote:

What am I doing wrong?
$(document).ready(function() {

   oauth = OAuth({
       consumerKey: srv.key,
       consumerSecret: srv.secret,
       requestTokenUrl: srv.request_token,
       authorizationUrl: srv.authorize,
       accessTokenUrl: srv.access_token,
       callbackUrl: "--My-URL-Callback"
   });

   var storedVerifier = localStorage.getItem("verifier");
   var token = localStorage.getItem("token");
   if (storedVerifier) {
       oauth.setVerifier(storedVerifier);
       oauth.setAccessToken(token, storedVerifier);
   }

   oauth.getJSON("https://api.twitter.com/1/account/verify_credentials.json", showUser, failureHandlerConnect);
}

Reply to this email directly or view it on GitHub:
https://github.com/bytespider/jsOAuth/issues/19#issuecomment-3373199

Congratulations. Im pleased it all worked out for you.


No special treatment for test framework

Based on top of

#154
#155

As discussed with @apelisse .
[closes #152]

Thanks for your comments!
There are a couple of things I'd like to discuss because I am not sure what you mean and/or I am not sure if I understand things correctly:

I have the feeling that if Fixtures wasn't keeping everything together, it would fall apart, which worries me a little bit.

I am not sure what you picture the purpose f the Fixtrues. From my point of view, that's the thing that brings up the whole testing framework, you give it a path to an Etcd & and APIServer and it knows how to run those. For users of the Fixtures everything is hidden for them, except (for now, in future more such things ...) the APIServer's URL they can test their client against.
So, the whole purpose of the Fixtures is keeping everything together.

I was going to note on the other commit before that I was a little bit concerned about the handling of configurations here, I'm not sure I agree with the direction.

Some reasoning why I handed in the config on the Start and not on construction time can be found in the other comment. Having said that, I am fine with pushing the configuration handling back to the constructors. To make things nicer, I introduced config objects.
To be honest, I am not entirely sure if that is more the direction you want to go ... ?
Would be great if we could discuss those, and any more comments you might have on that PR!
Thanks!

OK I think this is better, I like the configuration objects much better.
I'll get that merged, but I'll leave that here for future references:

I think the Fixture is doing to much, and I'd rather live in a world where it doesn't exist at all, because it's not needed.
In order to do that, I think we would have to improve the interface of the APIServer and Etcd server a little bit. Interfaces are not bad per-se but:

Existing configuration requires all values to be specified, I think it'd be nice to have sensible defaults,
Configuring the binaries path is kind of awkward and is not super easy to manage. I'm not sure how we could improve that, but I'm sure we can make that more composable.

We will certainly want something like DefaultControlPlane (or Fixture to keep the current naming), but I think this should only be an after-thought.

// I want default behaviors
APIServer{}.Start()
Etcd{}.Start()
// Yay!

// I want non-default behavior:
APIServer{
   SomeFake: MyFake,
   SomeConfig: Config,
   APIServerBinary: BinaryFinder("KUBETEST_APISERVER_BINARY"),
}.Start()
Etcd{
   // Other config
}.Start()

Thanks for the comments @apelisse !
We've opened issues for sane 0-value behaviour: #161, #162, and #163. Getting sane 0-value behaviour for Etcd and Fixtures (#161 and #163) seems straightforward. Getting sane 0-value behaviour for APIServer (#162) seems to us to drive to the heart of your previous suggestions about making the dependency on Etcd more explicit. It also seems to us to be potentially a little trickier, with trade-offs for things like start-times and consistency of approach among our various fixtures. We'll get started on #161 and #163, and would love to chat about #162 in more detail if you're interested.

Thank you guys! Happy to see the go test ./... back to normal :-)


Implement persistent HTLC expiry decayed Sphinx packet replay protection

Issues
Our implementation of Lighting's onion routing protocol critically depends on proper replay protection in order to deliver on its privacy guarantees. Otherwise, an attacker can inject a prior HTLC into the network to attempt to re-trace its path in the case it has compromised one or more nodes within a potential path.
Currently, we implement a basic version of replay protection backed by non-persistent storage within the sphinx.Router struct. This insufficient as if the daemon restart, then it will be susceptible to propagated replays as it's forgotten all the prior shared secrets. Additionally, as is now this storage is never reclaimed. We can reclaim this storage as HTLC's have a set expiration date, past that expiration date we no longer need to remember the shared secret once an HTLC as expired as we'll reject it within the state machine if it's already expired.
We'll need to implement a persistent, decaying shared-secret log in order to properly implement replay protection.
Steps to Completion

[ ] Reject HTLC's which expire a period deemed too far in the future. We already ensure that they exactly meet our time lock delta parameters, but this measure will ensure that we don't even accept such HTLC's. This is critical as otherwise this presents a DoS vector against the persistent shared secret log.

[ ] Create a new on-disk data-structure implementing a persistent, decayed shared secret log. This should likely stand behind a new interface created that will replace the current sharedSecret map in the sphinx.Router.
We have two options here:

Re-use boltdb for the persistent log. A struct wrapping channeldb would implement to to-be-created interface in the lightning-onion repo. This is the easiest path forward likely but would increase write contention as we'd need an additional write for each HTLC processed, though they could be batched.
Implement an on-disk replay protection log for each channel implemented as a flat file. This would involved linearly scanning the file, but periodic checkpoints which contain skip pointers to later sections would allow searches to be short circuited.

In either case, the format of the on-disk structure would be: (sharedHash, expiryHeight). Within the sphinx.Router we'd consult this rather than the current on-disk map. Where sharedSecretHash = sha256(sharedSecret)[:20]). Rather than writing the raw shared secret to disk, we instead write a truncated sha256 hash of it. By doing this, we avoid writing sensitive data (the shared secret) to disk, and also save a bit of space by truncating to 20 bytes instead of 32 bytes.

[ ] Create a persistent goroutine that garbage collects entries within the log. When currentHeight > expiryHeight, the entry can safely be removed from the on-disk storage.

I would like to take this if that's ok


[beta] FCC Test Suite sets all checkbox'es to the left top

FCC Test Suite sets all checkbox'es to the left top
Issue Description

FCC Test Suite sets all checkbox'es to the left top with position attribute and hides it with opacity: 0
input[type=checkbox] {
    height: 24px;
    width: 25px;
    position: fixed;
    top: 7px;
    left: 20px;
    border: 1px solid black;
    opacity: 0;
    cursor: pointer;
    z-index: 99999;
}

Browser Information

Browser Name, Version:
Operating System:
Mobile, Desktop, or Tablet:

Screenshot

@Gardemarin I'm not sure I understand what you mean. Could you please clarify? :blush:
@freeCodeCamp/moderators I've never seen these test suites before. Are these the official ones that in the future will be integrated with freecodecamp.com?

@Greenheart each project now has a test-suite to make sure the user-stories are met. Ex. http://codepen.io/FCC_test_suites/pen/JbgXab

My example:
http://codepen.io/Gardemarin/pen/wgqYWZ

@dhcodes Thanks! I thought these should be integrated with freecodecamp.com - but it makes sense plan that for the upcoming multi-file editor release.
@Gardemarin I understand your issue now after experimenting a bit. But I'm not sure how to fix it :confused:

/cc @no-stack-dub-sack mind taking a look?

I'm experiencing the issue too.
It seems that all the input of type checkboxes don't have the checkbox because of the test suite.
With the test-suite imported :

Without the test-suite imported :

It seems that it's the test_suite_skeleton that causes the bug :
https://github.com/freeCodeCamp/testable-projects-fcc/blob/master/src/assets/test_suite_skeleton.js
In fact, one of the CSS rules modify all the checkboxes input input[type=checkbox],
Replace input[type=checkbox with #toggle might fix the bug.

@no-stack-dub-sack should we refactor the test suite's CSS so that none of its styles pollute a project's own CSS?

@QuincyLarson @raisedadead sorry, I missed this until now, been finding it a tad tricky to keep up with all the notifications!
Yes, this was a good catch, and @weezlo and I had been discussing a way to keep the test suite CSS from polluting the project CSS and vise versa, and I can certainly make it a bit higher priority now that they are in much more frequent use. Also, saw @thomlom's PR on the repo and am going ahead and merging it in.
I'll also open an issue there to keep track of this. Thanks for the input @thomlom & @Gardemarin!

This issue has been resolved via the above PR on the testable projects repo. Closing.


Add resursive boolean parameter

Resolves #2 .
Adds recursive parameter linked to property unpackbuild.recursive which decides if sub modules are considered or not.

@baldimir would you have time to review?


Sponge Crash

Hey sponge seems to crash on start up with thiccentities-1.3. I downgrade the mod to thiccentities-1.1 and sponge starts up fine.
Minecraft Version 1.12.2
Forge Version <IP_ADDRESS>55
Sponge Version 1.12.2-2655-7.1.0-BETA-3056 (Crashes with all different version)
All I have is the start up logo
latest.log

Having same issue server side. Server console log (no crash log)


Cosmos Staking State APR vs Stated APY vs Actual APR vs Actual APY.

Overview
When looking at the various Cosmos Staking information items, on the overview page when staking ATOM for the first time through the platform it states that the apr is 12%* (screenshot below)
But on the previous page on the Defi Earn page, it shows atom being around 17.03% APY.
If you click on the ATOM Staking on the earn page once you've staked, it shows the amount staked and the atom APR now is 17.03%.
If you check Keplr, the APR is closer to 19%~ APR.
References and additional details
see screenshots below.
Acceptance Criteria
It feels like we should be consistent all the way through on this. If we have APR in one spot we should have it in all, if we have APY in one spot we should have it all.
Not sure what the lift to convert everything for cosmos APRs being brought in to APY's to match the rest of the staking opportunities, but i think we should make an effort to do so.
Need By Date
No response
Screenshots/Mockups

Estimated effort
No response

@tolltalcrypto This one has both engineering and product ramifications as to why these values are different
tl;dr is the first "Earn up to x% APY" information is hardcoded and conservative, while the one in e.g Cosmos staking modal is the actual APY, network-fetched.
It will be trivial (☕ time) to change, this will just have to be changed to the same dynamic data we use in e.g DeFi:
https://github.com/shapeshift/web/blob/b3644065e3a650acf1866aa165d4d6cd6f2fb6a0/src/plugins/cosmos/components/modals/Staking/views/GetStarted/GetStarted.tsx#L48-L51
The question for @shapeshift/product is, do we want to use the dynamic APY data for the "Earn up to" copy? Or do we still want to keep the conservative, hardcoded copy, and change it over time?

Thanks @gomesalexandre I just noticed it and figured I'd bring it up as I would like to see us be consistent at least throughout a flow.
Is a calc to turn apr into APY able to be done and applied to other IBC chains that calculate their staking rewards in APR moving forward to "standardize" if that's what we want to do? (probably a product thing again obviously)

Is a calc to turn apr into APY able to be done and applied to other IBC chains that calculate their staking rewards in APR moving forward to "standardize" if that's what we want to do? (probably a product thing again obviously)

That's a good point! The current logic we have basically considers APR and APY to be the same, so as rightly noticed, what we show as "APY" in DeFi is actually the APR data. We could write some small utils that would go from one to the other and that would be fairly low effort, so that what we show as APY is really APY.
I'm not sure about the product value, as the difference should be minimal (far from the 5ish percent different from these screenshots), but if that's something we want for consistency, happy to spec it!

Another one for @shapeshift/product: do we want to change the "Estimated returns" copy to "Actual returns" in the Cosmos staking modal, given we can get the actual APY vs. the hardcoded one? See:
https://github.com/shapeshift/web/issues/2111#issuecomment-1176617590


Publish security audit

We have a new security audit ready to make public in https://metamask.io/security/
- Cure53 - March 2023 - [Report](https://metamask.io/files/key-tree-audit-report.pdf)
I'm attaching the PDF to this ticket. Please, store it in the proper place.
PDF: MM-02-report.pdf

Thank you @jlazoff


filesizeformat dont work properly.

Wrong results:
Example:
value 300000 (bytes) --> result 0.3 kB --> expected 300.0 kB
value 3000000 --> result 0.0 MB --> expected 3.0 MB

Actually the unittest itself is wrong, I compared the implementation with the Django one and found that the binary calculation was indeed wrong.  This was what I came up with: http://paste.pocoo.org/show/489117/
This actually is a mix with https://github.com/mitsuhiko/jinja2/pull/53
@mitsuhiko - would like to get some feedback :)

And actually pushed it to my own fork ;)


Color Picker not working correctly with Touch / Stylus

Microsoft PowerToys version
0.35.0
Running as admin

[x] Yes

Area(s) with issue?
ColorPicker
Steps to reproduce

Launch color picker
Use stylus of Tablet PC to move cursor

✔ Expected Behavior
The overlay should move the same way as if using a mouse
❌ Actual Behavior
The overlay stays at the position it was launched at.
Video: https://streamable.com/9hllki
Other Software
No response

This is also not touch friendly.

Note: this is a WPF base of an app, this may be hard to get touch / pen pointers

Note: this is a WPF base of an app, this may be hard to get touch / pen pointers

Would a move to WinUI3 make the difference?

@jay-o-way maybe.  in theory, yes it should magically make stuff work

I think add a floating panel to pick colors is a good idea.

I think add a floating panel to pick colors is a good idea.

I dont know about that. I think more UI can gat in the way.
@jonaskohl previous messages stopped one year ago. Is there any change in state about this issue in the mean time?


onclick

Hi, I was wondering if the package has an option to attach callbacks and or onclick event handler?

Not out of the box for now, but noted.


Make Zenity backend optional

Saves some Rust dependencies for users who are willing to require gtk3 (the default) or who don't want message dialogs at all.

Alternatively, the zenity backend could be rewritten to spawn a background thread rather than relying on async-io, making it much lighter weight and more portable. Adaptation to futures could use something like oneshot or a trivial hand-rolled channel.

Alternatively, the zenity backend could be rewritten to spawn a background thread

Sounds like a better idea, I will do that instead in spare time.

Thanks!


Hostname in 'drasi list query' seems to be not on the same line as others

Steps to reproduce

Apply a query configuration
Run drasi list query
See the following result in the next section

Observed behavior

Desired behavior
They all need to be on the same line.
Workaround
No response
Drasi Version
edge
Operating system
macOS, Apple M1 Pro, Sequoia 15
Additional context
No response
Would you like to support us?

[X] Yes, I would like to support you

Thanks @ytimocin !

Hi @ytimocin, the fix for this has just been merged into main. Thanks!


Zope contrib AttributeError getProperty on Anonymous users

Currently the code here checks is user is None or not:
Which is good, but the 'getProperty' is not always available.
Plone/Zope has a 'Anonymous User",
(Pdb) user
<SpecialUser 'Anonymous User'>
(Pdb) user.__class__
<class 'AccessControl.users.SpecialUser'>
(Pdb) user.__class__.__module__
'AccessControl.users'
(Pdb) user.getProperty
*** AttributeError: getProperty

Looking at the code, best solution would be to check if the user obj is not an instance of AccessControl.users.SpecialUser.

Or see if it has the getProperty via a hasattr. :)

It seems the link to the code isn't visible.

https://github.com/getsentry/raven-python/blob/master/raven/contrib/zope/__init__.py#L98

sounds fair.

Even better solution:
from AccessControl.users import nobody # at top ofc
if user is not None and user != nobody:

I'll make a PR tomorrow :)

Perfect, looking forward to it :)

Closing this as the PR was merged.


python310Packages.lsassy: 3.1.3 -> 3.1.4

Description of changes
https://github.com/Hackndo/lsassy/releases/tag/v3.1.4

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 200488 run on x86_64-linux 1

3 packages built:

crackmapexec
python310Packages.lsassy
python39Packages.lsassy


Crash on load - Redundant texture list for particle modernity: salt

The game fails to load, returning the error: java.lang.IllegalStateException: Redundant texture list for particle modernity: salt
To Reproduce
Use Minecraft 1.14.4-Forge-28.1.30
Have the Modernity mod in the mods folder
Attempt to launch the game
Game crashes & you get this error.
Expected behaviour (optional)
I expected the game to make it to the title screen without crashes.
Resources (optional)
` ---- Minecraft Crash Report ----
// Hi. I'm Minecraft, and I'm a crashaholic.
Time: 10/14/19 12:16 AM
Description: Rendering overlay
java.lang.IllegalStateException: Redundant texture list for particle modernity:salt
at net.minecraft.client.particle.ParticleManager.func_215236_a(ParticleManager.java:201) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.client.particle.ParticleManager.lambda$null$0(ParticleManager.java:153) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.client.particle.ParticleManager$$Lambda$2497/894025840.run(Unknown Source) ~[?:?] {}
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1618) ~[?:1.8.0_51] {}
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1610) ~[?:1.8.0_51] {}
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_51] {}
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[?:1.8.0_51] {}
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1689) ~[?:1.8.0_51] {}
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) ~[?:1.8.0_51] {}'
'A detailed walkthrough of the error, its code path and all known details is as follows:
-- Head --
Thread: Client thread
Stacktrace:
at net.minecraft.client.renderer.GameRenderer.func_195458_a(GameRenderer.java:544)
-- Overlay render details --
Details:
Overlay name: net.minecraft.client.gui.ResourceLoadProgressGui
Stacktrace:
at net.minecraft.client.renderer.GameRenderer.func_195458_a(GameRenderer.java:544)
at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:889)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:384)
at net.minecraft.client.main.Main.main(SourceFile:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:56)
at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$346/324507700.call(Unknown Source)
at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37)
at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54)
at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72)
at cpw.mods.modlauncher.Launcher.run(Launcher.java:81)
at cpw.mods.modlauncher.Launcher.main(Launcher.java:65)'
'-- System Details --
Details:
Minecraft Version: 1.14.4
Minecraft Version ID: 1.14.4
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_51, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory:<PHONE_NUMBER> bytes (2343 MB) /<PHONE_NUMBER> bytes (3072 MB) up to<PHONE_NUMBER> bytes (3072 MB)
CPUs: 16
JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx3G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
ModLauncher: 4.0.0+61+ca3b447
ModLauncher launch target: fmlclient
ModLauncher naming: srg
ModLauncher services:
/eventbus-1.0.0-service.jar eventbus PLUGINSERVICE
/forge-1.14.4-28.1.30.jar object_holder_definalize PLUGINSERVICE
/forge-1.14.4-28.1.30.jar runtime_enum_extender PLUGINSERVICE
/accesstransformers-1.0.0-shadowed.jar accesstransformer PLUGINSERVICE
/forge-1.14.4-28.1.30.jar capability_inject_definalize PLUGINSERVICE
/forge-1.14.4-28.1.30.jar runtimedistcleaner PLUGINSERVICE
/forge-1.14.4-28.1.30.jar fml TRANSFORMATIONSERVICE
FML: 28.1
Forge: net.minecraftforge:28.1.30
FML Language Providers:
<EMAIL_ADDRESS>minecraft@1
Mod List:
modernity-INDEV-0.2.0.jar The Modernity<EMAIL_ADDRESS>COMMON_SETUP}
forge-1.14.4-28.1.30-universal.jar Forge<EMAIL_ADDRESS>SIDED_SETUP}
forge-1.14.4-28.1.30-client.jar Minecraft<EMAIL_ADDRESS>SIDED_SETUP}
Launched Version: 1.14.4-forge-28.1.30
LWJGL: 3.2.2 build 10
OpenGL: GeForce GTX 1080/PCIe/SSE2 GL version 4.6.0 NVIDIA 436.48, NVIDIA Corporation
GL Caps: Using GL 1.3 multitexturing.
Using GL 1.3 texture combiners.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Shaders are available because OpenGL 2.1 is supported.
VBOs are available because OpenGL 1.5 is supported.'
Using VBOs: Yes
Is Modded: Definitely; Client brand changed to 'forge'
Type: Client (map_client.txt)
Resource Packs:
Current Language: English (US)
CPU: 16x AMD Ryzen 7 1700X Eight-Core Processor  `

Environment

Modernity: 2.0
Forge: 28.1.30
Minecraft: 1.14.4
This was tested in a instance I use for debugging that only had this mod installed.

Additional info
N/A

It seems that you are using a lower version of forge than recommended. Try loading the mod with forge 28.1.40 (not *.30).
Besides, it seems that I've been unclear about which forge versions are supported. I didn't specify this in the mod info (mods.toml) file so forge won't care about version issues, I'll fix that...

I just tested with MC Forge 28.1.40 and 28.1.45 and I still have the same issue.
The game crashes on load and returns the same error.
java.lang.IllegalStateException: Redundant texture list for particle modernity:salt

I think it's a multithreading issue then. Forge loads mods off-thread. It depends on your hardware which thread is loaded first.
But I'm not sure. I had some troubles with events that did not fire, one of them was the particle registry event...

Oops, accidentally closed it, should not be closed...

This update should have fixed it: https://github.com/RedGalaxySoftware/TheModernity/releases/tag/v0.2.1-INDEV.
If not, please reopen the issue...

I was wondering, what causes this issue? I'm confused, trying to solve https://github.com/itsmeow/whisperwoods/issues/1, multiple users have reported this. If you could help, it would be greatly appreciated. Found via GitHub search, useful tool :)


about checkpoint and training details

Thank you for your awesome work
Could you provide the pre-trained check-point model?
For training, analysis and synthesis stage are trained together or separately?

Hi @yunzqq, two stages are trained separately.
You can find the checkpoint in this repo https://github.com/haoheliu/voicefixer.
Thanks for your interest.

Hi @yunzqq, two stages are trained separately. You can find the checkpoint in this repo https://github.com/haoheliu/voicefixer. Thanks for your interest.

Thank you for your response!
For the training of vocoder, only clean speech is included or also including degraded speech?

Hi @yunzqq, two stages are trained separately. You can find the checkpoint in this repo https://github.com/haoheliu/voicefixer. Thanks for your interest.

Thank you for your response! For the training of vocoder, only clean speech is included or also including degraded speech?

Only clean speech is included. Thanks.

Hi @yunzqq, two stages are trained separately. You can find the checkpoint in this repo https://github.com/haoheliu/voicefixer. Thanks for your interest.

Thank you for your response! For the training of vocoder, only clean speech is included or also including degraded speech?

Only clean speech is included. Thanks.

Thank you for your response!


Access control is not role-based.

We'll have at least owner, charity, participant, and doner roles.

We no longer have participants, but this would still be a good idea.


import/export file extensions are mandatory for Node/esm

tests need to import setDocument, which is borked without this.

Thanks! It's also mandatory in the browser, but Flems and Rollup are a bit more tolerant apparently...


small update to readme and postbuild commands

-updated on readme.md, highlighting System.Management.Automation 4 dependency

updated second post build command line to bypass instead of unrestricted.

Hi @camiloborges, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;

Thx Camilo!

Good updates!


Remove dead code in Page

Let's remove dead code in Page class (because Resources substitutes it).

Closed by ee55755.


[Meta Isuue][QSB] Approached to enforcement of system resource limits

Is your feature request related to a problem? Please describe
It is a meta request to QSB feature request to get some community feedback on possible approaches.
Describe the solution you'd like
Approaches to Enforce Resource Limits
There are basically two ways to enforce the resource consumption limits I can think of. First one can focuses on allocating or maintaining the fixed amount of resource usage for a sandbox while second one can be made flexible to make optimum use of resources available.

Reserved - With this approach we can assign a fixed percentage of a resource for a sandbox. All sandboxes cumulatively should not exceed 100. Going with this approach even though multiple sandboxes are underutilised it can trigger cancellation from sandboxes as soon as they hit their limit.

Pros

It will make the cancellation a bit easier as we only need to cancel when a sandbox exceeds its limit.
This will help us free ourselves from the pain of tracking sandbox resource usage cumulatively. We need not employ Hierarchical topology for sandboxes.
Sandboxes need not have priority.
Efficacy of system resources overall is more since the #rejections > #cancellations

Cons

This can lead to underutilization of resources system wide.
Additional overhead of validating the individual sandboxes resource limit each time Cx creates a sandbox.

Constrained - With this approach we will assign a limit which we will always honor. But one important thing we will do to make optimum usage of available resources is that cumulatively for a resource across all the sandboxes need not have sum up to system level duress limit. But this will create the problem of which sandbox should be selected to cancel the queries. To solve this problem we will have sandbox priority to help when contention happens.

Pros

Optimum use of available system resources.
It can cause more cancellations than rejections if not configured properly (free flowing limits e,g; every sandbox with max limit configured)

Cons

It is complex to maintain tree topology and priority based cancellation in case of contention.
Efficacy of system resources is less as #cancellations > #rejections in case where none of the snadboxes are hitting the configured limits but cumulatively they are duressing the node. Cancelling a task is wasting the resources on the cancelled task progress so far.

Lets understand them with the help of some examples here. For the sake of simplicity I am only using a single value for resource limit but there will be two limits for each system resource low and high.
Constrained
Lets say we have 3 Sandboxes in the System

Sandbox1 - { ResourceLimit: 60, Priority: 1}
Sandbox2 - { ResourceLimit: 20, Priority: 3}
Sandbox3 - { ResourceLimit: 40, Priority: 2}

System wide resource limit: 90
Lets caputre the current resource usage of the sandboxes at different times
Cancellation Case: sandbox limit breached

Time
Sandbox1
Sandbox2
Sandbox3

T1
40
10
30

T2
50
25
10

Sandbox2 will start rejecting new requests for this sandbox and cancel some.
Cancellation Case: system limit breached

Time
Sandbox1
Sandbox2
Sandbox3

T1
40
10
30

T2
50
15
30

here cells in bold will see cancellation as cumulatively it is breaching the system limit. It means that sandbox2 will face cancellation even though the sandbox level limits are not breaching here.
Rejection Case:

Time
Sandbox1
Sandbox2
Sandbox3

T1
40
10
30

T2
35
22
30

In this case Sandbox2 will face rejections as the sandbox level limits are breaching.
Reserved
Lets say we have 3 Sandboxes in the System

Sandbox1 - { ResourceLimit: 50, Priority: 1}
Sandbox2 - { ResourceLimit: 20, Priority: 3}
Sandbox3 - { ResourceLimit: 30, Priority: 2}

The sandbox limits for the example are taken in such a way that cumulative sum of the resource limits on sandboxes should sum up to 100 as inherent in the approach.
Cancellation Case: sanbox limit breached

Time
Sandbox1
Sandbox2
Sandbox3

T1
40
10
30

T2
40
20(1)
20

T3
45
25(2)
10

(1) At this point the sandbox2 will start rejecting new incoming requests
(2) At this point we will also start cancelling running requests from sandbox2 due to sandbox level resource limit breach.
Cancellation Case: system level limit breached

Time
Sandbox1
Sandbox2
Sandbox3

T1
40
10
30

T2
50
15
25

T3
50
18
30

In this case the sandbox2 will start cancelling the requests because it is the lowest priority sandbox.
Decision driving factors to select the Approach from one of the Above

We want to improve the efficacy of the system resources overall which means we would avoid wasting resources on tasks which potentially can shoot beyond enforced limits. Basically we will favor rejections over cancellations.
Our system should try its best to honor the user assigned limits for these sandboxes even though this can lead to underutilisation in the system. For example let say there are 3 sandboxes in the system having limits as 60, 20, 10 respectively, there might be a time when lets say only sandbox 2 has the traffic and the sandbox 2 is inundated with traffic hence it will start rejecting the requests even though system is still not under duress.

Personal Verdict

We will go ahead with reserved approach for enforching resource limits considering the above points.

Problems with the selected approach to enforce sys resource limits and possible solutions
The only ambiguity with this approach is the ability to maintain the cumulative resource limit to 100 since the user can supply any random value for new sandboxes.
To understand this with the help of examples, lets say at any point in time we have 3 sandboxes in the system

sandbox1: { limit: 40 }
sandbox2: { limit: 30 }
sandbox3: { limit: 20 }

now lets say user want to create a new sandbox with resource limit of 30 the new cumulative sum will become 120 (>100). This warrants the readjustment of the existing sandbox limits or create the new sandbox with the limit of 10.
Now how do we resolve this conflict there are two ways I can think of resolving this

We re-adjust the resource limits of existing sandboxes in the same proportion on user's behalf. e,g; in the above scenario we can let the new sandbox be created with a limit of 30 * 10/12 and readjust the other sandboxe limits to 40 * 10/12, 30 * 10/12 and 20 * 10/12.
We error out the request to create the new sandbox and ask user to re-adjust the limit of existing sandboxes to accomodate the new one.

Personally I think the 2nd option provides better user experience. But I am looking forward to hear from the folks on this.
I am using Sandbox keyword as we had started envisioning this feature with it. But It is not the final name for the construct to be used in the implementation.
Main Issues

RFC
Proposal

Related component
Search:Resiliency
Describe alternatives you've considered
No response
Additional context
No response

@backslasht @Bukhtawar @msfroh
Can you guys provide your feedback on this ?


Use PEG to parse all hybrid characters and include them in the output

This is another approach to #174 which retains the verbatim hybrid characters from the input by parsing them entirely within PEG instead of preprocessing them.
Tests are passing but I'm not 100% certain I haven't missed something, or if this is the best way to go...

I think this approach is a "less surprises" one, let me think, and run profiling

It is slighly faster and eats slighlty more memory:
Regex approach (master)
name                                     time/op
Parse/Parse_to_object_once-16            73.0µs ± 1%
Parse/Parse_to_object_once_with_Init-16  83.2µs ± 1%
Parse/Parse_to_object-16                 67.5ms ± 1%
Parse/Parse_to_JSON-16                   71.5ms ± 1%
Parse/Parse_to_JSON_(Details)-16         71.8ms ± 1%
Parse/Parse_to_CSV-16                    69.1ms ± 1%

name                                     alloc/op
Parse/Parse_to_object_once-16            10.9kB ± 0%
Parse/Parse_to_object_once_with_Init-16  23.8kB ± 0%
Parse/Parse_to_object-16                 15.5MB ± 0%
Parse/Parse_to_JSON-16                   17.2MB ± 0%
Parse/Parse_to_JSON_(Details)-16         17.2MB ± 0%
Parse/Parse_to_CSV-16                    16.2MB ± 0%

name                                     allocs/op
Parse/Parse_to_object_once-16               250 ± 0%
Parse/Parse_to_object_once_with_Init-16     409 ± 0%
Parse/Parse_to_object-16                   235k ± 0%
Parse/Parse_to_JSON-16                     242k ± 0%
Parse/Parse_to_JSON_(Details)-16           242k ± 0%
Parse/Parse_to_CSV-16                      240k ± 0%

PEG approach (this branch)
name                                     time/op
Parse/Parse_to_object_once-16            71.7µs ± 1%
Parse/Parse_to_object_once_with_Init-16  81.4µs ± 1%
Parse/Parse_to_object-16                 66.0ms ± 1%
Parse/Parse_to_JSON-16                   69.7ms ± 1%
Parse/Parse_to_JSON_(Details)-16         69.9ms ± 1%
Parse/Parse_to_CSV-16                    67.5ms ± 1%

name                                     alloc/op
Parse/Parse_to_object_once-16            11.4kB ± 0%
Parse/Parse_to_object_once_with_Init-16  24.2kB ± 0%
Parse/Parse_to_object-16                 16.2MB ± 0%
Parse/Parse_to_JSON-16                   17.9MB ± 0%
Parse/Parse_to_JSON_(Details)-16         17.9MB ± 0%
Parse/Parse_to_CSV-16                    16.8MB ± 0%

name                                     allocs/op
Parse/Parse_to_object_once-16               249 ± 0%
Parse/Parse_to_object_once_with_Init-16     408 ± 0%
Parse/Parse_to_object-16                   233k ± 0%
Parse/Parse_to_JSON-16                     241k ± 0%
Parse/Parse_to_JSON_(Details)-16           241k ± 0%
Parse/Parse_to_CSV-16                      239k ± 0%

@dimus welp, sorry I couldn't get to this. Got majorly sidetracked...

No problem, it could wait,  and I was in a cleaning up mood :)


back button functionality after new daily meal selected fixed

Merge from lsh-dev branch to develop branch

fixed minor potential bug on "Back" button inside AddDailyMealActivity after picking a new meal


Improve CFReader destructor

This improves the CFReader's destructor, by testing for self._dataset to exist. It fixes #3312.

I'm not entirely happy with the unit test:

it is included in the TestCFReader test-case class, where it logically belongs, but it doesn't use any of the class attributes, nor does it require the setUp part, or is dependent on test data. Ideally, it should be its own test
it is the odd one out, between other tests, requiring three additional imports, and redirection/capture of standard error
it won't run on Python 2 (or rather, return early)
I'm also too much used to pytest that I find it hard to write within the unittest framework (see also the first bullet point)

Hello @evertrol .
Just a couple minor things to do to get the other checks to pass:
It looks like you'll need a CLA. You can get this by filling out this form https://scitools.org.uk/cla/v4/form .
Also, if you change the year license header in each of the files you edited from 2017/2018 to 2019, that should get Travis to pass.

I'm curious about the copyright year thing, because I don't understand it fully: does Travis check for modified file that the copyright (but code-commented) line contains the current year?
How does this work for files that haven't been touched for a few years, but contain two dates (e.g., _fast_load.py, © 2016 - 2018); is the copyright for such files expired?
And how does this work for single-date copyrights that aren't 2019? Shouldn't all files have their copyright section updated?
Is the copyright for the entire project not simply renewed when a new version of Iris is released, as per the README (I missed a LICENSE file)?

@evertrol the copyright year thing

Following revised legal advice, we are now planning to get rid of this anyway : https://github.com/SciTools/iris/issues/3285

@pp-mo Thanks for that. Nice to see the default license will be BSD 3-clause (in an LICENSE file), for SciTools projects. Though the end-year of the copyright remains confusing to me (perhaps it shouldn't be YEAR_END but YEAR_MOST_RECENT).

I'm going to close and hand off this PR, since I'm not inclined to sign the CLA: that is implicit by submitting this PR.
Someone else is free to take the changes and submit their own PR with it.


TravisCI testing: test MacOS on Python 3

In #323, we enabled testing on MacOS. But, it's currently only Python 2.7, and it would be good to test on Python 3.
Also, while we are doing this, we should remove the Windows testing on Travis since AppVeyor does this faster.

In light of #365, we are more likely to get macOS test using GitHub Actions than on Travis... :–)

Seems accurate. We can probably close this issue in favor of the larger changes to the CI testing. Clearly we'd like Linux, Mac, and Windows tests with the latest Python versions.


Issue 111 - Support CommandGroups in CommandTester

This PR addresses #111 and moves the buildRunner method from Scheduler into CommandRunner so CommandTester can also correctly execute CommandGroups.
To keep the code clean, I've adjusted the CommandRunner to expose two static builders:

CommandRunner#create(Context, Command)
CommandRunner#create(Command)

These builders call into buildRunner. After some refactoring, I was left with only two CommandRunner constructors. Both are only used by the buildRunner so I made them private. Regression/integration tests included. Let me know what you think and if there's anything you'd like me to change. Thanks!

@rhauch What do you think? We never provided feedback on the original issue, but this seems like a feature that should be implemented.


Package uploaded to NPM should not include .git directory

This causes future npm install commands to fail as follows:
npm ERR! code EISGIT
npm ERR! path /Users/name/src/electron-typescript-app/node_modules/electron-cgi
npm ERR! git /Users/name/src/electron-typescript-app/node_modules/electron-cgi: Appears to be a git repo or submodule.
npm ERR! git     /Users/name/src/electron-typescript-app/node_modules/electron-cgi
npm ERR! git Refusing to remove it. Update manually,
npm ERR! git or move it out of the way first.

This also interferes with the use of git clean and other git commands in the referencing project.

Hey @rcook
Thanks for letting me know. Seems like I my last publish was affected by this npm issue.
I've just published version 1.0.5.
Guess from now on I'll do a --dry-run first.


feat: cherry pick upstream's commits about vm querier mock

Description
cherry-pick https://github.com/CosmWasm/cosmwasm/pull/1137.

Types of changes

[ ] Bug fix (changes which fixes an issue)
[x] New feature (changes which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] ETC (build, ci, docs, perf, refactor, style, test)

Checklist

[x] I followed the contributing guidelines.
[x] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[ ] The PR title and commits are followed conventional commit form.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: loloicci:x: webmaster128You have signed the CLA already but the status is still pending? Let us recheck it.


Split unit tests

Calling the unitTest.yml file from a plugin (test.yml) with the conditional OSes made the GHA flow cluttered and confusing. I split the two OS unit tests into their own file and kept the base unitTest file for backward compatibility.
BEFORE

AFTER

Example build https://github.com/salesforcecli/plugin-settings/actions/runs/3348100820

Example of backward compatibility: https://github.com/salesforcecli/plugin-info/actions/runs/3348163600


build(test-driver-definitions): add frs to TestDriverTypes

add frs to TestDriverTypes so itExpectsSkipsFailureOnSpecificDrivers and itSkipsFailureOnSpecificDrivers can skip on frs
AB#6984

Not going in this direction anymore


[KNN] Implement knn saving

Commits to be reviewed in this PR
[KNN] Implement knn saving
As knn was not saving it's props, this patch implements saving property
Self evaluation:

Build test: [X]Passed [ ]Failed [ ]Skipped
Run test: [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: Jihoon Lee<EMAIL_ADDRESS>

:memo: TAOS-CI Version: 1.5.20200925. Thank you for submitting PR #1702. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://nnstreamer.mooo.com/.


LSP missing tokens: raw identifier syntax (r#)

Unable to access span information for raw identifier syntax (r#)

Just been looking into this. The lexer actually ignores these r# tokens when creating the Ident but sets a is_raw_ident flag to true. I think it's fine to keep this behavior, and instead, we can check if is_raw_ident is true in the language server and take the r# prefix into account when we do things like renaming.
Closing for now.