Scheduler heteroprio with tests/sched_policies/workerids
Steps to reproduce
@bramas here a problem with the scheduler heteroprio
with the branch master configured with --enable-debug --enable-verbose
STARPU_NCUDA=0 STARPU_NOPENCL=0 STARPU_NCPUS=2 STARPU_SCHED=heteroprio libtool --mode=execute gdb ./tests/sched_policies/workerids
Obtained behavior
not fully reproductible, but here what may happen
workerids: /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:1611: deinitialize_heteroprio_policy: Assertion `0 && "hp->nb_prefetched_tasks_per_arch_index[arch_index] == 0"' failed.
the hp->nb_prefetched_tasks_per_arch_index[arch_index] is -1, and it was modified while running the application as follows
$ STARPU_NCUDA=0 STARPU_NOPENCL=0 STARPU_NCPUS=2 STARPU_SCHED=heteroprio libtool --mode=execute gdb ./tests/sched_policies/workerids
(gdb) break heteroprio.c:1416
(gdb) r
1416 memset(hp, 0, sizeof(*hp));
(gdb) p hp->nb_prefetched_tasks_per_arch_index[0]
$1 = 0
(gdb) p &hp->nb_prefetched_tasks_per_arch_index[0]
$2 = (unsigned int *) 0x7fffd03e1e80
(gdb) watch *(unsigned int *) 0x7fffd03e1e80
Hardware watchpoint 2: *(unsigned int *) 0x7fffd03e1e80
(gdb) c
Continuing.
[starpu][starpu_heteroprio_set_mapping_hp] Adding arch 0 to bucket 0
...
Old value = 0
New value = 1
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3632
3632 hp->total_tasks_in_buckets -= 1;
(gdb)
Continuing.
Old value = 1
New value = 2
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3632
3632 hp->total_tasks_in_buckets -= 1;
(gdb)
Continuing.
Old value = 2
New value = 1
0x00007ffff7d3331c in pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3657
3657 hp->nb_prefetched_tasks_per_arch_index[worker->arch_index] -= 1;
(gdb)
Continuing.
Old value = 1
New value = 0
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3711
3711 starpu_worker_unlock(victim);
(gdb)
Continuing.
Old value = 0
New value = 1
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3632
3632 hp->total_tasks_in_buckets -= 1;
(gdb)
Old value = 1
New value = 0
0x00007ffff7d3331c in pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3657
3657 hp->nb_prefetched_tasks_per_arch_index[worker->arch_index] -= 1;
(gdb)
Continuing.
Old value = 0
New value = 1
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3632
3632 hp->total_tasks_in_buckets -= 1;
(gdb)
Old value = 1
New value = 0
0x00007ffff7d3331c in pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3657
3657 hp->nb_prefetched_tasks_per_arch_index[worker->arch_index] -= 1;
(gdb)
Old value = 0
New value = 1
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3632
3632 hp->total_tasks_in_buckets -= 1;
(gdb)
Old value = 1
New value = 0
0x00007ffff7d3331c in pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3657
3657 hp->nb_prefetched_tasks_per_arch_index[worker->arch_index] -= 1;
(gdb)
Old value = 0
New value = 1
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3632
3632 hp->total_tasks_in_buckets -= 1;
(gdb)
Old value = 1
New value = 0
0x00007ffff7d3331c in pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3657
3657 hp->nb_prefetched_tasks_per_arch_index[worker->arch_index] -= 1;
(gdb)
Old value = 0
New value = 1
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3632
3632 hp->total_tasks_in_buckets -= 1;
(gdb)
Old value = 1
New value = 0
0x00007ffff7d3331c in pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3657
3657 hp->nb_prefetched_tasks_per_arch_index[worker->arch_index] -= 1;
(gdb)
Old value = 0
New value = 1
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3632
3632 hp->total_tasks_in_buckets -= 1;
(gdb)
Old value = 1
New value = 0
0x00007ffff7d3331c in pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3657
3657 hp->nb_prefetched_tasks_per_arch_index[worker->arch_index] -= 1;
(gdb)
Old value = 0
New value = 1
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3632
3632 hp->total_tasks_in_buckets -= 1;
(gdb)
Old value = 1
New value = 0
0x00007ffff7d3331c in pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3657
3657 hp->nb_prefetched_tasks_per_arch_index[worker->arch_index] -= 1;
(gdb)
Old value = 0
New value = 4294967295
0x00007ffff7d3331c in pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3657
3657 hp->nb_prefetched_tasks_per_arch_index[worker->arch_index] -= 1;
(gdb)
Old value = 4294967295
New value = 0
pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3632
3632 hp->total_tasks_in_buckets -= 1;
(gdb)
Old value = 0
New value = 4294967295
0x00007ffff7d3331c in pop_task_heteroprio_policy (sched_ctx_id=0) at /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:3657
3657 hp->nb_prefetched_tasks_per_arch_index[worker->arch_index] -= 1;
(gdb)
/mnt/scratch/nfurmento/starpu/build/master/tests/sched_policies/.libs/workerids(+0x11c1)[0x5555555551c1]
workerids: /home/nfurmento/softs/starpu/starpu/master/src/sched_policies/heteroprio.c:1611: deinitialize_heteroprio_policy: Assertion `0 && "hp->nb_prefetched_tasks_per_arch_index[arch_index] == 0"' failed.
Thread 1 "workerids" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffed95d000 (LWP 1048809)]
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
44 ./nptl/pthread_kill.c: No such file or directory.
(gdb)