1 # connect gdb to Valgrind gdbserver: 2 target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-nlcontrolc 3 echo vgdb launched process attached\n 4 monitor v.set vgdb-error 999999 5 # 6 # 7 # simulate control-c in a few seconds 8 shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-nlcontrolc 1 grep main nlcontrolc.stderr.out 9 # 10 continue 11 # 12 # Here, all tasks should be blocked in a loooonnnng select, all in WaitSys 13 info threads 14 # We will unblock them by changing their timeout argument 15 # To avoid going into the frame where the timeval arg is, 16 # it has been defined as global variables, as the nr 17 # of calls on the stack differs between 32bits and 64bits, 18 # and/or between OS. 19 # ensure select finishes in a few milliseconds max: 20 p t[0].tv_sec = 0 21 p t[1].tv_sec = 0 22 p t[2].tv_sec = 0 23 p t[3].tv_sec = 0 24 # 25 # We will change the burning parameters in a few seconds 26 shell ./simulate_control_c --vgdb-prefix=./vgdb-prefix-nlcontrolc 1 grep changed nlcontrolc.stdoutB.out 27 # 28 echo changed burning parameters\n 29 continue 30 # 31 # Threads are burning cpu now 32 # We would like to test info threads here, but which thread are Runnable or Yielding 33 # is unpredictable. 34 # info threads 35 p burn = 0 36 p loops = 0 37 p report_finished = 0 38 continue 39 # and the process should stop very quickly now 40 quit 41