Use of function pointers causes CkCallback errors in some ASLR environments
For example, running
examples/charm++/wave2d across two or more hosts on AArch64 results in:
Mismatched callback details: reducers (CkReduction::sum_int, CkReduction::sum_int); callback types (CkCallback::call1Fn, CkCallback::call1Fn)
If this error check is disabled, a segfault results, because messages containing callbacks of type
callCFn include raw function pointers which are not guaranteed to be the same across hosts.
The proposed solution is to provide an interface through which users register any function pointers they will use in Callbacks, and the runtime registers them in tables. The index to that table becomes the global ID through which the function pointer is looked up.
A shorter term goal would be to detect these errors at runtime and output a message about disabling ASLR if possible.