sdk
sdk copied to clipboard
IsolateGroup.runSync does not handle cycles in object graph when checking closures
Example:
import 'package:dart_internal/isolate_group.dart' show IsolateGroup;
void main(List<String> args) {
int i = 0;
void Function()? func1;
func1 = () {
++i;
};
void func2() {
func1!();
};
IsolateGroup.runSync(func2);
print(i);
}
dart --experimental-shared-data foo.dart
Segmentation fault
Backtrace from gdb:
#0 dart::VMHandles::AllocateHandle (zone=0x555557bda750) at out/ReleaseX64/../../runtime/vm/handles.cc:34
#1 0x00005555577af1a2 in dart::Object::HandleImpl (zone=0x555557bda750, ptr=..., default_cid=57) at ../../runtime/vm/object.h:738
#2 0x0000555557817a06 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:383
#3 0x0000555557817ab0 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:399
#4 0x0000555557817ab0 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:399
#5 0x0000555557817ab0 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:399
#6 0x0000555557817ab0 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:399
#7 0x0000555557817ab0 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:399
#8 0x0000555557817ab0 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:399
#9 0x0000555557817ab0 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:399
#10 0x0000555557817ab0 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:399
#11 0x0000555557817ab0 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:399
#12 0x0000555557817ab0 in dart::FfiCallbackMetadata::EnsureOnlyTriviallyImmutableValuesInClosure (zone=0x555557bda750, closure_ptr=...) at out/ReleaseX64/../../runtime/vm/ffi_callback_metadata.cc:399
...
/cc @aam