[Openmcl-devel] RPi arm failures in locking and threading

Robert Munyer 2420506348 at munyer.com
Tue May 23 15:00:31 PDT 2023

On 28 May 2022, jetmonk wrote:

> A test case is here:   https://github.com/jetmonk/openmcl-thread-test

Your use of "taskset" isn't right.  You don't need "sudo", and you do need
the "-a" option when you use it on a CCL instance that's already running.
Alternatively, you can pin a CCL instance to a single core _before_ it
runs, by starting it with a command like "taskset 2 ccl".

On my pine64 device, running CCL 1.12.1 on Debian arm64 "testing",
your THREADTEST2 crashes if I run CCL the normal way, but completes
successfully if I run CCL on a single core via "taskset 2 ccl".

> [...]

> Also, this all happens because this is compiled with #-futex, yet the
> RPi seems to support futexes natively, if I understand it correctly.
> Would these issues happen for all CPUs where #-futex is used, or just
> ARM32?  Does it happen for ARM64 as well? (which I don' have).

I think the futex code is disabled on all platforms.  Log excerpts:

 2013-01-28 We don't want to use futexes (at least not instead of spinlocks.)
 2013-01-28 No futexes on LinuxARM, either.
 2014-11-27 Don't use futexes on Android, either.

Does anyone know why this was done?  My (possibly naive) expectation
is that using futexes would be a good way to let some of the difficult
platform-specific detail work be done by OS developers instead of by
CCL developers.

P.S. I'd expect Apple's M1 processor to have this same issue, so, if
the CCL-on-M1 effort succeeds, I'd expect this bug to become trivial.

More information about the Openmcl-devel mailing list