@mhoemmen @crtrott @fnrizzi
If an algorithm is called with execution policy that has identical mapping (i.e. execpolicy_mapper returns same type as it gets) - like kokkos_exec<ExecSpace> - but implementation (or that particular overload) is missing, the dispatcher enters infinite recursion. It results in SEGFAULT crash in Debug builds or hangs in Release builds (e.g. see the hanging tests cancelled after 25m).
This happens because is_custom_<ALG>_avail checks mistake the dispatcher routine for requested custom implementation (as - with id policy mapping - their function signatures are identical).
@mhoemmen @crtrott @fnrizzi
If an algorithm is called with execution policy that has identical mapping (i.e.
execpolicy_mapperreturns same type as it gets) - likekokkos_exec<ExecSpace>- but implementation (or that particular overload) is missing, the dispatcher enters infinite recursion. It results in SEGFAULT crash inDebugbuilds or hangs inReleasebuilds (e.g. see the hanging tests cancelled after 25m).This happens because
is_custom_<ALG>_availchecks mistake the dispatcher routine for requested custom implementation (as - with id policy mapping - their function signatures are identical).