- Timestamp:
- Sep 4, 2020, 2:00:53 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum, stuck-waitfor-destruct
- Children:
- 7a80113
- Parents:
- 5a1c9ef (diff), 2801829 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- tests
- Files:
-
- 5 added
- 7 edited
-
.expect/alloc-ERROR.txt (modified) (3 diffs)
-
.expect/alloc.txt (modified) (1 diff)
-
.expect/alloc.txt.old (added)
-
.expect/alloc2.txt (added)
-
.expect/malloc.txt (added)
-
alloc2.cfa (modified) (21 diffs)
-
concurrent/examples/boundedBufferEXT.cfa (modified) (2 diffs)
-
concurrent/futures/.expect/basic.txt (added)
-
concurrent/futures/basic.cfa (added)
-
errors/.expect/completeType.x86.txt (modified) (4 diffs)
-
malloc.cfa (modified) (8 diffs)
-
test.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
tests/.expect/alloc-ERROR.txt
r5a1c9ef r1c507eb 1 alloc.cfa:36 2:1 error: No reasonable alternatives for expression Applying untyped:1 alloc.cfa:361:1 error: No reasonable alternatives for expression Applying untyped: 2 2 Name: ?=? 3 3 ...to: … … 16 16 Name: stp 17 17 18 with resolved type:19 unsigned long int20 18 21 19 22 20 23 alloc.cfa:36 3:1 error: No reasonable alternatives for expression Applying untyped:21 alloc.cfa:362:1 error: No reasonable alternatives for expression Applying untyped: 24 22 Name: ?=? 25 23 ...to: … … 30 28 Name: stp 31 29 constant expression (10 10: signed int) 32 with resolved type:33 signed int34 30 35 31 36 alloc.cfa:36 4:1 error: No reasonable alternatives for expression Applying untyped:32 alloc.cfa:363:1 error: No reasonable alternatives for expression Applying untyped: 37 33 Name: ?=? 38 34 ...to: -
tests/.expect/alloc.txt
r5a1c9ef r1c507eb 14 14 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 0xdededede 15 15 CFA array alloc, fill 0xef 16 0x efefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef16 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 17 17 CFA array alloc, fill from array 18 0x efefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef, 0xefefefef 0xefefefef,18 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 0xdeadbeef 0xdeadbeef, 19 19 20 20 C realloc 21 0x efefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef21 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 22 22 CFA realloc 23 0x efefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0xefefefef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x101010123 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0xdeadbeef 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 0x1010101 24 24 25 25 CFA realloc array alloc -
tests/alloc2.cfa
r5a1c9ef r1c507eb 1 /*2 some tests are commented-out because of resize/realloc bug from 0p. They should be uncommented after that bug is resolved.3 */4 5 1 #include <malloc.h> // malloc_usable_size 6 2 #include <stdint.h> // uintptr_t … … 20 16 if (!passed) { 21 17 printf("failed test %3d: %4lu %4lu but got %4lu ( %3lu ) %4lu\n", tests_total, size, align, malloc_size(ip), malloc_usable_size(ip), malloc_alignment(ip)); 22 // if (last_failed != tests_total) { 23 tests_failed += 1; 24 // last_failed = tests_total; 25 // } 18 tests_failed += 1; 26 19 } 27 20 } … … 34 27 if (!passed) { 35 28 printf("failed test %3d: fill C\n", tests_total); 36 // if (last_failed != tests_total) { 37 tests_failed += 1; 38 // last_failed = tests_total; 39 // } 29 tests_failed += 1; 40 30 } 41 31 } … … 48 38 if (!passed) { 49 39 printf("failed test %3d: fill int\n", tests_total); 50 // if (last_failed != tests_total) { 51 tests_failed += 1; 52 // last_failed = tests_total; 53 // } 40 tests_failed += 1; 54 41 } 55 42 } … … 60 47 if (!passed) { 61 48 printf("failed test %3d: fill int A\n", tests_total); 62 // if (last_failed != tests_total) { 63 tests_failed += 1; 64 // last_failed = tests_total; 65 // } 49 tests_failed += 1; 66 50 } 67 51 } … … 74 58 if (!passed) { 75 59 printf("failed test %3d: fill T1\n", tests_total); 76 // if (last_failed != tests_total) { 77 tests_failed += 1; 78 // last_failed = tests_total; 79 // } 60 tests_failed += 1; 80 61 } 81 62 } … … 86 67 if (!passed) { 87 68 printf("failed test %3d: fill T1 A\n", tests_total); 88 // if (last_failed != tests_total) { 89 tests_failed += 1; 90 // last_failed = tests_total; 91 // } 69 tests_failed += 1; 92 70 } 93 71 } … … 100 78 if (!passed) { 101 79 printf("failed test %3d: use int\n", tests_total); 102 // if (last_failed != tests_total) { 103 tests_failed += 1; 104 // last_failed = tests_total; 105 // } 80 tests_failed += 1; 106 81 } 107 82 } … … 114 89 if (!passed) { 115 90 printf("failed test %3d: use T1\n", tests_total); 116 // if (last_failed != tests_total) { 117 tests_failed += 1; 118 // last_failed = tests_total; 119 // } 91 tests_failed += 1; 120 92 } 121 93 } … … 331 303 free(ip); 332 304 333 //ip = alloc( 0, ((int*)0p)`realloc, FillT`fill );334 //est_base(ip, 0, libAlign);335 //free(ip);305 ip = alloc( 0, ((int*)0p)`realloc, FillT`fill ); 306 test_base(ip, 0, libAlign); 307 free(ip); 336 308 337 309 ip = alloc( align`align ); … … 356 328 free(ip); 357 329 358 //ip = alloc( ((int*)0p)`realloc, align`align );359 //est_base(ip, elemSize, align);360 //est_use(ip, elemSize / elemSize);361 //free(ip);330 ip = alloc( ((int*)0p)`realloc, align`align ); 331 test_base(ip, elemSize, align); 332 test_use(ip, elemSize / elemSize); 333 free(ip); 362 334 363 335 dp = alloc( dim ); … … 367 339 free(ip); 368 340 369 //ip = alloc( ((double*)0p)`resize, align`align );370 //est_base(ip, elemSize, align);371 //est_use(ip, elemSize / elemSize);372 //free(ip);341 ip = alloc( ((double*)0p)`resize, align`align ); 342 test_base(ip, elemSize, align); 343 test_use(ip, elemSize / elemSize); 344 free(ip); 373 345 374 346 op = alloc( dim, ((int)0xdeadbeef)`fill); … … 384 356 free(ip); 385 357 386 //ip = alloc( dim, ((int*)0p)`realloc, align`align );387 //est_base(ip, size, align);388 //est_use(ip, size / elemSize);389 //free(ip);390 391 //ip = alloc( 0, ((int*)0p)`realloc, align`align );392 // est_base(ip, 0, align);393 //free(ip);358 ip = alloc( dim, ((int*)0p)`realloc, align`align ); 359 test_base(ip, size, align); 360 test_use(ip, size / elemSize); 361 free(ip); 362 363 ip = alloc( 0, ((int*)0p)`realloc, align`align ); 364 test_base(ip, 0, libAlign); 365 free(ip); 394 366 395 367 ip = alloc( align`align, FillC`fill ); … … 462 434 free(ip); 463 435 464 //ip = alloc( dim, ((int*)0p)`realloc, align`align, FillC`fill );465 //est_base(ip, size, align);466 //est_fill(ip, 0, size, FillC);467 //est_use(ip, size / elemSize);468 //free(ip);469 470 //ip = alloc( 0, ((int*)0p)`realloc, align`align, FillC`fill );471 // est_base(ip, 0, align);472 //free(ip);436 ip = alloc( dim, ((int*)0p)`realloc, align`align, FillC`fill ); 437 test_base(ip, size, align); 438 test_fill(ip, 0, size, FillC); 439 test_use(ip, size / elemSize); 440 free(ip); 441 442 ip = alloc( 0, ((int*)0p)`realloc, align`align, FillC`fill ); 443 test_base(ip, 0, libAlign); 444 free(ip); 473 445 474 446 op = alloc( dim, ((int)0xdeadbeef)`fill ); … … 499 471 free(ip); 500 472 501 //ip = alloc( dim, ((int*)0p)`realloc, align`align, FillT`fill );502 //est_base(ip, size, align);503 //est_fill(ip, 0, dim, FillT);504 //est_use(ip, size / elemSize);505 //free(ip);506 507 //ip = alloc( 0, ((int*)0p)`realloc, align`align, FillT`fill );508 // est_base(ip, 0, align);509 //free(ip);473 ip = alloc( dim, ((int*)0p)`realloc, align`align, FillT`fill ); 474 test_base(ip, size, align); 475 test_fill(ip, 0, dim, FillT); 476 test_use(ip, size / elemSize); 477 free(ip); 478 479 ip = alloc( 0, ((int*)0p)`realloc, align`align, FillT`fill ); 480 test_base(ip, 0, libAlign); 481 free(ip); 510 482 511 483 if (tests_failed == 0) printf("PASSED alloc tests\n\n"); … … 704 676 free(t1p); 705 677 706 // t1p = alloc( (T1*)0p, 0, FillT1);707 // est_base(t1p, 0, tAlign);708 //free(t1p);678 t1p = alloc( 0, ((T1*)0p)`realloc, FillT1`fill ); 679 test_base(t1p, 0, libAlign); 680 free(t1p); 709 681 710 682 t1p = alloc( align`align ); … … 729 701 free(t1p); 730 702 731 //t1p = alloc( ((T1*)0p)`realloc, align`align );732 //est_base(t1p, elemSize, align);733 //est_use(t1p, elemSize / elemSize);734 //free(t1p);703 t1p = alloc( ((T1*)0p)`realloc, align`align ); 704 test_base(t1p, elemSize, align); 705 test_use(t1p, elemSize / elemSize); 706 free(t1p); 735 707 736 708 dp = alloc( dim ); … … 740 712 free(t1p); 741 713 742 //t1p = alloc( ((double*)0p)`resize, align`align );743 //est_base(t1p, elemSize, align);744 //est_use(t1p, elemSize / elemSize);745 //free(t1p);714 t1p = alloc( ((double*)0p)`resize, align`align ); 715 test_base(t1p, elemSize, align); 716 test_use(t1p, elemSize / elemSize); 717 free(t1p); 746 718 747 719 t1op = alloc( dim, ((T1){0xdeadbeef})`fill ); … … 757 729 free(t1p); 758 730 759 //t1p = alloc( dim, ((T1*)0p)`realloc, align`align );760 //est_base(t1p, size, align);761 //est_use(t1p, size / elemSize);762 //free(t1p);763 764 //t1p = alloc( 0, ((T1*)0p)`realloc, align`align );765 // est_base(t1p, 0, align);766 //free(t1p);731 t1p = alloc( dim, ((T1*)0p)`realloc, align`align ); 732 test_base(t1p, size, align); 733 test_use(t1p, size / elemSize); 734 free(t1p); 735 736 t1p = alloc( 0, ((T1*)0p)`realloc, align`align ); 737 test_base(t1p, 0, libAlign); 738 free(t1p); 767 739 768 740 t1p = alloc( align`align, FillC`fill ); … … 835 807 free(t1p); 836 808 837 //t1p = alloc( dim, ((T1*)0p)`realloc, align`align, FillC`fill );838 //est_base(t1p, size, align);839 //est_fill(t1p, 0, size, FillC);840 //est_use(t1p, size / elemSize);841 //free(t1p);842 843 //t1p = alloc( 0, ((T1*)0p)`realloc, align`align, FillC`fill );844 // est_base(t1p, 0, align);845 //free(t1p);809 t1p = alloc( dim, ((T1*)0p)`realloc, align`align, FillC`fill ); 810 test_base(t1p, size, align); 811 test_fill(t1p, 0, size, FillC); 812 test_use(t1p, size / elemSize); 813 free(t1p); 814 815 t1p = alloc( 0, ((T1*)0p)`realloc, align`align, FillC`fill ); 816 test_base(t1p, 0, libAlign); 817 free(t1p); 846 818 847 819 t1op = alloc( dim, ((T1){0xdeadbeef})`fill); … … 872 844 free(t1p); 873 845 874 // t1p = alloc( dim, ((T1*)0p)`realloc, align`aling, FillT1`fill );875 //est_base(t1p, size, align);876 //est_fill(t1p, 0, dim, FillT1);877 //est_use(t1p, size / elemSize);878 //free(t1p);879 880 //t1p = alloc( 0, ((T1*)0p)`realloc, align`align, FillT1`fill );881 // est_base(t1p, 0, align);882 //free(t1p);846 t1p = alloc( dim, ((T1*)0p)`realloc, align`align, FillT1`fill ); 847 test_base(t1p, size, align); 848 test_fill(t1p, 0, dim, FillT1); 849 test_use(t1p, size / elemSize); 850 free(t1p); 851 852 t1p = alloc( 0, ((T1*)0p)`realloc, align`align, FillT1`fill ); 853 test_base(t1p, 0, libAlign); 854 free(t1p); 883 855 884 856 if (tests_failed == 0) printf("PASSED alloc tests (aligned struct)\n\n"); -
tests/concurrent/examples/boundedBufferEXT.cfa
r5a1c9ef r1c507eb 1 1 // 2 2 // Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo 3 // 3 // 4 4 // The contents of this file are covered under the licence agreement in the 5 5 // file "LICENCE" distributed with Cforall. … … 87 87 } 88 88 89 enum { Prods = 4, Cons = 5 }; 90 Producer * prods[Prods]; 91 Consumer * cons[Cons]; 92 89 93 int main() { 90 94 Buffer(int) buffer; 91 enum { Prods = 4, Cons = 5 };92 Producer * prods[Prods];93 Consumer * cons[Cons];94 95 int sums[Cons]; 95 96 int i; -
tests/errors/.expect/completeType.x86.txt
r5a1c9ef r1c507eb 6 6 Name: x 7 7 8 ... to: nothing 9 with resolved type: 10 void Alternatives are: 8 ... to: nothing Alternatives are: 11 9 Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of: 12 10 Application of … … 22 20 23 21 24 with resolved type:25 pointer to forall26 _89_4_DT: data type27 function28 ... with parameters29 intrinsic pointer to instance of type _89_4_DT (not function type)30 ... returning31 _retval__operator_deref: reference to instance of type _89_4_DT (not function type)32 ... with attributes:33 Attribute with name: unused34 35 36 22 ... to arguments 37 23 Variable Expression: x: pointer to instance of struct A with body 0 38 with resolved type:39 pointer to instance of struct A with body 040 24 41 with resolved type:42 reference to instance of struct A with body 043 25 ... to: nothing 44 with resolved type:45 void46 26 (types: 47 27 void … … 63 43 64 44 65 with resolved type:66 pointer to forall67 _89_4_DT: data type68 function69 ... with parameters70 intrinsic pointer to instance of type _89_4_DT (not function type)71 ... returning72 _retval__operator_deref: reference to instance of type _89_4_DT (not function type)73 ... with attributes:74 Attribute with name: unused75 76 77 45 ... to arguments 78 46 Variable Expression: x: pointer to instance of struct B with body 1 79 with resolved type:80 pointer to instance of struct B with body 181 47 82 with resolved type:83 reference to instance of struct B with body 184 48 ... to: nothing 85 with resolved type:86 void87 49 (types: 88 50 void … … 159 121 ... returning nothing 160 122 161 with resolved type:162 pointer to forall163 _108_0_T: sized data type164 ... with assertions165 ?=?: pointer to function166 ... with parameters167 reference to instance of type _108_0_T (not function type)168 instance of type _108_0_T (not function type)169 ... returning170 _retval__operator_assign: instance of type _108_0_T (not function type)171 ... with attributes:172 Attribute with name: unused173 174 175 ?{}: pointer to function176 ... with parameters177 reference to instance of type _108_0_T (not function type)178 ... returning nothing179 180 ?{}: pointer to function181 ... with parameters182 reference to instance of type _108_0_T (not function type)183 instance of type _108_0_T (not function type)184 ... returning nothing185 186 ^?{}: pointer to function187 ... with parameters188 reference to instance of type _108_0_T (not function type)189 ... returning nothing190 191 192 function193 ... with parameters194 pointer to instance of type _108_0_T (not function type)195 ... returning nothing196 197 123 ... to arguments 198 124 Variable Expression: z: pointer to instance of type T (not function type) 199 with resolved type:200 pointer to instance of type T (not function type)201 125 202 with resolved type:203 void204 126 (types: 205 127 void -
tests/malloc.cfa
r5a1c9ef r1c507eb 252 252 253 253 ip = (int *) (void *) malloc( size ); 254 ip = (int *) (void *) resize( (void *) ip, libAlign, size / 2 ); 255 test_base(ip, size / 2, libAlign); 256 test_use(ip); 257 free(ip); 258 259 ip = (int *) (void *) aligned_alloc( align, size ); 260 ip = (int *) (void *) resize( (void *) ip, align, size / 2 ); 261 test_base(ip, size / 2, align); 262 test_use(ip); 263 free(ip); 264 265 ip = (int *) (void *) malloc( size ); 254 266 ip = (int *) (void *) resize( (void *) ip, align, size / 4 ); 255 267 test_base(ip, size / 4, align); … … 270 282 ip = (int *) (void *) resize( 0p, align, size ); 271 283 test_base(ip, size, align); 284 test_use(ip); 285 free(ip); 286 287 ip = (int *) (void *) calloc( dim, elemSize ); 288 ip = (int *) (void *) realloc( (void *) ip, libAlign, size / 2 ); 289 test_base(ip, size / 2, libAlign); 290 test_fill(ip, 0, size / 2, '\0'); 291 test_use(ip); 292 free(ip); 293 294 ip = (int *) (void *) cmemalign( align, dim, elemSize ); 295 ip = (int *) (void *) realloc( (void *) ip, align, size / 2 ); 296 test_base(ip, size / 2, align); 297 test_fill(ip, 0, size / 2, '\0'); 272 298 test_use(ip); 273 299 free(ip); … … 348 374 free(ip); 349 375 350 ip = resize( NULL, size );351 test_base(ip, size, libAlign); 352 test_use(ip); 353 free(ip); 354 355 ip = resize( 0p, size );376 ip = resize( (int*)0p, size ); 377 test_base(ip, size, libAlign); 378 test_use(ip); 379 free(ip); 380 381 ip = resize( (int*)0p, size ); 356 382 test_base(ip, size, libAlign); 357 383 test_use(ip); … … 378 404 free(ip); 379 405 380 ip = realloc( NULL, size );406 ip = realloc( (int*)0p, size ); 381 407 test_base(ip, size , libAlign); 382 408 test_use(ip); 383 409 free(ip); 384 410 385 ip = realloc( 0p, size );411 ip = realloc( (int*)0p, size ); 386 412 test_base(ip, size, libAlign); 387 413 test_use(ip); … … 437 463 else printf("failed CFA malloc tests : %d/%d\n\n", tests_failed, tests_total); 438 464 439 // testing CFA malloc 465 // testing CFA malloc with aligned struct 440 466 441 467 elemSize = sizeof(T1); … … 488 514 free(tp); 489 515 490 tp = resize( NULL, size );516 tp = resize( (T1*)0p, size ); 491 517 test_base(tp, size, tAlign ); 492 518 test_use(tp); 493 519 free(tp); 494 520 495 tp = resize( 0p, size );521 tp = resize( (T1*)0p, size ); 496 522 test_base(tp, size, tAlign ); 497 523 test_use(tp); … … 518 544 free(tp); 519 545 520 tp = realloc( NULL, size );546 tp = realloc( (T1*)0p, size ); 521 547 test_base(tp, size , tAlign ); 522 548 test_use(tp); 523 549 free(tp); 524 550 525 tp = realloc( 0p, size );551 tp = realloc( (T1*)0p, size ); 526 552 test_base(tp, size, tAlign ); 527 553 test_use(tp); … … 559 585 free(tp); 560 586 561 (int) posix_memalign( ( int**) &tp, align );587 (int) posix_memalign( (T1 **) &tp, align ); 562 588 test_base(tp, elemSize, align); 563 589 test_use(tp); -
tests/test.py
r5a1c9ef r1c507eb 116 116 parser.add_argument('--arch', help='Test for specific architecture', type=comma_separated(str), default=None) 117 117 parser.add_argument('--continue', help='When multiple specifications are passed (debug/install/arch), sets whether or not to continue if the last specification failed', type=yes_no, default='yes', dest='continue_') 118 parser.add_argument('--timeout', help='Maximum duration in seconds after a single test is considered to have timed out', type=int, default= 60)118 parser.add_argument('--timeout', help='Maximum duration in seconds after a single test is considered to have timed out', type=int, default=120) 119 119 parser.add_argument('--global-timeout', help='Maximum cumulative duration in seconds after the ALL tests are considered to have timed out', type=int, default=7200) 120 120 parser.add_argument('--timeout-with-gdb', help='Instead of killing the command when it times out, orphan it and print process id to allow gdb to attach', type=yes_no, default="no")
Note:
See TracChangeset
for help on using the changeset viewer.