Open gewang opened 1 month ago
FYI
this crash is circumvented if the global Gain
is declared outside the class definition
global Gain bar;
class Foo
{
Gain boo => bar => dac;
}
Foo foo;
VM instruction dump:
ge@metroplex src % ./chuck +d c.ck
[c.ck]: dumping class Foo:
[c.ck]: -------
[c.ck]: Gain boo => bar => dac;
[c.ck]: [0] Chuck_Instr_Instantiate_Object( Gain )
[c.ck]: [1] Chuck_Instr_Pre_Constructor( ctor='class Object', offset=8 )
[c.ck]: [2] Chuck_Instr_Alloc_Member_Word( 8 )
[c.ck]: [3] Chuck_Instr_Assign_Object( )
[c.ck]: [4] Chuck_Instr_Reg_Push_Global( name='bar' )
[c.ck]: [5] Chuck_Instr_UGen_Link( )
[c.ck]: [6] Chuck_Instr_DAC( )
[c.ck]: [7] Chuck_Instr_UGen_Link( )
[c.ck]: [8] Chuck_Instr_Reg_Pop_Int( )
[c.ck]: [9] Chuck_Instr_Func_Return( )
[c.ck]: -------
[c.ck]: dumping c.ck:
[c.ck]: -------
[c.ck]: global Gain bar;
[c.ck]: [0] Chuck_Instr_Alloc_Word_Global( name='bar' )
[c.ck]: [1] Chuck_Instr_Reg_Pop_WordsMulti( 2 )
[c.ck]: Foo foo;
[c.ck]: [2] Chuck_Instr_Instantiate_Object( Foo )
[c.ck]: [3] Chuck_Instr_Pre_Constructor( ctor='class Object', offset=8 )
[c.ck]: [4] Chuck_Instr_Pre_Constructor( ctor='class Foo', offset=8 )
[c.ck]: [5] Chuck_Instr_Alloc_Word( 8 )
[c.ck]: [6] Chuck_Instr_Assign_Object( )
[c.ck]: [7] Chuck_Instr_Reg_Pop_WordsMulti( 2 )
[c.ck]: [8] Chuck_Instr_Release_Object2( 8 )
[c.ck]: [9] Chuck_Instr_EOC( )
[c.ck]: -------
on macOS, this indeterministically crashes
VM bytecode instruction dump