@@ -1118,10 +1118,14 @@ func TestGoroutineLeakGC(t *testing.T) {
1118
1118
flakyLeaks map [* regexp.Regexp ]struct {}
1119
1119
}
1120
1120
1121
+ // FLAKYBOUNDARY is a special string that delineates flaky leaks from expected leaks
1122
+ // when using makeTest (below) to construct test cases.
1123
+ const FLAKYBOUNDARY = "$flaky-leaks$"
1124
+
1121
1125
// makeTest is a short-hand for creating test cases.
1122
1126
// Each of the leaks in the list is identified by a regular expression.
1123
1127
//
1124
- // If a leak is the string "FLAKY" , it notifies makeTest that any remaining
1128
+ // If a leak is FLAKYBOUNDARY , it notifies makeTest that any remaining
1125
1129
// leak patterns should be added to the flakyLeaks map.
1126
1130
makeTest := func (
1127
1131
cfg testCase ,
@@ -1142,7 +1146,7 @@ func TestGoroutineLeakGC(t *testing.T) {
1142
1146
1143
1147
mode := EXPECTED
1144
1148
for _ , leak := range leaks {
1145
- if leak == "FLAKY" {
1149
+ if leak == FLAKYBOUNDARY {
1146
1150
mode = FLAKY
1147
1151
continue
1148
1152
}
@@ -1202,84 +1206,115 @@ func TestGoroutineLeakGC(t *testing.T) {
1202
1206
// This list is curated for tests that are not excessively flaky.
1203
1207
gokerTestCases := []testCase {
1204
1208
makeTest (testCase {name : "Cockroach584" },
1205
- `main\.Cockroach584\.func2\.1 .* \[sync\.Mutex\.Lock\]` ),
1209
+ `main\.Cockroach584\.func2\.1 .* \[sync\.Mutex\.Lock\]` ,
1210
+ ),
1206
1211
makeTest (testCase {name : "Cockroach1055" },
1207
1212
`main\.Cockroach1055\.func2 .* \[chan receive\]` ,
1213
+ `main\.Cockroach1055\.func2\.2 .* \[sync\.WaitGroup\.Wait\]` ,
1208
1214
`main\.Cockroach1055\.func2\.1 .* \[chan receive\]` ,
1215
+ FLAKYBOUNDARY ,
1209
1216
`main\.Cockroach1055\.func2\.1 .* \[sync\.Mutex\.Lock\]` ,
1210
- `main\.Cockroach1055\.func2\.2 .* \[sync\.WaitGroup\.Wait\]` ),
1217
+ ),
1211
1218
makeTest (testCase {name : "Cockroach1462" },
1212
1219
`main\.\(\*Stopper_cockroach1462\)\.RunWorker\.func1 .* \[chan send\]` ,
1213
- `main\.Cockroach1462\.func2 .* \[sync\.WaitGroup\.Wait\]` ),
1220
+ `main\.Cockroach1462\.func2 .* \[sync\.WaitGroup\.Wait\]` ,
1221
+ ),
1214
1222
makeTest (testCase {name : "Cockroach2448" },
1215
1223
`main\.Cockroach2448\.func2\.gowrap1 .* \[select\]` ,
1216
- `main\.Cockroach2448\.func2\.gowrap2 .* \[select\]` ),
1224
+ `main\.Cockroach2448\.func2\.gowrap2 .* \[select\]` ,
1225
+ ),
1217
1226
makeTest (testCase {name : "Cockroach3710" },
1218
1227
`main\.Cockroach3710\.func2\.gowrap1 .* \[sync\.RWMutex\.RLock\]` ,
1219
- `main\.\(\*Store_cockroach3710\)\.processRaft\.func1 .* \[sync\.RWMutex\.Lock\]` ),
1228
+ `main\.\(\*Store_cockroach3710\)\.processRaft\.func1 .* \[sync\.RWMutex\.Lock\]` ,
1229
+ ),
1220
1230
makeTest (testCase {name : "Cockroach6181" , repetitions : 20 },
1221
1231
`main\.testRangeCacheCoalescedRequests_cockroach6181 .* \[sync\.WaitGroup\.Wait\]` ,
1222
1232
`main\.testRangeCacheCoalescedRequests_cockroach6181\.func1\.1 .* \[sync\.(RW)?Mutex\.Lock\]` ,
1223
- `main\.testRangeCacheCoalescedRequests_cockroach6181\.func1\.1 .* \[sync\.RWMutex\.RLock\]` ),
1233
+ `main\.testRangeCacheCoalescedRequests_cockroach6181\.func1\.1 .* \[sync\.RWMutex\.RLock\]` ,
1234
+ ),
1224
1235
makeTest (testCase {name : "Cockroach7504" , repetitions : 100 },
1225
1236
`main\.Cockroach7504\.func2\.1 .* \[sync\.Mutex\.Lock\]` ,
1226
- `main\.Cockroach7504\.func2\.2 .* \[sync\.Mutex\.Lock\]` ),
1237
+ `main\.Cockroach7504\.func2\.2 .* \[sync\.Mutex\.Lock\]` ,
1238
+ ),
1227
1239
makeTest (testCase {name : "Cockroach9935" },
1228
- `main\.Cockroach9935\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]` ),
1240
+ `main\.Cockroach9935\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1241
+ ),
1229
1242
makeTest (testCase {name : "Cockroach10214" },
1230
1243
`main\.Cockroach10214\.func2\.1 .* \[sync\.Mutex\.Lock\]` ,
1231
- `main\.Cockroach10214\.func2\.2 .* \[sync\.Mutex\.Lock\]` ),
1244
+ `main\.Cockroach10214\.func2\.2 .* \[sync\.Mutex\.Lock\]` ,
1245
+ ),
1232
1246
makeTest (testCase {name : "Cockroach10790" },
1233
- `main\.\(\*Replica_cockroach10790\)\.beginCmds\.func1 .* \[chan receive\]` ),
1247
+ `main\.\(\*Replica_cockroach10790\)\.beginCmds\.func1 .* \[chan receive\]` ,
1248
+ ),
1234
1249
makeTest (testCase {name : "Cockroach13197" },
1235
- `main\.\(\*DB_cockroach13197\)\.begin\.gowrap1 .* \[chan receive\]` ),
1250
+ `main\.\(\*DB_cockroach13197\)\.begin\.gowrap1 .* \[chan receive\]` ,
1251
+ ),
1236
1252
makeTest (testCase {name : "Cockroach13755" },
1237
- `main\.\(\*Rows_cockroach13755\)\.initContextClose\.gowrap1 .* \[chan receive\]` ),
1253
+ `main\.\(\*Rows_cockroach13755\)\.initContextClose\.gowrap1 .* \[chan receive\]` ,
1254
+ ),
1238
1255
makeTest (testCase {name : "Cockroach16167" },
1239
1256
`main\.Cockroach16167\.func2 .* \[sync\.RWMutex\.RLock\]` ,
1240
- `main\.Cockroach16167\.func2\.gowrap1 .* \[sync\.RWMutex\.Lock\]` ),
1257
+ `main\.Cockroach16167\.func2\.gowrap1 .* \[sync\.RWMutex\.Lock\]` ,
1258
+ ),
1241
1259
makeTest (testCase {name : "Cockroach10790" },
1242
- `main\.\(\*Replica_cockroach10790\)\.beginCmds\.func1 .* \[chan receive\]` ),
1260
+ `main\.\(\*Replica_cockroach10790\)\.beginCmds\.func1 .* \[chan receive\]` ,
1261
+ ),
1243
1262
makeTest (testCase {name : "Cockroach13197" },
1244
- `main\.\(\*DB_cockroach13197\)\.begin\.gowrap1 .* \[chan receive\]` ),
1263
+ `main\.\(\*DB_cockroach13197\)\.begin\.gowrap1 .* \[chan receive\]` ,
1264
+ ),
1245
1265
makeTest (testCase {name : "Cockroach13755" },
1246
- `main\.\(\*Rows_cockroach13755\)\.initContextClose\.gowrap1 .* \[chan receive\]` ),
1266
+ `main\.\(\*Rows_cockroach13755\)\.initContextClose\.gowrap1 .* \[chan receive\]` ,
1267
+ ),
1247
1268
makeTest (testCase {name : "Cockroach16167" },
1248
1269
`main\.Cockroach16167\.func2 .* \[sync\.RWMutex\.RLock\]` ,
1249
- `main\.Cockroach16167\.func2\.gowrap1 .* \[sync\.RWMutex\.Lock\]` ),
1270
+ `main\.Cockroach16167\.func2\.gowrap1 .* \[sync\.RWMutex\.Lock\]` ,
1271
+ ),
1250
1272
makeTest (testCase {name : "Cockroach18101" },
1251
- `main\.restore_cockroach18101\.func1 .* \[chan send\]` ),
1273
+ `main\.restore_cockroach18101\.func1 .* \[chan send\]` ,
1274
+ ),
1252
1275
makeTest (testCase {name : "Cockroach24808" },
1253
- `main\.Cockroach24808\.func2 .* \[chan send\]` ),
1276
+ `main\.Cockroach24808\.func2 .* \[chan send\]` ,
1277
+ ),
1254
1278
makeTest (testCase {name : "Cockroach25456" },
1255
- `main\.Cockroach25456\.func2 .* \[chan receive\]` ),
1279
+ `main\.Cockroach25456\.func2 .* \[chan receive\]` ,
1280
+ ),
1256
1281
makeTest (testCase {name : "Cockroach35073" },
1257
1282
`main\.Cockroach35073\.func2.1 .* \[chan send\]` ,
1258
- `main\.Cockroach35073\.func2 .* \[chan send\]` ),
1283
+ `main\.Cockroach35073\.func2 .* \[chan send\]` ,
1284
+ ),
1259
1285
makeTest (testCase {name : "Cockroach35931" },
1260
- `main\.Cockroach35931\.func2 .* \[chan send\]` ),
1286
+ `main\.Cockroach35931\.func2 .* \[chan send\]` ,
1287
+ ),
1261
1288
makeTest (testCase {name : "Etcd5509" },
1262
- `main\.Etcd5509\.func2 .* \[sync\.RWMutex\.Lock\]` ),
1289
+ `main\.Etcd5509\.func2 .* \[sync\.RWMutex\.Lock\]` ,
1290
+ ),
1263
1291
makeTest (testCase {name : "Etcd6857" },
1264
- `main\.Etcd6857\.func2\.gowrap2 .* \[chan send\]` ),
1292
+ `main\.Etcd6857\.func2\.gowrap2 .* \[chan send\]` ,
1293
+ ),
1265
1294
makeTest (testCase {name : "Etcd6873" },
1266
1295
`main\.Etcd6873\.func2\.gowrap1 .* \[chan receive\]` ,
1267
- `main\.newWatchBroadcasts_etcd6873\.func1 .* \[sync\.Mutex\.Lock\]` ),
1296
+ `main\.newWatchBroadcasts_etcd6873\.func1 .* \[sync\.Mutex\.Lock\]` ,
1297
+ ),
1268
1298
makeTest (testCase {name : "Etcd7492" },
1269
1299
`main\.Etcd7492\.func2 .* \[sync\.WaitGroup\.Wait\]` ,
1270
1300
`main\.Etcd7492\.func2\.1 .* \[chan send\]` ,
1271
- `main\.NewSimpleTokenTTLKeeper_etcd7492\.gowrap1 .* \[sync\.Mutex\.Lock\]` ),
1301
+ `main\.NewSimpleTokenTTLKeeper_etcd7492\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1302
+ ),
1272
1303
makeTest (testCase {name : "Etcd7902" },
1273
1304
`main\.doRounds_etcd7902\.gowrap1 .* \[chan receive\]` ,
1274
1305
`main\.doRounds_etcd7902\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1275
- `main\.runElectionFunc_etcd7902 .* \[sync\.WaitGroup\.Wait\]` ),
1306
+ `main\.runElectionFunc_etcd7902 .* \[sync\.WaitGroup\.Wait\]` ,
1307
+ ),
1276
1308
makeTest (testCase {name : "Etcd10492" },
1277
- `main\.Etcd10492\.func2 .* \[sync\.Mutex\.Lock\]` ),
1309
+ `main\.Etcd10492\.func2 .* \[sync\.Mutex\.Lock\]` ,
1310
+ ),
1278
1311
makeTest (testCase {name : "Grpc660" },
1279
- `main\.\(\*benchmarkClient_grpc660\)\.doCloseLoopUnary\.func1 .* \[chan send\]` ),
1312
+ `main\.\(\*benchmarkClient_grpc660\)\.doCloseLoopUnary\.func1 .* \[chan send\]` ,
1313
+ ),
1280
1314
makeTest (testCase {name : "Grpc795" },
1281
1315
`main\.\(\*test_grpc795\)\.startServer\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1282
- `main\.testServerGracefulStopIdempotent_grpc795 .* \[sync\.Mutex\.Lock\]` ),
1316
+ `main\.testServerGracefulStopIdempotent_grpc795 .* \[sync\.Mutex\.Lock\]` ,
1317
+ ),
1283
1318
makeTest (testCase {name : "Grpc862" },
1284
1319
`main\.DialContext_grpc862\.func2 .* \[chan receive\]` ),
1285
1320
makeTest (testCase {name : "Grpc1275" },
@@ -1288,117 +1323,156 @@ func TestGoroutineLeakGC(t *testing.T) {
1288
1323
`main\.DialContext_grpc1424\.func1 .* \[chan receive\]` ),
1289
1324
makeTest (testCase {name : "Grpc1460" },
1290
1325
`main\.Grpc1460\.func2\.gowrap1 .* \[chan receive\]` ,
1291
- `main\.Grpc1460\.func2\.gowrap2 .* \[sync\.Mutex\.Lock\]` ),
1292
- makeTest (testCase {name : "Grpc3017" , repetitions : 50 },
1326
+ `main\.Grpc1460\.func2\.gowrap2 .* \[sync\.Mutex\.Lock\]` ,
1327
+ ),
1328
+ makeTest (testCase {name : "Grpc3017" , repetitions : 20 },
1293
1329
// grpc/3017 involves a goroutine leak that also simultaneously engages many GC assists.
1294
- // Testing runtime behaviour when pivoting between regular and goroutine leak detection modes.
1330
+ FLAKYBOUNDARY ,
1331
+ // All the leaks are flaky.
1295
1332
`main\.Grpc3017\.func2 .* \[chan receive\]` ,
1296
1333
`main\.Grpc3017\.func2\.1 .* \[sync\.Mutex\.Lock\]` ,
1297
- `main\.\(\*lbCacheClientConn_grpc3017\)\.RemoveSubConn\.func1 .* \[sync\.Mutex\.Lock\]` ),
1334
+ `main\.\(\*lbCacheClientConn_grpc3017\)\.RemoveSubConn\.func1 .* \[sync\.Mutex\.Lock\]` ,
1335
+ ),
1298
1336
makeTest (testCase {name : "Hugo3251" , repetitions : 20 },
1299
1337
`main\.Hugo3251\.func2 .* \[sync\.WaitGroup\.Wait\]` ,
1300
1338
`main\.Hugo3251\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1301
- `main\.Hugo3251\.func2\.gowrap1 .* \[sync\.RWMutex\.RLock\]` ),
1339
+ `main\.Hugo3251\.func2\.gowrap1 .* \[sync\.RWMutex\.RLock\]` ,
1340
+ ),
1302
1341
makeTest (testCase {name : "Hugo5379" },
1303
- `main\.\(\*Page_hugo5379\)\.initContent\.func1\.1 .* \[sync\.Mutex\.Lock\]` ,
1304
1342
`main\.\(\*Site_hugo5379\)\.renderPages\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1305
1343
`main\.\(\*Page_hugo5379\)\.initContentPlainAndMeta(\.\(\*Page_hugo5379\)\.initContent)?\.func1\.1 .* \[sync\.Mutex\.Lock\]` ,
1306
- `main\.Hugo5379\.func2 .* \[sync\.WaitGroup\.Wait\]` ),
1344
+ `main\.Hugo5379\.func2 .* \[sync\.WaitGroup\.Wait\]` ,
1345
+ FLAKYBOUNDARY ,
1346
+ `main\.\(\*Page_hugo5379\)\.initContent\.func1\.1 .* \[sync\.Mutex\.Lock\]` ,
1347
+ ),
1307
1348
makeTest (testCase {name : "Istio16224" },
1308
1349
`main\.Istio16224\.func2 .* \[sync\.Mutex\.Lock\]` ,
1309
1350
`main\.Istio16224\.func2\.gowrap1 .* \[chan send\]` ,
1351
+ FLAKYBOUNDARY ,
1310
1352
// This is also a leak, but it is too flaky to be reliably detected.
1311
- `FLAKY ` ,
1312
- `main\.Istio16224\.func2\.gowrap1 .* \[chan receive\]` ),
1353
+ `main\.Istio16224\.func2\.gowrap1 .* \[chan receive\] ` ,
1354
+ ),
1313
1355
makeTest (testCase {name : "Istio17860" },
1314
- `main\.\(\*agent_istio17860\)\.Restart\.gowrap2 .* \[chan send\]` ),
1356
+ `main\.\(\*agent_istio17860\)\.Restart\.gowrap2 .* \[chan send\]` ,
1357
+ ),
1315
1358
makeTest (testCase {name : "Istio18454" },
1316
1359
`main\.\(\*Worker_istio18454\)\.Start\.func1 .* \[chan receive\]` ,
1317
- `main\.\(\*Worker_istio18454\)\.Start\.func1 .* \[chan send\]` ),
1360
+ `main\.\(\*Worker_istio18454\)\.Start\.func1 .* \[chan send\]` ,
1361
+ ),
1318
1362
// NOTE (vsaioc):
1319
1363
// Kubernetes/1321 is excluded due to a race condition in the original program
1320
- // that may, in very rare cases, lead to nil pointer dereference crashes.
1321
- // (Reproducible even with regular GC).
1364
+ // that may, in extremely rare cases, lead to nil pointer dereference crashes.
1365
+ // (Reproducible even with regular GC). Only kept here for posterity.
1322
1366
//
1323
1367
// makeTest(testCase{name: "Kubernetes1321"},
1324
1368
// `main\.NewMux_kubernetes1321\.gowrap1 .* \[chan send\]`,
1325
1369
// `main\.testMuxWatcherClose_kubernetes1321 .* \[sync\.Mutex\.Lock\]`),
1326
1370
makeTest (testCase {name : "Kubernetes5316" },
1327
- `main\.finishRequest_kubernetes5316\.func1 .* \[chan send\]` ),
1371
+ `main\.finishRequest_kubernetes5316\.func1 .* \[chan send\]` ,
1372
+ ),
1328
1373
makeTest (testCase {name : "Kubernetes6632" },
1329
1374
`main\.Kubernetes6632\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1330
- `main\.Kubernetes6632\.func2\.gowrap2 .* \[chan send\]` ),
1375
+ `main\.Kubernetes6632\.func2\.gowrap2 .* \[chan send\]` ,
1376
+ ),
1331
1377
makeTest (testCase {name : "Kubernetes10182" },
1332
1378
`main\.\(\*statusManager_kubernetes10182\)\.Start\.func1 .* \[sync\.Mutex\.Lock\]` ,
1333
1379
`main\.Kubernetes10182\.func2\.gowrap2 .* \[chan send\]` ,
1334
- `main\.Kubernetes10182\.func2\.gowrap3 .* \[chan send\]` ),
1335
- makeTest (testCase {name : "Kubernetes11298" , repetitions : 10 },
1380
+ `main\.Kubernetes10182\.func2\.gowrap3 .* \[chan send\]` ,
1381
+ ),
1382
+ makeTest (testCase {name : "Kubernetes11298" },
1383
+ // This entire test is flaky in producing leaks. Run it only to check for crashes.
1384
+ FLAKYBOUNDARY ,
1336
1385
`main\.After_kubernetes11298\.func1 .* \[chan receive\]` ,
1337
1386
`main\.After_kubernetes11298\.func1 .* \[sync\.Cond\.Wait\]` ,
1338
- `main\.Kubernetes11298\.func2 .* \[chan receive\]` ),
1387
+ `main\.Kubernetes11298\.func2 .* \[chan receive\]` ,
1388
+ ),
1339
1389
makeTest (testCase {name : "Kubernetes13135" },
1340
- `main\.Kubernetes13135\.func2 .* \[sync\.WaitGroup\.Wait\]` ),
1390
+ `main\.Kubernetes13135\.func2 .* \[sync\.WaitGroup\.Wait\]` ,
1391
+ ),
1341
1392
makeTest (testCase {name : "Kubernetes25331" },
1342
- `main\.Kubernetes25331\.func2\.gowrap1 .* \[chan send\]` ),
1393
+ `main\.Kubernetes25331\.func2\.gowrap1 .* \[chan send\]` ,
1394
+ ),
1343
1395
makeTest (testCase {name : "Kubernetes26980" },
1344
1396
`main\.Kubernetes26980\.func2 .* \[chan receive\]` ,
1345
1397
`main\.Kubernetes26980\.func2\.1 .* \[sync\.Mutex\.Lock\]` ,
1346
- `main\.Kubernetes26980\.func2\.gowrap2 .* \[chan receive\]` ),
1398
+ `main\.Kubernetes26980\.func2\.gowrap2 .* \[chan receive\]` ,
1399
+ ),
1347
1400
makeTest (testCase {name : "Kubernetes30872" },
1348
1401
`main\.\(\*DelayingDeliverer_kubernetes30872\)\.StartWithHandler\.func1 .* \[sync\.Mutex\.Lock\]` ,
1349
1402
`main\.\(\*federatedInformerImpl_kubernetes30872\)\.Start\.gowrap2 .* \[sync\.Mutex\.Lock\]` ,
1350
- `main\.\(\*NamespaceController_kubernetes30872\)\.Run\.func1 .* \[sync\.Mutex\.Lock\]` ),
1403
+ `main\.\(\*NamespaceController_kubernetes30872\)\.Run\.func1 .* \[sync\.Mutex\.Lock\]` ,
1404
+ ),
1351
1405
makeTest (testCase {name : "Kubernetes38669" },
1352
- `main\.newCacheWatcher_kubernetes38669\.gowrap1 .* \[chan send\]` ),
1406
+ `main\.newCacheWatcher_kubernetes38669\.gowrap1 .* \[chan send\]` ,
1407
+ ),
1353
1408
makeTest (testCase {name : "Kubernetes58107" , repetitions : 5 },
1354
1409
`main\.\(\*ResourceQuotaController_kubernetes58107\)\.Run\.gowrap[12] .* \[sync\.Cond\.Wait\]` ,
1355
1410
`main\.\(\*ResourceQuotaController_kubernetes58107\)\.Run\.gowrap[12] .* \[sync\.RWMutex\.RLock\]` ,
1356
- `main\.startResourceQuotaController_kubernetes58107\.gowrap2 .* \[sync\.RWMutex\.Lock\]` ),
1411
+ `main\.startResourceQuotaController_kubernetes58107\.gowrap2 .* \[sync\.RWMutex\.Lock\]` ,
1412
+ ),
1357
1413
makeTest (testCase {name : "Kubernetes62464" },
1358
1414
`main\.Kubernetes62464\.func2\.gowrap1 .* \[sync\.RWMutex\.RLock\]` ,
1359
- `main\.Kubernetes62464\.func2\.gowrap2 .* \[sync\.RWMutex\.Lock\]` ),
1415
+ `main\.Kubernetes62464\.func2\.gowrap2 .* \[sync\.RWMutex\.Lock\]` ,
1416
+ ),
1360
1417
makeTest (testCase {name : "Kubernetes70277" },
1361
- `main\.Kubernetes70277\.func2 .* \[chan receive\]` ),
1418
+ `main\.Kubernetes70277\.func2 .* \[chan receive\]` ,
1419
+ ),
1362
1420
makeTest (testCase {name : "Moby4395" },
1363
- `main\.Go_moby4395\.func1 .* \[chan send\]` ),
1364
- makeTest (testCase {name : "Moby4951" , repetitions : 10 },
1421
+ `main\.Go_moby4395\.func1 .* \[chan send\]` ,
1422
+ ),
1423
+ makeTest (testCase {name : "Moby4951" },
1424
+ FLAKYBOUNDARY ,
1365
1425
`main\.Moby4951\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1366
- `main\.Moby4951\.func2\.gowrap2 .* \[sync\.Mutex\.Lock\]` ),
1426
+ `main\.Moby4951\.func2\.gowrap2 .* \[sync\.Mutex\.Lock\]` ,
1427
+ ),
1367
1428
makeTest (testCase {name : "Moby7559" },
1368
- `main\.Moby7559\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]` ),
1429
+ `main\.Moby7559\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1430
+ ),
1369
1431
makeTest (testCase {name : "Moby17176" },
1370
- `main\.testDevmapperLockReleasedDeviceDeletion_moby17176\.func1 .* \[sync\.Mutex\.Lock\]` ),
1432
+ `main\.testDevmapperLockReleasedDeviceDeletion_moby17176\.func1 .* \[sync\.Mutex\.Lock\]` ,
1433
+ ),
1371
1434
makeTest (testCase {name : "Moby21233" },
1372
1435
`main\.\(\*Transfer_moby21233\)\.Watch\.func1 .* \[chan send\]` ,
1373
1436
`main\.\(\*Transfer_moby21233\)\.Watch\.func1 .* \[select\]` ,
1374
- `main\.testTransfer_moby21233 .* \[chan receive\]` ),
1437
+ `main\.testTransfer_moby21233 .* \[chan receive\]` ,
1438
+ ),
1375
1439
makeTest (testCase {name : "Moby25348" },
1376
- `main\.Moby25348\.func2\.gowrap1 .* \[sync\.WaitGroup\.Wait\]` ),
1440
+ `main\.Moby25348\.func2\.gowrap1 .* \[sync\.WaitGroup\.Wait\]` ,
1441
+ ),
1377
1442
makeTest (testCase {name : "Moby27782" },
1378
1443
`main\.\(\*JSONFileLogger_moby27782\)\.ReadLogs\.gowrap1 .* \[sync\.Cond\.Wait\]` ,
1379
- `main\.NewWatcher_moby27782\.gowrap1 .* \[select\]` ),
1444
+ `main\.NewWatcher_moby27782\.gowrap1 .* \[select\]` ,
1445
+ ),
1380
1446
makeTest (testCase {name : "Moby28462" },
1381
1447
`main\.Moby28462\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1382
- `main\.Moby28462\.func2\.gowrap2 .* \[chan send\]` ),
1448
+ `main\.Moby28462\.func2\.gowrap2 .* \[chan send\]` ,
1449
+ ),
1383
1450
makeTest (testCase {name : "Moby29733" },
1384
1451
`main\.Moby29733\.func2 .* \[chan receive\]` ,
1385
- `main\.testActive_moby29733\.func1 .* \[sync\.Cond\.Wait\]` ),
1452
+ `main\.testActive_moby29733\.func1 .* \[sync\.Cond\.Wait\]` ,
1453
+ ),
1386
1454
makeTest (testCase {name : "Moby30408" },
1387
1455
`main\.Moby30408\.func2 .* \[chan receive\]` ,
1388
- `main\.testActive_moby30408\.func1 .* \[sync\.Cond\.Wait\]` ),
1456
+ `main\.testActive_moby30408\.func1 .* \[sync\.Cond\.Wait\]` ,
1457
+ ),
1389
1458
makeTest (testCase {name : "Moby33781" },
1390
- `main\.monitor_moby33781\.func1 .* \[chan send\]` ),
1459
+ `main\.monitor_moby33781\.func1 .* \[chan send\]` ,
1460
+ ),
1391
1461
makeTest (testCase {name : "Moby36114" },
1392
- `main\.Moby36114\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]` ),
1462
+ `main\.Moby36114\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]` ,
1463
+ ),
1393
1464
makeTest (testCase {name : "Serving2137" },
1394
1465
`main\.\(\*Breaker_serving2137\)\.concurrentRequest\.func1 .* \[chan send\]` ,
1395
1466
`main\.\(\*Breaker_serving2137\)\.concurrentRequest\.func1 .* \[sync\.Mutex\.Lock\]` ,
1396
- `main\.Serving2137\.func2 .* \[chan receive\]` ),
1467
+ `main\.Serving2137\.func2 .* \[chan receive\]` ,
1468
+ ),
1397
1469
makeTest (testCase {name : "Syncthing4829" },
1398
- `main\.Syncthing4829\.func2 .* \[sync\.RWMutex\.RLock\]` ),
1470
+ `main\.Syncthing4829\.func2 .* \[sync\.RWMutex\.RLock\]` ,
1471
+ ),
1399
1472
makeTest (testCase {name : "Syncthing5795" },
1400
1473
`main\.\(\*rawConnection_syncthing5795\)\.Start\.func1 .* \[chan receive\]` ,
1401
- `main\.Syncthing5795\.func2 .* \[chan receive\]` ),
1474
+ `main\.Syncthing5795\.func2 .* \[chan receive\]` ,
1475
+ ),
1402
1476
}
1403
1477
1404
1478
// Combine all test cases into a single list.
0 commit comments