supercollider / sc3-plugins

Community plugins for SuperCollider
https://supercollider.github.io/sc3-plugins/
GNU General Public License v2.0
449 stars 122 forks source link

Segfault reading synthdef from file #349

Open ErikNatanael opened 1 year ago

ErikNatanael commented 1 year ago

scsynth segfaults when trying to read this SynthDef from file or when trying to add it/write it to disk:

signal_idle_synthesis.scsyndef.tar.gz

SC version: 3.12.2 OS: Ubuntu 22.10 Audio backend: JACK 1.9.21

The SynthDef has worked in earlier versions as I'm reviving an old project, but I can't remember which version.

Backtrace (newly compiled with debug symbols):

Thread 1 "scsynth" received signal SIGSEGV, Segmentation fault.
DoBufferColoring (inWorld=0x555555aa3380, inGraphDef=0x555555b36990) at /home/erik/git/supercollider/server/scsynth/SC_GraphDef.cpp:873
873                     outputSpec->mNumConsumers++;
(gdb) backtrace
#0  DoBufferColoring (inWorld=0x555555aa3380, inGraphDef=0x555555b36990)
    at /home/erik/git/supercollider/server/scsynth/SC_GraphDef.cpp:873
#1  0x00005555555bbcfd in GraphDef_Read (inWorld=inWorld@entry=0x555555aa3380, buffer=@0x7fffffffd0b8: 0x555555b3f41c "", 
    inList=0x555555b36530, inVersion=inVersion@entry=2) at /home/erik/git/supercollider/server/scsynth/SC_GraphDef.cpp:421
#2  0x00005555555bbf92 in GraphDefLib_Read (inWorld=inWorld@entry=0x555555aa3380, buffer=<optimised out>, inList=<optimised out>, 
    inList@entry=0x555555b36530) at /home/erik/git/supercollider/server/scsynth/SC_GraphDef.cpp:200
#3  0x00005555555bc272 in GraphDef_Load (inWorld=0x555555aa3380, path=..., inList=0x555555b36530)
    at /usr/include/c++/11/bits/basic_string.h:194
#4  0x00005555555bc8b2 in GraphDef_LoadDir (inWorld=inWorld@entry=0x555555aa3380, dirname=..., inList=0x555555b36530, 
    inList@entry=0x0) at /home/erik/git/supercollider/server/scsynth/SC_GraphDef.cpp:653
#5  0x00005555555a4abf in World_LoadGraphDefs (world=0x555555aa3380) at /home/erik/git/supercollider/server/scsynth/SC_World.cpp:277
#6  0x00005555555a7350 in World_New (inOptions=0x7fffffffd780) at /home/erik/git/supercollider/server/scsynth/SC_World.cpp:451
#7  0x0000555555569ed7 in scsynth_main (argc=3, argv=0x7fffffffdb78)
    at /home/erik/git/supercollider/server/scsynth/scsynth_main.cpp:417
#8  0x00007ffff7732d90 in __libc_start_call_main (main=main@entry=0x555555568360 <main(int, char**)>, argc=argc@entry=3, 
    argv=argv@entry=0x7fffffffdb78) at ../sysdeps/nptl/libc_start_call_main.h:58
#9  0x00007ffff7732e40 in __libc_start_main_impl (main=0x555555568360 <main(int, char**)>, argc=3, argv=0x7fffffffdb78, 
    init=<optimised out>, fini=<optimised out>, rtld_fini=<optimised out>, stack_end=0x7fffffffdb68) at ../csu/libc-start.c:392
#10 0x0000555555569a55 in _start ()

SynthDef code:

(
var sampleRate = s.sampleRate;
~buffer_size = 1005611;
~rate = 0.125 * 10;
~rate = (~buffer_size/sampleRate) * (1/170000);
~totalDuration = ~buffer_size/(sampleRate * ~rate);
~eventLength = 1/(~rate * sampleRate);
~speed = ~buffer_size/(sampleRate * ~rate);
)
SynthDef(\signal_idle_synthesis, {
    | activity_buffers = #[0, 0, 0, 0, 0, 0, 0, 0], pid_buffers = #[0, 0, 0, 0, 0, 0, 0, 0],
    idle_buffers = #[0, 0, 0, 0, 0, 0, 0, 0], self_buffers = #[0, 0, 0, 0, 0, 0, 0, 0]
    rate = 1.0 |
    var phase, activities, pids, idles, selves, sine, noise, sig, click_trig, click_amps, clicks, click_rq = 0.001, click_freqs, decay_amount = ~eventLength, cross_delay = 0.008, activityAmp,
    env, atk, sus;

    phase = Phasor.ar(0.0, rate, 0.0, ~buffer_size*2);// + MouseX.kr(0, 1006111);
    FreeSelf.kr(phase >= (~buffer_size*1.0001));

    // array of 8 values, one for each cpu
    activities = BufRd.ar(1, activity_buffers, phase, 0.0, 1);
    activities = Select.kr(phase >= ~buffer_size, [activities, #[0, 0, 0, 0, 0, 0, 0, 0]]);
    pids = BufRd.ar(1, pid_buffers, phase, 0.0, 1);
    pids = Select.kr(phase >= ~buffer_size, [pids, #[0, 0, 0, 0, 0, 0, 0, 0]]);
    idles = BufRd.ar(1, idle_buffers, phase, 0.0, 1);
    idles = Select.kr(phase >= ~buffer_size, [idles, #[0, 0, 0, 0, 0, 0, 0, 0]]);
    selves = BufRd.ar(1, self_buffers, phase, 0.0, 1);
    selves = Select.kr(phase >= ~buffer_size, [selves, #[0, 0, 0, 0, 0, 0, 0, 0]]);

    click_trig = Changed.ar(phase.floor, 0);
    click_amps = activities.collect{ |activity|
        Lag.ar(Decay.ar((activity * 0.015).clip(0.0, 0.5) * click_trig, decay_amount), 0.1);//.lag(0.001);
    };
    click_freqs = pids.collect{ |pid, i| ((pid.pow(2)) % 5000).linexp(0, 5000, 100, 7000) -200 + 100 + (100*i) };
    click_freqs = click_freqs.max(50);
    clicks = RHPF.ar(click_amps, click_freqs, click_rq);

    atk = ~eventLength/2 * (1/activities);
    sus = ~eventLength - (atk * 2);
    atk = atk * (1 + (idles*3)); // make atk longer for idle events
    sus = sus * (1 + idles); // make sus longer for idle events

    env = EnvGen.ar(Env(
        levels: [0, 1, 1, 0],
        times: [atk, sus, atk],
        curve: [activities.linlin(0, 10, 0, -10), -2], loopNode: 0), gate: click_trig);

    // debug sig
    sine = SinOsc.ar(click_freqs);
    noise = Limiter.ar(Resonz.ar(PinkNoise.ar(), click_freqs.min(17000).max(40), 0.03, mul: 30));

    sig = (sine * (1-idles)) + (noise * idles);

    activityAmp = (1.0 - activities.linlin(0, 10, 1.0, 0.707).pow(2)).clip(0.0, 0.5);
    sig = sig * activityAmp * env * (1.0 - (selves*0.5));

    sig = Splay.ar(sig);
    sig[0] = sig[0] + DelayN.ar(LPF.ar(sig[1]*0.8, 500), cross_delay, cross_delay);
    sig[1] = sig[1] + DelayN.ar(LPF.ar(sig[0]*0.8, 500), cross_delay, cross_delay);

    // scale up amplitude
    sig = sig * 3;
    sig = LeakDC.ar(sig);
    sig = Greyhole.ar(sig * (activityAmp + 0.5), \delayTime.kr(0.07), \damp.kr(0.8), \size.kr(5.0), \diff.kr(0.75), \feedback.kr(0.85), modDepth: 0.12, modFreq: 2.8);// * 0.2 + (sig * 0.8);
    sig[0] = sig[0] + DelayN.ar(LPF.ar(sig[1]*0.2, 2000), cross_delay, cross_delay);
    sig[1] = sig[1] + DelayN.ar(LPF.ar(sig[0]*0.2, 2000), cross_delay, cross_delay);
    Out.ar(\out.kr(0), sig);
}).add;

Commenting out the last two cross delays, it works, but I cannot figure out why.

When adding the SynthDef (running the above code) I get JACK notifications followed by a segfault. The .synthdef file is created.

SC IDE Post window output:

Jack: Process: graph not finished!
Jack: Process: waiting to switch delta = 10993
Jack: JackRequest::Notification
Jack: JackEngine::ClientNotify: no callback for notification = 3
Jack: JackEngine::ClientNotify: no callback for notification = 3
Jack: JackExternalClient::ClientNotify ref = 2 client = SuperCollider name = SuperCollider notify = 3
Jack: Process: graph not finished!
Jack: Process: waiting to switch delta = 21001
Jack: JackRequest::Notification
Jack: JackEngine::ClientNotify: no callback for notification = 3
Jack: JackEngine::ClientNotify: no callback for notification = 3
Jack: JackExternalClient::ClientNotify ref = 2 client = SuperCollider name = SuperCollider notify = 3
Jack: Process: graph not finished!
Jack: Process: switch to next state delta = 32006
Jack: Process: graph not finished!
Jack: Process: waiting to switch delta = 10987
Jack: JackRequest::Notification
Jack: JackEngine::ClientNotify: no callback for notification = 3
Jack: JackEngine::ClientNotify: no callback for notification = 3
Jack: JackExternalClient::ClientNotify ref = 2 client = SuperCollider name = SuperCollider notify = 3
Jack: Process: graph not finished!
Jack: Process: waiting to switch delta = 20995
Jack: JackRequest::Notification
Jack: JackEngine::ClientNotify: no callback for notification = 3
Jack: JackEngine::ClientNotify: no callback for notification = 3
Jack: JackExternalClient::ClientNotify ref = 2 client = SuperCollider name = SuperCollider notify = 3
Jack: Process: graph not finished!
Jack: Process: switch to next state delta = 32002
Jack: JackSocketServerChannel::Execute : poll client error err = Success
Jack: JackSocketServerChannel::ClientKill ref = 2 fd = 17
Jack: JackEngine::ClientKill ref = 2
Jack: JackEngine::ClientDeactivate ref = 2 name = SuperCollider
Jack: JackEngine::PortDisconnect ref = -1 src = 25 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 1 dst = 25
Jack: JackGraphManager::Disconnect port_src = 1 port_dst = 25
Jack: JackConnectionManager::Disconnect port_src = 1 port_dst = 25
Jack: JackConnectionManager::Disconnect port_src = 25 port_dst = 1
Jack: JackConnectionManager::DecConnectionRef: ref1 = 0 ref2 = 2
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 26 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 2 dst = 26
Jack: JackGraphManager::Disconnect port_src = 2 port_dst = 26
Jack: JackConnectionManager::Disconnect port_src = 2 port_dst = 26
Jack: JackConnectionManager::Disconnect port_src = 26 port_dst = 2
Jack: JackConnectionManager::DirectDisconnect last: ref1 = 0 ref2 = 2
Jack: JackConnectionManager::DecConnectionRef: ref1 = 0 ref2 = 2
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 27 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 27 dst = 13
Jack: JackGraphManager::Disconnect port_src = 27 port_dst = 13
Jack: JackConnectionManager::Disconnect port_src = 27 port_dst = 13
Jack: JackConnectionManager::Disconnect port_src = 13 port_dst = 27
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 28 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 28 dst = 14
Jack: JackGraphManager::Disconnect port_src = 28 port_dst = 14
Jack: JackConnectionManager::Disconnect port_src = 28 port_dst = 14
Jack: JackConnectionManager::Disconnect port_src = 14 port_dst = 28
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 29 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 29 dst = 15
Jack: JackGraphManager::Disconnect port_src = 29 port_dst = 15
Jack: JackConnectionManager::Disconnect port_src = 29 port_dst = 15
Jack: JackConnectionManager::Disconnect port_src = 15 port_dst = 29
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 30 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 30 dst = 16
Jack: JackGraphManager::Disconnect port_src = 30 port_dst = 16
Jack: JackConnectionManager::Disconnect port_src = 30 port_dst = 16
Jack: JackConnectionManager::Disconnect port_src = 16 port_dst = 30
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 31 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 31 dst = 17
Jack: JackGraphManager::Disconnect port_src = 31 port_dst = 17
Jack: JackConnectionManager::Disconnect port_src = 31 port_dst = 17
Jack: JackConnectionManager::Disconnect port_src = 17 port_dst = 31
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 32 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 32 dst = 18
Jack: JackGraphManager::Disconnect port_src = 32 port_dst = 18
Jack: JackConnectionManager::Disconnect port_src = 32 port_dst = 18
Jack: JackConnectionManager::Disconnect port_src = 18 port_dst = 32
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 33 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 33 dst = 19
Jack: JackGraphManager::Disconnect port_src = 33 port_dst = 19
Jack: JackConnectionManager::Disconnect port_src = 33 port_dst = 19
Jack: JackConnectionManager::Disconnect port_src = 19 port_dst = 33
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 34 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 34 dst = 20
Jack: JackGraphManager::Disconnect port_src = 34 port_dst = 20
Jack: JackConnectionManager::Disconnect port_src = 34 port_dst = 20
Jack: JackConnectionManager::Disconnect port_src = 20 port_dst = 34
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 35 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 35 dst = 21
Jack: JackGraphManager::Disconnect port_src = 35 port_dst = 21
Jack: JackConnectionManager::Disconnect port_src = 35 port_dst = 21
Jack: JackConnectionManager::Disconnect port_src = 21 port_dst = 35
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 36 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 36 dst = 22
Jack: JackGraphManager::Disconnect port_src = 36 port_dst = 22
Jack: JackConnectionManager::Disconnect port_src = 36 port_dst = 22
Jack: JackConnectionManager::Disconnect port_src = 22 port_dst = 36
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 37 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 37 dst = 23
Jack: JackGraphManager::Disconnect port_src = 37 port_dst = 23
Jack: JackConnectionManager::Disconnect port_src = 37 port_dst = 23
Jack: JackConnectionManager::Disconnect port_src = 23 port_dst = 37
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 38 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 38 dst = 24
Jack: JackGraphManager::Disconnect port_src = 38 port_dst = 24
Jack: JackConnectionManager::Disconnect port_src = 38 port_dst = 24
Jack: JackConnectionManager::Disconnect port_src = 24 port_dst = 38
Jack: JackConnectionManager::DirectDisconnect last: ref1 = 2 ref2 = 0
Jack: JackConnectionManager::DecConnectionRef: ref1 = 2 ref2 = 0
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::ClientNotify: no callback for notification = 12
Jack: JackEngine::PortDisconnect ref = -1 src = 39 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 40 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 41 dst = 65535
Jack: JackEngine::PortDisconnect ref = -1 src = 42 dst = 65535
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackConnectionManager::DirectDisconnect last: ref1 = 2 ref2 = 1
Jack: JackGraphManager::DisconnectRefNum cur_index = 3 ref1 = 2 ref2 = 1
Jack: JackConnectionManager::DirectDisconnect last: ref1 = 1 ref2 = 2
Jack: JackGraphManager::DisconnectRefNum cur_index = 3 ref1 = 1 ref2 = 2
Jack: JackPosixProcessSync::TimedWait time out = 213320
Jack: Process: graph not finished!
Jack: Process: switch to next state delta = 6522866197
Jack: JackPosixProcessSync::TimedWait finished delta = 6250.0
Jack: JackEngine::ClientExternalClose ref = 2
Jack: JackEngine::ClientCloseAux ref = 2
Jack: JackEngine::PortUnRegister ref = 2 port_index = 25
Jack: JackEngine::PortDisconnect ref = -1 src = 25 dst = 65535
Jack: JackGraphManager::DisconnectAllInput port_index = 25
Jack: JackConnectionManager::RemoveInputPort ref = 2 port_index = 25 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 26
Jack: JackEngine::PortDisconnect ref = -1 src = 26 dst = 65535
Jack: JackGraphManager::DisconnectAllInput port_index = 26
Jack: JackConnectionManager::RemoveInputPort ref = 2 port_index = 26 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 27
Jack: JackEngine::PortDisconnect ref = -1 src = 27 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 27 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 27 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 28
Jack: JackEngine::PortDisconnect ref = -1 src = 28 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 28 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 28 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 29
Jack: JackEngine::PortDisconnect ref = -1 src = 29 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 29 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 29 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 30
Jack: JackEngine::PortDisconnect ref = -1 src = 30 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 30 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 30 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 31
Jack: JackEngine::PortDisconnect ref = -1 src = 31 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 31 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 31 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 32
Jack: JackEngine::PortDisconnect ref = -1 src = 32 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 32 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 32 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 33
Jack: JackEngine::PortDisconnect ref = -1 src = 33 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 33 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 33 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 34
Jack: JackEngine::PortDisconnect ref = -1 src = 34 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 34 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 34 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 35
Jack: JackEngine::PortDisconnect ref = -1 src = 35 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 35 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 35 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 36
Jack: JackEngine::PortDisconnect ref = -1 src = 36 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 36 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 36 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 37
Jack: JackEngine::PortDisconnect ref = -1 src = 37 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 37 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 37 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 38
Jack: JackEngine::PortDisconnect ref = -1 src = 38 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 38 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 38 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 39
Jack: JackEngine::PortDisconnect ref = -1 src = 39 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 39 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 39 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 40
Jack: JackEngine::PortDisconnect ref = -1 src = 40 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 40 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 40 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 41
Jack: JackEngine::PortDisconnect ref = -1 src = 41 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 41 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 41 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::PortUnRegister ref = 2 port_index = 42
Jack: JackEngine::PortDisconnect ref = -1 src = 42 dst = 65535
Jack: JackGraphManager::DisconnectAllOutput port_index = 42 
Jack: JackConnectionManager::RemoveOutputPort ref = 2 port_index = 42 
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ClientNotify: no callback for notification = 10
Jack: JackEngine::ReleaseRefnum server quit
Server 'localhost' exited with exit code 0.
server 'localhost' disconnected shared memory interface
dyfer commented 1 year ago

@ErikNatanael thank you for the report. I can confirm this also occurs on macOS with a recent develop build.

Backtrace:

``` Thread 5 Crashed: 0 scsynth 0x100cdaa6c DoBufferColoring(World*, GraphDef*) + 144 (SC_GraphDef.cpp:875) 1 scsynth 0x100cd9fe4 GraphDef_Read(World*, char*&, GraphDef*, int) + 1696 (SC_GraphDef.cpp:421) 2 scsynth 0x100cd9fe4 GraphDef_Read(World*, char*&, GraphDef*, int) + 1696 (SC_GraphDef.cpp:421) 3 scsynth 0x100cd9920 GraphDefLib_Read(World*, char*, GraphDef*) + 208 (SC_GraphDef.cpp:200) 4 scsynth 0x100cdb508 GraphDef_Load(World*, boost::filesystem::path const&, GraphDef*) + 84 (SC_GraphDef.cpp:623) 5 scsynth 0x100cdb420 GraphDef_LoadGlob(World*, char const*, GraphDef*) + 224 (SC_GraphDef.cpp:609) 6 scsynth 0x100cf5208 LoadSynthDefCmd::Stage2() + 28 (SC_SequencedCommand.cpp:1355) 7 scsynth 0x100cedb60 SC_SequencedCommand::CallNextStage() + 292 (SC_SequencedCommand.cpp:194) 8 scsynth 0x100cd1678 FifoMsg::Perform() + 12 (SC_FifoMsg.h:47) [inlined] 9 scsynth 0x100cd1678 SCMsgFifo::MsgFifo::Perform() + 52 (MsgFifo.h:62) [inlined] 10 scsynth 0x100cd1678 SC_AudioDriver::RunThread() + 584 (SC_CoreAudio.cpp:383) 11 scsynth 0x100cd4d90 decltype(*(static_cast(fp0)).*fp()) std::__1::__invoke(void (SC_AudioDriver::*&)(), SC_AudioDriver*&) + 28 (type_traits:3859) [inlined] 12 scsynth 0x100cd4d90 std::__1::__bind_return, std::__1::tuple<>, __is_valid_bind_return, std::__1::tuple<> >::value>::type std::__1::__apply_functor, 0ul, std::__1::tuple<> >(void (SC_AudioDriver::*&)(), std::__1::tuple&, std::__1::__tuple_indices<0ul>, std::__1::tuple<>&&) + 28 (bind.h:257) [inlined] 13 scsynth 0x100cd4d90 std::__1::__bind_return, std::__1::tuple<>, __is_valid_bind_return, std::__1::tuple<> >::value>::type std::__1::__bind::operator()<>() + 28 (bind.h:292) [inlined] 14 scsynth 0x100cd4d90 decltype(static_cast>(fp)()) std::__1::__invoke >(std::__1::__bind&&) + 28 (type_traits:3918) [inlined] 15 scsynth 0x100cd4d90 void std::__1::__thread_execute >, std::__1::__bind >(std::__1::tuple >, std::__1::__bind >&, std::__1::__tuple_indices<>) + 28 (thread:287) [inlined] 16 scsynth 0x100cd4d90 void* std::__1::__thread_proxy >, std::__1::__bind > >(void*) + 64 (thread:298) 17 libsystem_pthread.dylib 0x1be0e426c _pthread_start + 148 18 libsystem_pthread.dylib 0x1be0df08c thread_start + 8 ```

I'm not sure if this is related to sc3-plugins (because of Greyhole) or is it more of an scsynth bug (which should be filed in supercollider instead). One point of interest is that for some reason Greyhole Ugen does not seem to load on supernova for me (I wanted to check whether supernova crashes as well); I get signal_idle_synthesis: Unit generator GreyholeRaw not installed.

telephon commented 1 year ago

an idea what this could be, @LFSaw ?

LFSaw commented 1 year ago

AFAIK, Greyhole did never work on supernova, I'm afraid... this has possibly to do with it being a faust auto-generated plugin (?).

dyfer commented 1 year ago

I vaguely remember that there might have been some fix submitted to Faust to fix supernova plugin creation. So maybe one thing try would be to re-create this plugin with a newer version of Faust (not necessarily for supernova, but to check whether that fixes the submitted issue), but that's a shot in the dark.