Hello,
I’m trying to set a simple parameter via osc. I have a vst2 juce plugin where I set up a Juce::AudioProcessorValueTreeState
. The parameter is an AudioParameterBool
and I add it to the value tree state.
When sending the correct osc messages to sushi the parameter is set correctly, however when looking for the cause of a mode-switch I found out that upon receiving the first message, a SIGXCPU is caught by the debugger.
Here’s the backtrace:
Thread 11 "sushi_b64" hit Catchpoint 1 (signal SIGXCPU), __GI___mmap64 (
offset=<optimized out>, fd=-1, flags=16418, prot=0, len=67108864,
addr=<optimized out>) at ../sysdeps/unix/sysv/linux/mmap64.c:52
52 ../sysdeps/unix/sysv/linux/mmap64.c: No such file or directory.
(gdb) bt
#0 __GI___mmap64 (offset=<optimized out>, fd=-1, flags=16418, prot=0, len=67108864,
addr=<optimized out>) at ../sysdeps/unix/sysv/linux/mmap64.c:52
#1 __GI___mmap64 (addr=<optimized out>, len=len@entry=67108864, prot=prot@entry=0,
flags=flags@entry=16418, fd=fd@entry=-1, offset=offset@entry=0)
at ../sysdeps/unix/sysv/linux/mmap64.c:40
#2 0x0000007ff7716a78 in new_heap (size=135168, size@entry=2824,
top_pad=<optimized out>) at arena.c:476
#3 0x0000007ff7717548 in _int_new_arena (size=576) at arena.c:911
#4 arena_get2 (avoid_arena=0x0, size=576) at arena.c:911
#5 arena_get2 (size=576, avoid_arena=0x0) at arena.c:872
#6 0x0000007ff7719e2c in tcache_init () at malloc.c:2994
#7 0x0000007ff771abc8 in tcache_init () at malloc.c:3050
#8 __GI___libc_malloc (bytes=24) at malloc.c:3050
#9 0x0000007ff796f46c in operator new(unsigned long) () from /usr/lib/libstdc++.so.6
#10 0x0000007feeb55de0 in juce::ThreadLocalValue<bool>::get (this=0x5555809728)
at /opt/elk/1.0/sysroots/aarch64-elk-linux/usr/include/c++/8.3.0/bits/atomic_base.h:707
#11 juce::ThreadLocalValue<bool>::operator= (newValue=<optimized out>,
this=0x5555809728)
at /home/domenico/elkJUCE/modules/juce_core/threads/juce_ThreadLocalValue.h:88
#12 JuceVSTWrapper::setParameter (value=1, index=<optimized out>, this=0x55558092a0)
at /home/domenico/elkJUCE/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp:795
--Type <RET> for more, q to quit, c to continue without paging--ret
#13 JuceVSTWrapper::setParameterCB (vstInterface=<optimized out>,
index=<optimized out>, value=1)
at /home/domenico/elkJUCE/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp:802
#14 0x00000055555b74b4 in ?? ()
#15 0x00000055555b78ec in ?? ()
#16 0x00000055555ab90c in ?? ()
#17 0x0000005555646dc4 in ?? ()
#18 0x0000005555635eec in ?? ()
#19 0x0000007ff7e9c0c8 in ?? () from /usr/xenomai/lib/libcobalt.so.2
#20 0x0000007ff7da5824 in start_thread (arg=0x7ffffff406) at pthread_create.c:486
#21 0x0000007ff77717bc in thread_start ()
I removed every use of the parameter so I cannot understand why this happens. Also, it seems that it happens only the first time because the output of /proc/xenomai/sched/stat
remains stable when receiving subsequent messages.
It seems simple but I cannot figure out the solution
Additionally, I cannot understand how to use gdb’s ignore with signals as opposed to breakpoints.