dart-lang / sdk

The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
10.12k stars 1.57k forks source link

Segmentation fault of unknown origin #15740

Closed nex3 closed 9 years ago

nex3 commented 10 years ago

I've been experiencing a segfault that I haven't been able to track down. It looks like it has something to do with threading and multiple isolates, but neither prints nor GDB provided much insight into what was going on. I've attached a diff (made against r31305); running pkg/scheduled_test/test/scheduled_stream/stream_matcher_test.dart on Goobuntu caused the segfault.


Attachment: segfault.diff (28.90 KB)

nex3 commented 10 years ago

I'm finding it very difficult to work around this, FWIW.

iposva-google commented 10 years ago

When running this in the debugger I can see that we are getting into an endless recursion compiling. Here are the first few hundred stack frames:

    frame #­0: 0x0029fba9 dartdart::BaseIsolate::AssertCurrent(dart::BaseIsolate\*) [inlined] dart::Isolate::Current(this=0x00000000, line=269) + 6 at isolate.h:82 &nbsp;&nbsp;&nbsp;&nbsp;frame #­1: 0x0029fba3 dartdart::BaseIsolate::AssertCurrent(isolate=0x0021880e) + 3 at isolate.cc:269     frame #­2: 0x002188c5 dartdart::NoGCScope::~NoGCScope() [inlined] dart::StackResource::~StackResource() + 197 at allocation.h:58 &nbsp;&nbsp;&nbsp;&nbsp;frame #­3: 0x00218866 dartdart::NoGCScope::~NoGCScope(this=<unavailable>) + 102 at heap.cc:499     frame #­4: 0x0035ce4d dartdart::OneByteString::CharAddr(str=&lt;unavailable>, index=&lt;unavailable>) + 381 at object.h:5255 &nbsp;&nbsp;&nbsp;&nbsp;frame #­5: 0x002aad1e dartdart::String::CharAt(this=<unavailable>, index=0) const + 254 at object.cc:13951     frame #­6: 0x002cb354 dartdart::Class::LookupAccessorFunction(char const\*, long, dart::String const&) const [inlined] dart::MatchesAccessorName(accessor_name=&lt;unavailable>, prefix_length=&lt;unavailable>, prefix=&lt;unavailable>) + 66 at object.cc:3007 &nbsp;&nbsp;&nbsp;&nbsp;frame #­7: 0x002cb312 dartdart::Class::LookupAccessorFunction(this=<unavailable>, prefix=<unavailable>, prefix_length=<unavailable>, name=<unavailable>) const + 882 at object.cc:3132     frame #­8: 0x002caf92 dartdart::Class::LookupGetterFunction(this=0x0741cfe0, name=0x0741c2a8) const + 50 at object.cc:3107 &nbsp;&nbsp;&nbsp;&nbsp;frame #­9: 0x00387857 dartdart::Parser::ResolveIdentInLocalScope(this=<unavailable>, ident_pos=<unavailable>, ident=0x0741c2a8, node=0x00000000) + 919 at parser.cc:8992     frame #­10: 0x00379a77 dartdart::Parser::ParseType(this=0xb0105bb0, finalization=-1341107496) + 183 at parser.cc:9294 &nbsp;&nbsp;&nbsp;&nbsp;frame #­11: 0x00392ea6 dartdart::Parser::ParseTypeArguments(this=0xb0105bb0, finalization=<unavailable>) + 486 at parser.cc:4446     frame #­12: 0x00379c14 dartdart::Parser::ParseType(this=0xb0105bb0, finalization=kCanonicalizeWellFormed) + 596 at parser.cc:9317 &nbsp;&nbsp;&nbsp;&nbsp;frame #­13: 0x00371e42 dartdart::Parser::ParseNewOperator(this=<unavailable>, op_kind=<unavailable>) + 210 at parser.cc:9862     frame #­14: 0x00374917 dartdart::Parser::ParsePrimary(this=&lt;unavailable>) + 3383 at parser.cc:10339 &nbsp;&nbsp;&nbsp;&nbsp;frame #­15: 0x003a6b3c dartdart::Parser::ParsePostfixExpr(this=0xb0105bb0) + 268 at parser.cc:8574     frame #­16: 0x003a3938 dartdart::Parser::ParseUnaryExpr(this=&lt;unavailable>) + 968 at parser.cc:8058 &nbsp;&nbsp;&nbsp;&nbsp;frame #­17: 0x0037cdb6 dartdart::Parser::ParseBinaryExpr(this=<unavailable>, min_preced=<unavailable>) + 150 at parser.cc:7544     frame #­18: 0x0037f311 dartdart::Parser::ParseConditionalExpr(this=0xb0105bb0) + 97 at parser.cc:8005 &nbsp;&nbsp;&nbsp;&nbsp;frame #­19: 0x0037663a dartdart::Parser::ParseExpr(this=0xb0105bb0, require_compiletime_const=<unavailable>, consume_cascades=true) + 714 at parser.cc:7948     frame #­20: 0x00398c43 dartdart::Parser::ParseVariableDeclaration(this=0xb0105bb0, type=&lt;unavailable>, is_final=true, is_const=false) + 419 at parser.cc:5423 &nbsp;&nbsp;&nbsp;&nbsp;frame #­21: 0x00399246 dartdart::Parser::ParseVariableDeclarationList(this=0xb0105bb0) + 502 at parser.cc:5533     frame #­22: 0x0039b39d dartdart::Parser::ParseStatement(this=0xb0105bb0) + 1629 at parser.cc:7205 &nbsp;&nbsp;&nbsp;&nbsp;frame #­23: 0x003854a0 dartdart::Parser::ParseStatementSequence(this=0xb0105bb0) + 256 at parser.cc:6086     frame #­24: 0x00369925 dartdart::Parser::ParseFunc(this=&lt;unavailable>, func=&lt;unavailable>, default_parameter_values=&lt;unavailable>) + 4005 at parser.cc:2895 &nbsp;&nbsp;&nbsp;&nbsp;frame #­25: 0x00368144 dartdart::Parser::ParseFunction(parsed_function=<unavailable>) + 900 at parser.cc:787     frame #­26: 0x0015d991 dartdart::CompileFunctionHelper(function=0xb01068a8, optimized=true, osr_id=-1341104888) + 2401 at compiler.cc:775 &nbsp;&nbsp;&nbsp;&nbsp;frame #­27: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb01068a8, osr_id=-1) + 25 at compiler.cc:838     frame #­28: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb01068a8, isolate=0xb01068a8) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­29: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb0106b40) + 473 at code_generator.cc:1409     frame #­30: 0x00d0006c     frame #­31: 0x04ba1f1e     frame #­32: 0x04ba1087     frame #­33: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­34: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­35: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­36: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x073f7c64, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­37: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb01072e8) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­38: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb010758c, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­39: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb0108088, optimized=true, osr_id=-1341098776) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­40: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb0108088, osr_id=-1) + 25 at compiler.cc:838     frame #­41: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb0108088, isolate=0xb0108088) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­42: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb0108320) + 473 at code_generator.cc:1409     frame #­43: 0x00d0006c     frame #­44: 0x04ba1f1e     frame #­45: 0x04ba1087     frame #­46: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­47: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­48: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­49: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x073aa864, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­50: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb0108ac8) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­51: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb0108d6c, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­52: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb0109868, optimized=true, osr_id=-1341092664) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­53: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb0109868, osr_id=-1) + 25 at compiler.cc:838     frame #­54: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb0109868, isolate=0xb0109868) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­55: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb0109b00) + 473 at code_generator.cc:1409     frame #­56: 0x00d0006c     frame #­57: 0x04ba1f1e     frame #­58: 0x04ba1087     frame #­59: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­60: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­61: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­62: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x0735d464, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­63: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb010a2a8) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­64: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb010a54c, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­65: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb010b048, optimized=true, osr_id=-1341086552) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­66: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb010b048, osr_id=-1) + 25 at compiler.cc:838     frame #­67: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb010b048, isolate=0xb010b048) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­68: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb010b2e0) + 473 at code_generator.cc:1409     frame #­69: 0x00d0006c     frame #­70: 0x04ba1f1e     frame #­71: 0x04ba1087     frame #­72: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­73: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­74: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­75: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x07310064, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­76: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb010ba88) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­77: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb010bd2c, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­78: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb010c828, optimized=true, osr_id=-1341080440) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­79: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb010c828, osr_id=-1) + 25 at compiler.cc:838     frame #­80: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb010c828, isolate=0xb010c828) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­81: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb010cac0) + 473 at code_generator.cc:1409     frame #­82: 0x00d0006c     frame #­83: 0x04ba1f1e     frame #­84: 0x04ba1087     frame #­85: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­86: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­87: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­88: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x072c2c64, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­89: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb010d268) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­90: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb010d50c, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­91: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb010e008, optimized=true, osr_id=-1341074328) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­92: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb010e008, osr_id=-1) + 25 at compiler.cc:838     frame #­93: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb010e008, isolate=0xb010e008) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­94: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb010e2a0) + 473 at code_generator.cc:1409     frame #­95: 0x00d0006c     frame #­96: 0x04ba1f1e     frame #­97: 0x04ba1087     frame #­98: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­99: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­100: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­101: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x07283064, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­102: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb010ea48) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­103: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb010ecec, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­104: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb010f7e8, optimized=true, osr_id=-1341068216) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­105: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb010f7e8, osr_id=-1) + 25 at compiler.cc:838     frame #­106: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb010f7e8, isolate=0xb010f7e8) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­107: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb010fa80) + 473 at code_generator.cc:1409     frame #­108: 0x00d0006c     frame #­109: 0x04ba1f1e     frame #­110: 0x04ba1087     frame #­111: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­112: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­113: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­114: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x06855864, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­115: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb0110228) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­116: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb01104cc, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­117: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb0110fc8, optimized=true, osr_id=-1341062104) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­118: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb0110fc8, osr_id=-1) + 25 at compiler.cc:838     frame #­119: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb0110fc8, isolate=0xb0110fc8) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­120: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb0111260) + 473 at code_generator.cc:1409     frame #­121: 0x00d0006c     frame #­122: 0x04ba1f1e     frame #­123: 0x04ba1087     frame #­124: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­125: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­126: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­127: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x068a2c64, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­128: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb0111a08) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­129: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb0111cac, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­130: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb01127a8, optimized=true, osr_id=-1341055992) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­131: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb01127a8, osr_id=-1) + 25 at compiler.cc:838     frame #­132: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb01127a8, isolate=0xb01127a8) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­133: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb0112a40) + 473 at code_generator.cc:1409     frame #­134: 0x00d0006c     frame #­135: 0x04ba1f1e     frame #­136: 0x04ba1087     frame #­137: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­138: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­139: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­140: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x068f0064, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­141: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb01131e8) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­142: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb011348c, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­143: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb0113f88, optimized=true, osr_id=-1341049880) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­144: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb0113f88, osr_id=-1) + 25 at compiler.cc:838     frame #­145: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb0113f88, isolate=0xb0113f88) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­146: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb0114220) + 473 at code_generator.cc:1409     frame #­147: 0x00d0006c     frame #­148: 0x04ba1f1e     frame #­149: 0x04ba1087     frame #­150: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­151: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­152: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­153: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x0693d464, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­154: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb01149c8) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­155: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb0114c6c, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­156: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb0115768, optimized=true, osr_id=-1341043768) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­157: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb0115768, osr_id=-1) + 25 at compiler.cc:838     frame #­158: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb0115768, isolate=0xb0115768) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­159: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb0115a00) + 473 at code_generator.cc:1409     frame #­160: 0x00d0006c     frame #­161: 0x04ba1f1e     frame #­162: 0x04ba1087     frame #­163: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­164: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­165: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­166: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x0698a864, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­167: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb01161a8) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­168: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb011644c, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­169: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb0116f48, optimized=true, osr_id=-1341037656) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­170: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb0116f48, osr_id=-1) + 25 at compiler.cc:838     frame #­171: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb0116f48, isolate=0xb0116f48) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­172: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb01171e0) + 473 at code_generator.cc:1409     frame #­173: 0x00d0006c     frame #­174: 0x04ba1f1e     frame #­175: 0x04ba1087     frame #­176: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­177: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­178: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­179: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x069d7c64, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­180: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb0117988) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­181: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb0117c2c, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­182: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb0118728, optimized=true, osr_id=-1341031544) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­183: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb0118728, osr_id=-1) + 25 at compiler.cc:838     frame #­184: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb0118728, isolate=0xb0118728) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­185: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb01189c0) + 473 at code_generator.cc:1409     frame #­186: 0x00d0006c     frame #­187: 0x04ba1f1e     frame #­188: 0x04ba1087     frame #­189: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­190: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­191: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­192: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x06a25064, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­193: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb0119168) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­194: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb011940c, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­195: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb0119f08, optimized=true, osr_id=-1341025432) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­196: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb0119f08, osr_id=-1) + 25 at compiler.cc:838     frame #­197: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb0119f08, isolate=0xb0119f08) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­198: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb011a1a0) + 473 at code_generator.cc:1409     frame #­199: 0x00d0006c     frame #­200: 0x04ba1f1e     frame #­201: 0x04ba1087     frame #­202: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­203: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­204: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­205: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x06a72464, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­206: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb011a948) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­207: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb011abec, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­208: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb011b6e8, optimized=true, osr_id=-1341019320) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­209: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb011b6e8, osr_id=-1) + 25 at compiler.cc:838     frame #­210: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb011b6e8, isolate=0xb011b6e8) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­211: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb011b980) + 473 at code_generator.cc:1409     frame #­212: 0x00d0006c     frame #­213: 0x04ba1f1e     frame #­214: 0x04ba1087     frame #­215: 0x0016c16d dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>, arguments_descriptor=&lt;unavailable>, context=&lt;unavailable>) + 845 at dart_entry.cc:68 &nbsp;&nbsp;&nbsp;&nbsp;frame #­216: 0x0016be14 dartdart::DartEntry::InvokeFunction(function=<unavailable>, arguments=<unavailable>, arguments_descriptor=<unavailable>) + 500 at dart_entry.cc:37     frame #­217: 0x0016bb89 dartdart::DartEntry::InvokeFunction(function=&lt;unavailable>, arguments=&lt;unavailable>) + 249 at dart_entry.cc:27 &nbsp;&nbsp;&nbsp;&nbsp;frame #­218: 0x0023b0a8 dartdart::StringInterpolateInstr::Canonicalize(this=0x06fb6064, flow_graph=0x00ba4021) + 1560 at intermediate_language.cc:2885     frame #­219: 0x001dccd3 dartdart::FlowGraphOptimizer::Canonicalize(this=0xb011c128) + 211 at flow_graph_optimizer.cc:524 &nbsp;&nbsp;&nbsp;&nbsp;frame #­220: 0x0015f856 dartdart::CompileParsedFunctionHelper(parsed_function=0xb011c3cc, optimized=true, osr_id=<unavailable>) + 6278 at compiler.cc:509     frame #­221: 0x0015d9bd dartdart::CompileFunctionHelper(function=0xb011cec8, optimized=true, osr_id=-1341013208) + 2445 at compiler.cc:780 &nbsp;&nbsp;&nbsp;&nbsp;frame #­222: 0x0015de59 dartdart::Compiler::CompileOptimizedFunction(function=0xb011cec8, osr_id=-1) + 25 at compiler.cc:838     frame #­223: 0x00152ec4 dartdart::DRT_OptimizeInvokedFunction(dart::NativeArguments) [inlined] dart::NativeArguments::isolate(this=0x00902b60, this=0x00902b60, this=&lt;unavailable>, isolate=0xb011cec8, isolate=0xb011cec8) const + 395 at code_generator.cc:1416 &nbsp;&nbsp;&nbsp;&nbsp;frame #­224: 0x00152d39 dartdart::DRT_OptimizeInvokedFunction(arguments=NativeArguments at 0xb011d160) + 473 at code_generator.cc:1409


cc @sgmitrovic. Set owner to @fsc8000. Added Accepted label.

iposva-google commented 10 years ago

It looks like interpolation is triggering recompilation/optimization of something that is needed as part of compilation.

fsc8000 commented 10 years ago

How do I reproduce this?

I tried applying your patch and running pkg/scheduled_test/test/scheduled_stream/stream_matcher_test.dart, but all I get is RuntimeError, but no segmentation fault.

FAILED: none-vm debug_ia32 pkg/scheduled_test/test/scheduled_stream/stream_matcher_test Expected: Pass Actual: RuntimeError CommandOutput[vm]:

stdout: unittest-suite-wait-for-done FAIL: nextValues() fails   Expected future to complete successfully, but it failed with Expected all tests to pass, but some failed:   | FAIL: test   | Caught ScheduleError:   | | Expected: equals [2, 3, 4] unordered   | | Emitted: 1   | | 3   | | * 2   | | Which: Expected 3 values matching: equals [2, 3, 4] unordered   | | | but the stream ended after 2 values.   |
  | Stack chain:   | | dart:isolate _RawReceivePortImpl._handleMessage   |
  | Error detected during task in queue "tasks":   | > stream emits equals [2, 3, 4] unordered   | |   | | Stack chain:   | | | package:scheduled_test/scheduled_stream.dart 79:13 ScheduledStream.expect   | | | pkg/scheduled_test/test/scheduled_stream/stream_matcher_test.dart 26:20 main.<fn>.<fn>   | | | dart:isolate _RawReceivePortImpl._handleMessage   | null   |   | 0 PASSED, 1 FAILED, 0 ERRORS   Stack trace:     #­0 expectTestsPass.<anonymous closure> (file:///media/SSD/dart5/dart/pkg/scheduled_test/test/metatest.dart:33:9)     #­1 _Future._propagateToListeners.<anonymous closure> (dart:async/future_impl.dart:453)     #­2 _rootRun (dart:async/zone.dart:683)     #­3 _RootZone.run (dart:async/zone.dart:832)     #­4 _Future._propagateToListeners (dart:async/future_impl.dart:445)     #­5 _Future._complete (dart:async/future_impl.dart:303)     #­6 _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:354)     #­7 _asyncRunCallback (dart:async/schedule_microtask.dart:18)     #­8 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:119)        package:unittest/src/simple_configuration.dart 137:7 SimpleConfiguration.onExpectFailure   package:unittest/src/simple_configuration.dart 15:28 _ExpectFailureHandler.fail   package:unittest/src/expect.dart 83:22 fail   package:unittest/src/future_matchers.dart 54:22 _Completes.matches.<fn>.<fn>   package:unittest/src/future_matchers.dart 41:36 _Completes.matches.<fn>   package:unittest/unittest.dart 468:28 invoke1.<fn>   package:unittest/unittest.dart 705:19 _guardAsync   package:unittest/unittest.dart 465:23 invoke1   package:unittest/src/future_matchers.dart 54:11 _Completes.matches.<fn>   dart:async/async_error.dart 10 _invokeErrorHandler   dart:async/future_impl.dart 469 _Future._propagateToListeners.<fn>   dart:async/zone.dart 683 _rootRun   dart:async/zone.dart 832 _RootZone.run   dart:async/future_impl.dart 445 _Future._propagateToListeners   dart:async/future_impl.dart 303 _Future._complete   dart:async/future_impl.dart 354 _Future._asyncComplete.<fn>   dart:async/schedule_microtask.dart 18 _asyncRunCallback   dart:isolate-patch/isolate_patch.dart 119 _RawReceivePortImpl._handleMessage

0 PASSED, 1 FAILED, 0 ERRORS

stderr: Unhandled exception: Exception: Some tests failed.

­0 SimpleConfiguration.onDone (package:unittest/src/simple_configuration.dart:209:9)

­1 _completeTests (package:unittest/unittest.dart:782:17)

­2 _runTest (package:unittest/unittest.dart:737:19)

­3 _nextTestCase (package:unittest/unittest.dart:644:11)

­4 _asyncRunCallback (dart:async/schedule_microtask.dart:18)

­5 _asyncRunCallback (dart:async/schedule_microtask.dart:21)

­6 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:119)

Command[vm]: out/DebugIA32/dart --ignore-unrecognized-flags --package-root=out/DebugIA32/packages/ /media/SSD/dart5/dart/pkg/scheduled_test/test/scheduled_stream/stream_matcher_test.dart Took 0:00:01.416000

Short reproduction command (experimental):     python tools/test.py -t120 pkg/scheduled_test/test/scheduled_stream/stream_matcher_test

nex3 commented 10 years ago

Are you running on r31305?

nex3 commented 10 years ago

I'm unable to reproduce this anymore myself. I'm leaving it open since I'm not sure if the underlying issue has been fixed or if it's just no longer presenting itself in my code.

fsc8000 commented 10 years ago

Strange. Yes, I tried your diff to both r31305 and latest.

nex3 commented 10 years ago

I assume you rebuilt the VM against r31305 before running? If so, I'm at a loss as to how to reproduce this now.

iposva-google commented 10 years ago

Added AssumedStale label.