Skip to content

Commit 6fcd1de

Browse files
Clement Skaucommit-bot@chromium.org
Clement Skau
authored andcommitted
[SDK] Fixes missing stack trace line numbers.
CodeSourceMapBuilder::NoteDescriptor(..) would previously only emit CSM entries if its stack_traces_only_ flag was set, which FlowGraphCompiler would only do if compiled in PRODUCT mode: runtime/vm/compiler/backend/flow_graph_compiler.cc:162 Bug: #39525 Change-Id: I78c56a18a5a95ef3c8c37a2d7eae6ab612e6674f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/127464 Commit-Queue: Clement Skau <[email protected]> Reviewed-by: Martin Kustermann <[email protected]>
1 parent 464b254 commit 6fcd1de

File tree

2 files changed

+61
-61
lines changed

2 files changed

+61
-61
lines changed

runtime/tests/vm/dart/causal_stacks/utils.dart

Lines changed: 60 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,12 @@ Future<void> doTestAwaitCatchError(
189189
// For: --causal-async-stacks
190190
Future<void> doTestsCausal() async {
191191
final allYieldExpected = const <String>[
192-
r'^#0 throwSync \(.*/utils.dart:(16|16:3)\)$',
193-
r'^#1 allYield3 \(.*/utils.dart:(39|39:3)\)$',
192+
r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
193+
r'^#1 allYield3 \(.*/utils.dart:39(:3)?\)$',
194194
r'^<asynchronous suspension>$',
195-
r'^#2 allYield2 \(.*/utils.dart:(34|34:9)\)$',
195+
r'^#2 allYield2 \(.*/utils.dart:34(:9)?\)$',
196196
r'^<asynchronous suspension>$',
197-
r'^#3 allYield \(.*/utils.dart:(29|29:9)\)$',
197+
r'^#3 allYield \(.*/utils.dart:29(:9)?\)$',
198198
r'^<asynchronous suspension>$',
199199
];
200200
await doTestAwait(
@@ -234,10 +234,10 @@ Future<void> doTestsCausal() async {
234234
]);
235235

236236
final noYieldsExpected = const <String>[
237-
r'^#0 throwSync \(.*/utils.dart:(16|16:3)\)$',
238-
r'^#1 noYields3 \(.*/utils.dart:(54|54:3)\)$',
239-
r'^#2 noYields2 \(.*/utils.dart:(50|50:9)\)$',
240-
r'^#3 noYields \(.*/utils.dart:(46|46:9)\)$',
237+
r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
238+
r'^#1 noYields3 \(.*/utils.dart:54(:3)?\)$',
239+
r'^#2 noYields2 \(.*/utils.dart:50(:9)?\)$',
240+
r'^#3 noYields \(.*/utils.dart:46(:9)?\)$',
241241
];
242242
await doTestAwait(
243243
noYields,
@@ -277,12 +277,12 @@ Future<void> doTestsCausal() async {
277277
]);
278278

279279
final mixedYieldsExpected = const <String>[
280-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
280+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
281281
r'^<asynchronous suspension>$',
282-
r'^#1 mixedYields3 \(.*/utils.dart:(70|70:10)\)$',
283-
r'^#2 mixedYields2 \(.*/utils.dart:(66|66:9)\)$',
282+
r'^#1 mixedYields3 \(.*/utils.dart:70(:10)?\)$',
283+
r'^#2 mixedYields2 \(.*/utils.dart:66(:9)?\)$',
284284
r'^<asynchronous suspension>$',
285-
r'^#3 mixedYields \(.*/utils.dart:(61|61:9)\)$',
285+
r'^#3 mixedYields \(.*/utils.dart:61(:9)?\)$',
286286
];
287287
await doTestAwait(
288288
mixedYields,
@@ -322,12 +322,12 @@ Future<void> doTestsCausal() async {
322322
]);
323323

324324
final syncSuffixExpected = const <String>[
325-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
325+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
326326
r'^<asynchronous suspension>$',
327-
r'^#1 syncSuffix3 \(.*/utils.dart:(86|86:10)\)$',
328-
r'^#2 syncSuffix2 \(.*/utils.dart:(82|82:9)\)$',
327+
r'^#1 syncSuffix3 \(.*/utils.dart:86(:10)?\)$',
328+
r'^#2 syncSuffix2 \(.*/utils.dart:82(:9)?\)$',
329329
r'^<asynchronous suspension>$',
330-
r'^#3 syncSuffix \(.*/utils.dart:(77|77:9)\)$',
330+
r'^#3 syncSuffix \(.*/utils.dart:77(:9)?\)$',
331331
];
332332
await doTestAwait(
333333
syncSuffix,
@@ -367,7 +367,7 @@ Future<void> doTestsCausal() async {
367367
]);
368368

369369
final nonAsyncNoStackExpected = const <String>[
370-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
370+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
371371
r'^<asynchronous suspension>$',
372372
r'^#1 nonAsyncNoStack2.<anonymous closure> ',
373373
r'^#2 _RootZone.runUnary ',
@@ -387,8 +387,8 @@ Future<void> doTestsCausal() async {
387387
await doTestAwaitCatchError(nonAsyncNoStack, nonAsyncNoStackExpected);
388388

389389
final asyncStarThrowSyncExpected = const <String>[
390-
r'^#0 throwSync \(.*/utils.dart:(16|16:3)\)$',
391-
r'^#1 asyncStarThrowSync \(.*/utils.dart:(112|112:11)\)$',
390+
r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
391+
r'^#1 asyncStarThrowSync \(.*/utils.dart:112(:11)?\)$',
392392
r'^<asynchronous suspension>$',
393393
r'^#2 awaitEveryAsyncStarThrowSync \(.+\)$',
394394
];
@@ -430,9 +430,9 @@ Future<void> doTestsCausal() async {
430430
]);
431431

432432
final asyncStarThrowAsyncExpected = const <String>[
433-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
433+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
434434
r'^<asynchronous suspension>$',
435-
r'^#1 asyncStarThrowAsync \(.*/utils.dart:(126|126:11)\)$',
435+
r'^#1 asyncStarThrowAsync \(.*/utils.dart:126(:11)?\)$',
436436
r'^<asynchronous suspension>$',
437437
r'^#2 awaitEveryAsyncStarThrowAsync \(.+\)$',
438438
];
@@ -477,8 +477,8 @@ Future<void> doTestsCausal() async {
477477
// For: --no-causal-async-stacks
478478
Future<void> doTestsNoCausal() async {
479479
final allYieldExpected = const <String>[
480-
r'^#0 throwSync \(.*/utils.dart:(16|16:3)\)$',
481-
r'^#1 allYield3 \(.*/utils.dart:(39|39:3)\)$',
480+
r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
481+
r'^#1 allYield3 \(.*/utils.dart:39(:3)?\)$',
482482
r'^#2 _RootZone.runUnary ',
483483
r'^#3 _FutureListener.handleValue ',
484484
r'^#4 Future._propagateToListeners.handleValueCallback ',
@@ -496,16 +496,16 @@ Future<void> doTestsNoCausal() async {
496496
await doTestAwaitCatchError(allYield, allYieldExpected);
497497

498498
final noYieldsExpected = const <String>[
499-
r'^#0 throwSync \(.*/utils.dart:(16|16:3)\)$',
500-
r'^#1 noYields3 \(.*/utils.dart:(54|54:3)\)$',
499+
r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
500+
r'^#1 noYields3 \(.*/utils.dart:54(:3)?\)$',
501501
r'^#2 _AsyncAwaitCompleter.start ',
502-
r'^#3 noYields3 \(.*/utils.dart:(53|53:23)\)$',
503-
r'^#4 noYields2 \(.*/utils.dart:(50|50:9)\)$',
502+
r'^#3 noYields3 \(.*/utils.dart:53(:23)?\)$',
503+
r'^#4 noYields2 \(.*/utils.dart:50(:9)?\)$',
504504
r'^#5 _AsyncAwaitCompleter.start ',
505-
r'^#6 noYields2 \(.*/utils.dart:(49|49:23)\)$',
506-
r'^#7 noYields \(.*/utils.dart:(46|46:9)\)$',
505+
r'^#6 noYields2 \(.*/utils.dart:49(:23)?\)$',
506+
r'^#7 noYields \(.*/utils.dart:46(:9)?\)$',
507507
r'^#8 _AsyncAwaitCompleter.start ',
508-
r'^#9 noYields \(.*/utils.dart:(45|45:22)\)$',
508+
r'^#9 noYields \(.*/utils.dart:45(:22)?\)$',
509509
];
510510
await doTestAwait(
511511
noYields,
@@ -652,7 +652,7 @@ Future<void> doTestsNoCausal() async {
652652
]);
653653

654654
final mixedYieldsExpected = const <String>[
655-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
655+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
656656
r'^#1 _RootZone.runUnary ',
657657
r'^#2 _FutureListener.handleValue ',
658658
r'^#3 Future._propagateToListeners.handleValueCallback ',
@@ -670,7 +670,7 @@ Future<void> doTestsNoCausal() async {
670670
await doTestAwaitCatchError(mixedYields, mixedYieldsExpected);
671671

672672
final syncSuffixExpected = const <String>[
673-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
673+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
674674
r'^#1 _RootZone.runUnary ',
675675
r'^#2 _FutureListener.handleValue ',
676676
r'^#3 Future._propagateToListeners.handleValueCallback ',
@@ -688,7 +688,7 @@ Future<void> doTestsNoCausal() async {
688688
await doTestAwaitCatchError(syncSuffix, syncSuffixExpected);
689689

690690
final nonAsyncNoStackExpected = const <String>[
691-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
691+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
692692
r'^#1 _RootZone.runUnary ',
693693
r'^#2 _FutureListener.handleValue ',
694694
r'^#3 Future._propagateToListeners.handleValueCallback ',
@@ -706,8 +706,8 @@ Future<void> doTestsNoCausal() async {
706706
await doTestAwaitCatchError(nonAsyncNoStack, nonAsyncNoStackExpected);
707707

708708
final asyncStarThrowSyncExpected = const <String>[
709-
r'^#0 throwSync \(.+/utils.dart:(16|16:3)\)$',
710-
r'^#1 asyncStarThrowSync \(.+/utils.dart:(112|112:11)\)$',
709+
r'^#0 throwSync \(.+/utils.dart:16(:3)?\)$',
710+
r'^#1 asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
711711
r'^#2 _RootZone.runUnary \(.+\)$',
712712
r'^#3 _FutureListener.handleValue \(.+\)$',
713713
r'^#4 Future._propagateToListeners.handleValueCallback \(.+\)$',
@@ -727,7 +727,7 @@ Future<void> doTestsNoCausal() async {
727727
awaitEveryAsyncStarThrowSync, asyncStarThrowSyncExpected);
728728

729729
final asyncStarThrowAsyncExpected = const <String>[
730-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
730+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
731731
r'^#1 _RootZone.runUnary ',
732732
r'^#2 _FutureListener.handleValue ',
733733
r'^#3 Future._propagateToListeners.handleValueCallback ',
@@ -750,12 +750,12 @@ Future<void> doTestsNoCausal() async {
750750
// For: --lazy-async-stacks
751751
Future<void> doTestsLazy() async {
752752
final allYieldExpected = const <String>[
753-
r'^#0 throwSync \(.*/utils.dart:(16|16:3)\)$',
754-
r'^#1 allYield3 \(.*/utils.dart:(39|39:3)\)$',
753+
r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
754+
r'^#1 allYield3 \(.*/utils.dart:39(:3)?\)$',
755755
r'^<asynchronous suspension>$',
756-
r'^#2 allYield2 \(.*/utils.dart:(0|34|34:3)\)$',
756+
r'^#2 allYield2 \(.*/utils.dart:34(:3)?\)$',
757757
r'^<asynchronous suspension>$',
758-
r'^#3 allYield \(.*/utils.dart:(0|29|29:3)\)$',
758+
r'^#3 allYield \(.*/utils.dart:29(:3)?\)$',
759759
r'^<asynchronous suspension>$',
760760
];
761761
await doTestAwait(
@@ -786,17 +786,17 @@ Future<void> doTestsLazy() async {
786786
]);
787787

788788
final noYieldsExpected = const <String>[
789-
r'^#0 throwSync \(.*/utils.dart:(16|16:3)\)$',
790-
r'^#1 noYields3 \(.*/utils.dart:(54|54:3)\)$',
789+
r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
790+
r'^#1 noYields3 \(.*/utils.dart:54(:3)?\)$',
791791
// TODO(dart-vm): Figure out why this frame is flaky:
792792
r'^#2 _AsyncAwaitCompleter.start ',
793-
r'^#3 noYields3 \(.*/utils.dart:(53|53:23)\)$',
794-
r'^#4 noYields2 \(.*/utils.dart:(50|50:9)\)$',
793+
r'^#3 noYields3 \(.*/utils.dart:53(:23)?\)$',
794+
r'^#4 noYields2 \(.*/utils.dart:50(:9)?\)$',
795795
r'^#5 _AsyncAwaitCompleter.start ',
796-
r'^#6 noYields2 \(.*/utils.dart:(49|49:23)\)$',
797-
r'^#7 noYields \(.*/utils.dart:(46|46:9)\)$',
796+
r'^#6 noYields2 \(.*/utils.dart:49(:23)?\)$',
797+
r'^#7 noYields \(.*/utils.dart:46(:9)?\)$',
798798
r'^#8 _AsyncAwaitCompleter.start ',
799-
r'^#9 noYields \(.*/utils.dart:(45|45:22)\)$',
799+
r'^#9 noYields \(.*/utils.dart:45(:22)?\)$',
800800
];
801801
await doTestAwait(
802802
noYields,
@@ -839,11 +839,11 @@ Future<void> doTestsLazy() async {
839839
]);
840840

841841
final mixedYieldsExpected = const <String>[
842-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
842+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
843843
r'^<asynchronous suspension>$',
844-
r'^#1 mixedYields2 \(.*/utils.dart:(0|66|66:3)\)$',
844+
r'^#1 mixedYields2 \(.*/utils.dart:66(:3)?\)$',
845845
r'^<asynchronous suspension>$',
846-
r'^#2 mixedYields \(.*/utils.dart:(0|61|61:3)\)$',
846+
r'^#2 mixedYields \(.*/utils.dart:61(:3)?\)$',
847847
r'^<asynchronous suspension>$',
848848
];
849849
await doTestAwait(
@@ -874,11 +874,11 @@ Future<void> doTestsLazy() async {
874874
]);
875875

876876
final syncSuffixExpected = const <String>[
877-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
877+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
878878
r'^<asynchronous suspension>$',
879-
r'^#1 syncSuffix2 \(.*/utils.dart:(0|82|82:3)\)$',
879+
r'^#1 syncSuffix2 \(.*/utils.dart:82(:3)?\)$',
880880
r'^<asynchronous suspension>$',
881-
r'^#2 syncSuffix \(.*/utils.dart:(0|77|77:3)\)$',
881+
r'^#2 syncSuffix \(.*/utils.dart:77(:3)?\)$',
882882
r'^<asynchronous suspension>$',
883883
];
884884
await doTestAwait(
@@ -909,11 +909,11 @@ Future<void> doTestsLazy() async {
909909
]);
910910

911911
final nonAsyncNoStackExpected = const <String>[
912-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
912+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
913913
r'^<asynchronous suspension>$',
914-
r'^#1 nonAsyncNoStack1 \(.*/utils.dart:(0|95|95:36)\)$',
914+
r'^#1 nonAsyncNoStack1 \(.*/utils.dart:95(:36)?\)$',
915915
r'^<asynchronous suspension>$',
916-
r'^#2 nonAsyncNoStack \(.*/utils.dart:(0|93|93:35)\)$',
916+
r'^#2 nonAsyncNoStack \(.*/utils.dart:93(:35)?\)$',
917917
r'^<asynchronous suspension>$',
918918
];
919919
await doTestAwait(
@@ -944,8 +944,8 @@ Future<void> doTestsLazy() async {
944944
]);
945945

946946
final asyncStarThrowSyncExpected = const <String>[
947-
r'^#0 throwSync \(.+/utils.dart:(16|16:3)\)$',
948-
r'^#1 asyncStarThrowSync \(.+/utils.dart:(112|112:11)\)$',
947+
r'^#0 throwSync \(.+/utils.dart:16(:3)?\)$',
948+
r'^#1 asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
949949
r'^<asynchronous suspension>$',
950950
// Non-visible _onData frame.
951951
r'^<asynchronous suspension>$',
@@ -958,9 +958,9 @@ Future<void> doTestsLazy() async {
958958
awaitEveryAsyncStarThrowSync, asyncStarThrowSyncExpected);
959959

960960
final asyncStarThrowAsyncExpected = const <String>[
961-
r'^#0 throwAsync \(.*/utils.dart:(21|21:3)\)$',
961+
r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
962962
r'^<asynchronous suspension>$',
963-
r'^#1 asyncStarThrowAsync \(.*/utils.dart:(0|126|126:5)\)$',
963+
r'^#1 asyncStarThrowAsync \(.*/utils.dart:126(:5)?\)$',
964964
r'^<asynchronous suspension>$',
965965
// Non-visible _onData frame.
966966
r'^<asynchronous suspension>$',

runtime/vm/code_descriptors.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ void CodeSourceMapBuilder::NoteDescriptor(RawPcDescriptors::Kind kind,
463463
const uint8_t kCanThrow =
464464
RawPcDescriptors::kIcCall | RawPcDescriptors::kUnoptStaticCall |
465465
RawPcDescriptors::kRuntimeCall | RawPcDescriptors::kOther;
466-
if (stack_traces_only_ && ((kind & kCanThrow) != 0)) {
466+
if ((kind & kCanThrow) != 0) {
467467
BufferChangePosition(pos);
468468
BufferAdvancePC(pc_offset - buffered_pc_offset_);
469469
FlushBuffer();

0 commit comments

Comments
 (0)