sdk icon indicating copy to clipboard operation
sdk copied to clipboard

IsolateGroup.runSync does not handle cycles in object graph when checking closures

Open alexmarkov opened this issue 6 days ago • 0 comments

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

alexmarkov avatar Dec 05 '25 16:12 alexmarkov